The following list provides the most common terms used in The Machinery.
|The Truth||The Truth holds the authoritative data state of a The Machinery project and allows it to be shared between various systems. In particular, it supports the following features:|
- Objects with properties (bools, ints, floats, strings).
- Buffer properties for holding big chunks of binary data.
- Subobjects (objects of other types belonging to this object).
- References to other objects.
- Sets of subobjects and references.
- Prototypes and inheritance.
- Change notifications.
- Safe multi-threaded access.
- Undo/redo operations (from multiple streams).
More information is available in the documentation.
|Truth Aspect||An "aspect" is an interface (struct of function pointers) identified by a unique identifier. The Truth allows you to associate aspects with object types. This lets you extend The Truth with new functionality.|
|Creation Graph||The Creation Graph system is a node-based way of creating various types of assets and primitives such as images, buffers, draw calls, etc. It can be used by both tech-artists to create shaders but also to setup data processing pipelines. More|
|Creation Graph GPU Nodes||Creation Graphs contain nodes that can execute on both the CPU and GPU. The GPU nodes usually become part of a shader program when the creation graph is compiled. There are nodes that transition data from the GPU and CPU and vice versa.|
|Entity Graph||The Machinery's Visual Scripting Language for game play. More|
|Prototype||A "template" The Truth object from which other The Truth objects can be instantiated, inherting the properties of the prototype. For more information on Prototypes. (Also called Prefabs in other Engines)|
|Properties Tab||Whenever an object gets focused in the asset browser or entity tree, properties of it can be edited from the properties tab.|
|Asset Browser||Shows all assets in your project in an explorer-style fashion. An asset can be thought of as the equivalent of a file in the OS. Some assets such as entities can be dragged and dropped from the asset browser into the scene tab.|
|Graph Tab/View||A tab that can either represent an Entity Graph or a Creation Graph.|
|Entity Tree||Hierarchical view of the Entity currently being edited in the Scene Tab.|
In The Machinery, every entity has a parent except for the root entity of the world.
This Tab Allows the user to quickly reason about and re-organize the hierarchy by adding, removing, expanding and reordering entities.
|Simulation Entry||Provides gameplay to start, stop and update functions to the Simulation. This concept consists of two parts: The Simulation Entry Interface (tm_simulation_entry_i) and the Simulation Entry component. The interface is there to provide the functionality, component assigns the functionality to a specific Entity, so that it runs when that entity is spawned.|
|Engine (ECS)||An engine is an update function that runs on all entities that have certain components. (Jobified)|
|System (ECS)||A system is an update function that runs on the entire entity context.|
|Entity Context||The object that hold the state of all entities. Can be thought of as holding the state of a "world"|
|Entity||A world is built from different entities which in turn can contain child entities and components. The components create the building blocks of each entity and give them their meaning.|
|Components||Provides functionality and data to an Entity. Can be added / removed both from the editor as well as in runtime, during Simulation.|
|DCC Asset||Stands for Digital Content Creation Asset. This is our intermediate data format that contains meshes, materials and images. From these assets the user can extract entities and Creation Graphs that represent the materials and images.|
|Plugin||The Machinery is built around a plugin model. All features, even the built-in ones, are provided through plugins. You can extend The Machinery by writing your own plugins. When The Machinery launches, it loads all the plugins named |
|Plugin assets||A special type of asset that contains the library (executable code) for a plugin. This makes it possible to add compiled plugins without have to copy the DLL into a specific folder, instead you can just drag n drop DLLs into the project. The user will be asked for consent to run the code in the plugin.|
|Project||It is a self-contained directory or database file that holds all the game data used during the development.|