Architecture
Layers
| Type | Responsibility |
|---|---|
| USurvivalSettings | Local developer configuration, defaults, intervals and maps |
| USurvivalSubSystem | Per-Game-Instance infrastructure, world/timers, component getters and update delegates |
| UCrossAffectManager | Cached mapping tables, same-Pawn destination routing through interfaces |
| Four survival components | Numerical values, state tags, affect consumption and replication |
| Four component interfaces | BlueprintNativeEvent query/mutation contracts |
| Project/Blueprint layer | RPCs, gameplay permissions, widgets, movement, environment, GAS and persistence |
Game Instance subsystem → pulse delegates → activated components
↑ ↓ state changes
world timers source whitelist
↓
CrossAffectManager → destination affects
Each component owns its stat family. Armor belongs to Health, Water to Food and Fitness to Stamina; they are not separate native components. The subsystem does not hold player stat snapshots. It searches the supplied Pawn using FindComponentByClass, returning the first matching component.
The manager uses concrete component getters and then interface Execute_ calls. It therefore is not a registry that discovers arbitrary interface-only stats. Objects/settings/managers are local; numerical values and state tag containers replicate through component owners.
The design separates reads and writes, but BlueprintReadWrite public properties and incompletely guarded mutation methods remain exposed. Use the intended server interface layer. See Replication, Cross-Affects and API Reference.