What is articy:access?Once you have created game data like characters, dialogues or locations using articy:draft you might ask yourselves: "How do I get this data into my game?". The easiest and fastest way is to use articy:access a middleware solution similar to other game middlewares like a sound system, a physics system or a 3D graphics engine.
articy:access consists of two parts:
A customizable export function that...
- is integrated in the articy:draft export dialog
- can be triggered fully automatically e.g. by a build server via the articy:draft API
- allows to define which objects of the articy:draft project are added to the export
- allows to define which properties of a certain object type are added to the export
- allows to define the runtime type of every articy:draft property
- allows to define packages of objects so that your game can load each package individually
- allows to generate source code for every articy:draft object type and template (again with a custom selection of properties inside) so that they can be directly used as data container classes within your game
A middleware library that...
- is written in C++
- provides a wrapper for C, C# and the Mono dialect of the Unity 3D engine
- can be linked dynamically or statically to your game
- can be told by the game to load the export packages
- implicitly handles version issues of the export packages
- takes over memory management of articy objects
- gives full access to the articy objects of the loaded packages without the need for boilerplate code
- offers convenience functions like complex object search or flow traversal
- parses articy:expresso, an expression language used by the designers in articy:draft to control the game state or direct the flow
- allows to write own import/export formats and custom converters to suit the very specific needs of your game
- allows to replace any module of articy:access by your own code (e.g. memory management, logging system, debugging system...)
- is designed to be highly configurable, fast and memory friendly
DocumentationPlease find here the entire documentation of articy:access. In this package you will find:
- ArticyAccess - Package format.pdf: Explains how to write the export definition XML files that are used by articy:draft to create your custom export.
- ArticyAccess - Beginners guide.pdf: An introduction that gives an overview over articy:access and detailed instructions how to setup your project.
- ArticyAccess - Reference.chm: This is the technical reference that describes all methods and classes.
- ArticyDraft API - Query Language.pdf: The articy:draft query language can also be used when working with articy:access. This document tells how to make queries.
- Source code tutorials: Practical examples on how to setup and use articy:access in C++ (and one in C#).
Customizable export: a use caseLet's say you have created three separate trees in the flow of your articy:draft project. One tree that holds conceptual designs of your game mechanics, another that contains the skill tree of your player character and a third tree with all dialogues. The dialogue tree is divided into story chapters 1-10.
Now let's assume that your game mechanics tree is merely used as kind of blueprinting/blackboarding area by your game designers and does not contain any runtime relevant data. The skill tree however is needed during the entire runtime of your game and finally your dialogues are also needed by the running game, but only during the according chapters of the story plot.
This means you probably want to make one export package containing your skill tree data, and 10 export packages each of it carrying the dialogues of one of your story chapters. In this scenario you don't want to make a package out of the game mechancis tree at all.
Now imagine your dialogue fragments have two important text properties, the spoken text and a remark text that is just used as context information for the translators but not used within the game. This means, when adding a dialogue fragment to your export, you expect the spoken text to be part of it while the localization remark should be not.
When having a look at the skills of your player character you might decide to go for an articy:draft object type 'entity' using a template that defines a property 'level'. While in articy:draft this is just a 'number property' the game programmer might want to define that this needs to be an 'unsigned short' within the running game.
All of the different tasks in the above use case are covered by writing a single export definition file and supplying it once to the articy:draft export.