Glossary
Mod
The engine has a concept called "mod"s which are, essentially, a collection of asset and MiniYaml files.
In most cases, OpenRA-based games will have a single "mod." Think of this in the context of the Tiberian Sun you could previously buy that included the Firestorm expansion. That would be a case of multiple "mod"s in a single game.
Note that "mod" is in quotes because you're actually working on games but OpenRA's history is tied to the 1st generation Westwood Studios RTSes (Tiberian Dawn, Red Alert, and Dune 2000) which were modified by players so the term "mod" is used throughout the OpenRA codebase, documentation, etc.
MiniYaml
A custom textual file format used for many things in OpenRA.
These files are what the engine reads to, for example:
- determine which mod(s) are installed
- locate asset files
- determine stats for different unit/building/etc. types
- build the UIs used in-game
Manifest
The mod.yaml
MiniYaml file in the root of each mod.
This file is what declares a directory as a mod, it is required.
Asset
This is a generic term that encompasses image files, audio files, container
files (such as .zip
or .mix
), and basically anything else that isn't
MiniYaml.
Actor
An actor is the entity part of the entity-component-system.
Technically, an actor is a collection of traits.
In the real-world example in chapter 2 you can see the
actor E1
defined with the following traits:
Buildable
Valued
Tooltip
Note that, for example, Queue
(in that same example) is not a trait.
It is a property of the Buildable
trait.
Inherits
technically isn't a trait, it is a MiniYaml mechanism that is
explained in the chapter 2 link above.
TraitInfo
Technically a trait info is the component part of the entity-component-system architecture.
The properties of a TraitInfo can be set in MiniYaml.
Look at the linked actor definition and Valued.cs's
ValuedInfo
class together.
Do you see how ValuedInfo
has a Cost
property that is of type int
?
Now back in the MiniYaml you'll find Cost: 100
.
That node is read by the engine (via the FieldLoader
class, which will be
covered in a future chapter) and the Cost
property of ValuedInfo
is set to
100
.
Trait
Conceptually a trait is simply a characteristic of an actor.
Let's look at Valued.cs, for example, which contains
two class
es:
ValuedInfo
Valued
- A Trait implementation
Technically a trait is the system part of the entity-component-system architecture.
Systems might:
- hold state (ex. "Current HP is 43")
- interact with other systems (ex. "I just got healed, play a healing animation")
Armament
This is another word for "weapon."