Unit Components

Created on 21st April 2022

  • Units should have modular extendable behaviour (aka components):
  • Global Systems:
    • Renderer: Renders the object to the screen, based on global/local lighting and a material.
    • RagdollPhysics: Simulates physics bodies (ragdolls) in the GameWorld.
    • ControlGroups: Create groups of units and add previously grouped units to selection.
    • GameWorld: Represents the GameWorld as a 3D space with objects usually being aligned to the terrain.
    • NavMesh: Represents the nav mesh, in which multiple agents move along paths at the same time.
Component         Affected Systems        Description
========================================================================================================================
Model             - Renderer              - Adds model map (key-value pairs) with at least one entry 
                  - RagdollPhysics        3D or 2.5D representation in world
                                          optional ragdoll model which gets used after death of a unit
------------------------------------------------------------------------------------------------------------------------
Transform         - GameWorld             Adds position, rotation and scale (X/Y/Z each) in game world (aka stage)
------------------------------------------------------------------------------------------------------------------------
Pathfinder        - NavMesh               Adds a pathing collider (a movable pathing collider should always be circular)
------------------------------------------------------------------------------------------------------------------------
Commander         - PathFinder (move)     - Makes objects receive orders like "move", "attack" or "build"
                  - Attacker (attack)     - Enables order chaining
                  - Builder (build)       - Communicates only with other components to formulate orders
                  - Harvester (harvest)
                  - AbilityManager (any)
------------------------------------------------------------------------------------------------------------------------
Selector          - Selection             - Adds a selector collider to make objects hoverable and clickable; 
                  - ControlGroups         - Makes units selectable (add and remove from Selection)
------------------------------------------------------------------------------------------------------------------------
Mover             - PathFinder            - Enables pathfinding, movement, speed, rate of turn, drag, acceleration, 
                                            decceleration
                                          - Ideally this also simulates complex movement like moving with turn radius
------------------------------------------------------------------------------------------------------------------------
Attacker                                  Enables attacking other units with a health or mana manager
------------------------------------------------------------------------------------------------------------------------
HealthManager                             Adds a hitable collider (hitable area)
------------------------------------------------------------------------------------------------------------------------
ManaManager:      
------------------------------------------------------------------------------------------------------------------------
AbilityManager:   
------------------------------------------------------------------------------------------------------------------------
UpgradeManager:   
------------------------------------------------------------------------------------------------------------------------
LinkageManager:   Links units together, e.g. trains (each train segment is a "sub unit")
------------------------------------------------------------------------------------------------------------------------
Transporter:      
------------------------------------------------------------------------------------------------------------------------
HeroManager:      
------------------------------------------------------------------------------------------------------------------------
Spawner:          Trainer?
------------------------------------------------------------------------------------------------------------------------
Builder:          
------------------------------------------------------------------------------------------------------------------------
Harvester:
------------------------------------------------------------------------------------------------------------------------
Trader:           
------------------------------------------------------------------------------------------------------------------------
Morpher:          
------------------------------------------------------------------------------------------------------------------------
ItemManager:      
------------------------------------------------------------------------------------------------------------------------
InventoryManager: 
------------------------------------------------------------------------------------------------------------------------
CostManager:      Adds constant costs to unit
------------------------------------------------------------------------------------------------------------------------
InfoManager:      Adds meta information like name, id, 
------------------------------------------------------------------------------------------------------------------------
SoundManager: