Components
There are 2 types of entity components:
- A Quantum entity component is defined in the DSL and dictates behavior of a specific entity in the Quantum simulation - for example
Movement
. - A Unity entity component is inherited from
EntityComponent
and defines behavior of a specific entity in Unity - for exampleEntityComponentMovement
.
From a game designer perspective, an entity prototype is made of a game object with a specific set of EntityComponent
components. Many EntityComponent
components imply the existence of a Quantum component in simulation (EntityComponentAgent
=> Agent
). Though some components are quantum components, this means not all necessarily do.
The FPS Framework supports these variants:
- Run-time only Quantum component: adding/removing the Quantum component is driven by the Quantum simulation. This Quantum component doesn’t have corresponding Unity component counterpart and is usually marked with
[ExcludeFromPrototype]
in DSL. For example:Actor
. - Quantum component with an optional Unity component counterpart: adding the Quantum component can be implied at design-time by adding a Unity component or at runtime from Quantum simulation. For example:
SpawnPoint
-EntityComponentSpawnPoint
. - Quantum component with a required Unity component counterpart: adding a Quantum component is conditional on adding Unity component at design-time; usually there are required properties to be set, the run-time addition of a Quantum component can result in undefined behavior in either Unity or Quantum simulation. For example:
MovingObject
-EntityComponentMovingObject
. - Only Unity component: there is no Quantum component counterpart. This component is just for Unity visualization purposes. For example:
EntityComponentCharacter
.