Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OpenRA Engine — Comprehensive Feature Reference

Purpose: Exhaustive catalog of every feature the OpenRA engine provides to modders and game developers. Sourced directly from the OpenRA/OpenRA GitHub repository (C#/.NET). Organized by category for Iron Curtain design reference.


1. Trait System (Actor Component Architecture)

OpenRA’s core architecture uses a trait system — essentially a component-entity model. Every actor (unit, building, prop) is defined by composing traits in YAML. Each trait is a C# class implementing one or more interfaces. Traits attach to actors, players, or the world.

Core Trait Infrastructure

  • TraitsInterfaces — Master file defining all trait interfaces (ITraitInfo, IOccupySpace, IPositionable, IMove, IFacing, IHealth, INotifyCreated, INotifyDamage, INotifyKilled, IWorldLoaded, ITick, IRender, IResolveOrder, IOrderVoice, etc.)
  • ConditionalTrait — Base class enabling traits to be enabled/disabled by conditions
  • PausableConditionalTrait — Conditional trait that can also be paused
  • Target — Represents a target for orders/attacks (actor, terrain position, frozen actor)
  • ActivityUtils — Utilities for the activity (action queue) system
  • LintAttributes — Compile-time validation attributes for trait definitions

General Actor Traits (~130+ traits)

TraitPurpose
HealthHit points (current, max), damage state tracking
ArmorArmor type for damage calculation
MobileMovement capability, speed, locomotor reference
ImmobileCannot move (buildings, props)
SelectableCan be selected by player
IsometricSelectableSelection for isometric maps
InteractableCan be interacted with
TooltipName shown on hover
TooltipDescriptionExtended description text
ValuedCost in credits
VoicedHas voice lines
BuildableCan be produced (cost, time, prerequisites)
EncyclopediaIn-game encyclopedia entry
MapEditorDataData for map editor display
ScriptTagsTags for Lua scripting identification

Combat Traits

TraitPurpose
ArmamentWeapon mount (weapon, cooldown, barrel)
AttackBaseBase attack logic
AttackFollowAttack while following target
AttackFrontalAttack only from front arc
AttackOmniAttack in any direction
AttackTurretedAttack using turret
AttackChargesAttack with charge mechanic
AttackGarrisonedAttack from inside garrison
AutoTargetAutomatic target acquisition
AutoTargetPriorityPriority for auto-targeting
TurretedHas rotatable turret
AmmoPoolAmmunition system
ReloadAmmoPoolAmmo reload behavior
RearmableCan rearm at specific buildings
BlocksProjectilesBlocks projectile passage
JamsMissilesMissile jamming capability
HitShapeCollision shape for hit detection
TargetableCan be targeted by weapons
RevealOnFireReveals when firing

Movement & Positioning

TraitPurpose
MobileGround movement (speed, locomotor)
AircraftAir movement (altitude, VTOL, speed, turn)
AttackAircraftAir-to-ground attack patterns
AttackBomberBombing run behavior
FallsToEarthCrash behavior when killed
BodyOrientationPhysical orientation of actor
QuantizeFacingsFromSequenceSnap facings to sprite frames
WandersRandom wandering movement
AttackMoveAttack-move command support
AttackWanderAttack while wandering
TurnOnIdleTurn to face direction when idle
HuskWreck/corpse behavior

Transport & Cargo

TraitPurpose
CargoCan carry passengers
PassengerCan be carried
CarryallAir transport (pick up & carry)
CarryableCan be picked up by carryall
AutoCarryallAutomatic carryall dispatch
AutoCarryableCan be auto-carried
CarryableHarvesterHarvester carryall integration
ParaDropParadrop passengers
ParachutableCan use parachute
EjectOnDeathEject pilot on destruction
EntersTunnelsCan use tunnel network
TunnelEntranceTunnel entry point

Economy & Harvesting

TraitPurpose
HarvesterResource gathering (capacity, resource type)
StoresResourcesLocal resource storage
StoresPlayerResourcesPlayer-wide resource storage
SeedsResourceCreates resources on map
CashTricklerPeriodic cash generation
AcceptsDeliveredCashReceives cash deliveries
DeliversCashDelivers cash to target
AcceptsDeliveredExperienceReceives experience deliveries
DeliversExperienceDelivers experience to target
GivesBountyAwards cash on kill
GivesCashOnCaptureAwards cash when captured
CustomSellValueOverride sell price

Stealth & Detection

TraitPurpose
CloakInvisibility system
DetectCloakedReveals cloaked units
IgnoresCloakCan target cloaked units
IgnoresDisguiseSees through disguises
AffectsShroudBase for shroud/fog traits
CreatesShroudCreates shroud around actor
RevealsShroudReveals shroud (sight range)
RevealsMapReveals entire map
RevealOnDeathReveals area on death

Capture & Ownership

TraitPurpose
CapturableCan be captured
CapturableProgressBarShows capture progress
CapturableProgressBlinkBlinks during capture
CaptureManagerManages capture state
CaptureProgressBarProgress bar for capturer
CapturesCan capture targets
ProximityCapturableCaptured by proximity
ProximityCaptorCaptures by proximity
RegionProximityCapturableRegion-based proximity capture
TemporaryOwnerManagerTemporary ownership changes
TransformOnCaptureTransform when captured

Destruction & Death

TraitPurpose
KillsSelfSelf-destruct timer
SpawnActorOnDeathSpawn actor when killed
SpawnActorsOnSellSpawn actors when sold
ShakeOnDeathScreen shake on death
ExplosionOnDamageTransitionExplode at damage thresholds
FireWarheadsOnDeathApply warheads on death
FireProjectilesOnDeathFire projectiles on death
FireWarheadsGeneral warhead application
MustBeDestroyedMust be destroyed for victory
OwnerLostActionBehavior when owner loses

Miscellaneous Actor Traits

TraitPurpose
AutoCrusherAutomatically crushes crushable actors
CrushableCan be crushed by vehicles
TransformCrusherOnCrushTransform crusher on crush
DamagedByTerrainTakes terrain damage
ChangesHealthHealth change over time
ChangesTerrainModifies terrain type
DemolishableCan be demolished
DemolitionCan demolish buildings
GuardGuard command support
GuardableCan be guarded
HuntableCan be hunted by AI
InstantlyRepairableCan be instantly repaired
InstantlyRepairsCan instantly repair
MineLand mine
MinelayerCan lay mines
PlugPlugs into pluggable (e.g., bio-reactor)
PluggableAccepts plug actors
ReplaceableCan be replaced by Replacement
ReplacementReplaces a Replaceable actor
RejectsOrdersIgnores player commands
SellableCan be sold
TransformsCan transform into another actor
ThrowsParticleEmits particle effects
CommandBarBlacklistExcluded from command bar
AppearsOnMapPreviewVisible in map preview
RepairableCan be sent for repair
RepairableNearCan be repaired when nearby
RepairsUnitsRepairs nearby units
RepairsBridgesCan repair bridges
UpdatesDerrickCountTracks oil derrick count
CombatDebugOverlayDebug combat visualization
ProducibleWithLevelProduced with veterancy level
RequiresSpecificOwnersOnly specific owners can use

2. Building System

Building Traits

TraitPurpose
BuildingBase building trait (footprint, dimensions)
BuildingInfluenceBuilding cell occupation tracking
BaseBuildingBase expansion flag
BaseProviderProvides base build radius
GivesBuildableAreaEnables building placement nearby
RequiresBuildableAreaRequires buildable area for placement
PrimaryBuildingCan be set as primary
RallyPointProduction rally point
ExitUnit exit points
ReservableLanding pad reservation
RefineryResource delivery point
RepairableBuildingCan be repaired by player
GateOpenable gate

Building Placement

TraitPurpose
ActorPreviewPlaceBuildingPreviewActor preview during placement
FootprintPlaceBuildingPreviewFootprint overlay during placement
SequencePlaceBuildingPreviewSequence-based placement preview
PlaceBuildingVariantsMultiple placement variants
LineBuildLine-building (walls)
LineBuildNodeNode for line-building
MapBuildRadiusControls build radius rules

Bridge System

TraitPurpose
BridgeBridge segment
BridgeHutBridge repair hut
BridgePlaceholderBridge placeholder
BridgeLayerWorld bridge management
GroundLevelBridgeGround-level bridge
LegacyBridgeHutLegacy bridge support
LegacyBridgeLayerLegacy bridge management
ElevatedBridgeLayerElevated bridge system
ElevatedBridgePlaceholderElevated bridge placeholder

Building Transforms

TraitPurpose
TransformsIntoAircraftBuilding → aircraft
TransformsIntoDockClientManagerBuilding → dock client
TransformsIntoEntersTunnelsBuilding → tunnel user
TransformsIntoMobileBuilding → mobile unit
TransformsIntoPassengerBuilding → passenger
TransformsIntoRepairableBuilding → repairable
TransformsIntoTransformsBuilding → transformable

Docking System

TraitPurpose
DockClientBaseBase for dock clients (harvesters, etc.)
DockClientManagerManages dock client behavior
DockHostBuilding that accepts docks (refinery, repair pad)

3. Production System

Production Traits

TraitPurpose
ProductionBase production capability
ProductionQueueStandard production queue (base class, 25KB)
ClassicProductionQueueC&C-style single queue per type
ClassicParallelProductionQueueParallel production (RA2 style)
ParallelProductionQueueModern parallel production
BulkProductionQueueBulk production variant
ProductionQueueFromSelectionQueue from selected factory
ProductionAirdropAir-delivered production
ProductionBulkAirDropBulk airdrop production
ProductionFromMapEdgeUnits arrive from map edge
ProductionParadropParadrop production
FreeActorSpawns free actors
FreeActorWithDeliverySpawns free actors with delivery animation

Production model diversity across mods: Analysis of six major OpenRA community mods (see research/openra-mod-architecture-analysis.md) reveals that production is one of the most varied mechanics across RTS games — even the 13 traits above only cover the C&C family. Community mods demonstrate at least five fundamentally different production models:

ModelModIC Implication
Global sidebar queueRA1, TD (OpenRA core)ClassicProductionQueue — IC’s RA1 default
Tabbed parallel queueRA2, Romanovs-VengeanceClassicParallelProductionQueue — one queue per factory
Per-building on-siteOpenKrush (KKnD)Replaced ProductionQueue entirely with custom SelfConstructing + per-building rally points
Single-unit selectiond2 (Dune II)No queue at all — select building, click one unit, wait
Colony-basedOpenSA (Swarm Assault)Capture colony buildings for production; no construction yard, no sidebar

IC must treat production as a game-module concern, not an engine assumption. The ProductionQueue component is defined by the game module, not the engine core (see 02-ARCHITECTURE.md § “Production Model Diversity”).

Prerequisite System

TraitPurpose
TechTreeTech tree management
ProvidesPrerequisiteBuilding provides prerequisite
ProvidesTechPrerequisiteProvides named tech prerequisite
GrantConditionOnPrerequisiteManagerManager for prerequisite conditions
LobbyPrerequisiteCheckboxLobby toggle for prerequisites

4. Condition System (~34 traits)

The condition system is OpenRA’s primary mechanism for dynamic behavior modification. Conditions are boolean flags that enable/disable conditional traits.

TraitPurpose
ExternalConditionReceives conditions from external sources
GrantConditionAlways grants a condition
GrantConditionOnAttackCondition on attacking
GrantConditionOnBotOwnerCondition when AI-owned
GrantConditionOnClientDockCondition when docked (client)
GrantConditionOnCombatantOwnerCondition when combatant owns
GrantConditionOnDamageStateCondition at damage thresholds
GrantConditionOnDeployCondition when deployed
GrantConditionOnFactionCondition for specific factions
GrantConditionOnHealthCondition at health thresholds
GrantConditionOnHostDockCondition when docked (host)
GrantConditionOnLayerCondition on specific layer
GrantConditionOnLineBuildDirectionCondition by wall direction
GrantConditionOnMinelayingCondition while laying mines
GrantConditionOnMovementCondition while moving
GrantConditionOnPlayerResourcesCondition based on resources
GrantConditionOnPowerStateCondition based on power
GrantConditionOnPrerequisiteCondition when prereq met
GrantConditionOnProductionCondition during production
GrantConditionOnSubterraneanLayerCondition when underground
GrantConditionOnTerrainCondition on terrain type
GrantConditionOnTileSetCondition on tile set
GrantConditionOnTunnelLayerCondition in tunnel
GrantConditionWhileAimingCondition while aiming
GrantChargedConditionOnToggleCharged toggle condition
GrantExternalConditionToCrusherGrant condition to crusher
GrantExternalConditionToProducedGrant condition to produced unit
GrantRandomConditionRandom condition selection
LineBuildSegmentExternalConditionLine build segment condition
ProximityExternalConditionProximity-based condition
SpreadsConditionCondition that spreads to neighbors
ToggleConditionOnOrderToggle condition via order

5. Multiplier System (~20 traits)

Multipliers modify numeric values on actors. All are conditional traits.

MultiplierAffects
DamageMultiplierIncoming damage
FirepowerMultiplierOutgoing damage
SpeedMultiplierMovement speed
RangeMultiplierWeapon range
InaccuracyMultiplierWeapon spread
ReloadDelayMultiplierWeapon reload time
ReloadAmmoDelayMultiplierAmmo reload time
ProductionCostMultiplierBuild cost
ProductionTimeMultiplierBuild time
PowerMultiplierPower consumption/production
RevealsShroudMultiplierSight range
CreatesShroudMultiplierShroud creation range
DetectCloakedMultiplierCloak detection range
CashTricklerMultiplierCash trickle rate
ResourceValueMultiplierResource gather value
GainsExperienceMultiplierXP gain rate
GivesExperienceMultiplierXP given on death
HandicapDamageMultiplierHandicap damage received
HandicapFirepowerMultiplierHandicap firepower
HandicapProductionTimeMultiplierHandicap build time