Skip to content

03 — Pawn composition

What lives on the character, controller, player state, and match state — and which GFP owns each class.

GameState / PlayerState ownership (locked)

Section titled “GameState / PlayerState ownership (locked)”

One GameState class and one PlayerState class. Sibling GFPs write fields / components onto them — they do not ship alternate AGameState / APlayerState subclasses.

Class Owning GFP (shell) Who writes what
ATFAGameMode TFACore Experience / ruleset pick; spawns ATFAGameState
ATFAGameState TFACore Match phase, difficulty, session clock, shared world rules. TFAOnline (Online only): Ladder / RAID / Vault scoreboard snapshot hooks, Match Results freeze payload pointers — extends the same GS, no fork
ATFAPlayerState TFACore PUID / realm pool ID shell. TFAProgression: level, XP, unspent points, trees, Customizable. TFACombat: loadout / stance mirror tags (authoritative combat still on pawn ASC). TFAEconomy: Credits / BTUCOIN / LUMENAR ledgers account-scoped (Credits shared across characters on the PUID / Solo profile); I-bar chips read those ledgers via PS. TFAOnline: EOS identity link, LastMatchRecap

Demo: until TFACore GFPs land, Lyra ALyraGameState / ALyraPlayerState remain host stand-ins — TF fields go on TF subclasses as soon as TFACore ships; do not scatter GameState logic into ADDON.

Class Typical GFP Job
ATFAGameMode / ATFAGameState TFACore (+ Online writers) Ruleset · match phase · difficulty
ATFACharacter / ATerraFirmaCharacter TFACore / ADDON glue Movement, stance, FPP/TPP dual components (same skeletal mesh · OwnerNoSee · TrueFPP bone-hide — FS-CAM-002), GAS avatar
ATFAPlayerController TFACore Enhanced Input, camera requests, UI router
ATFAPlayerState TFACore (+ Progression / Combat / Economy / Online writers) Level, XP, stats, trees, loadout, realm pool
UTFAAbilitySystemComponent TFACombat spine + Progression grants Shared ASC host; Melee/Singularity/Weapons GAs live in sibling Plugify GFPs
UTFALoadoutComponent TFACombat 15 slots + stance machine
UTFAVitalityComponent TFACombat Shield / Armor / Health + Energy
UTFACameraDirector TFACombat Stance-owned perspective
UTFAFirehandBus TFAWeapons Gunfeel / modular gun runtime
UTFAInventoryComponent TFACharacterI Bags / inspect
UTFAVisionComponent TFAVision Seven modes
  • ATerraFirmaCharacter : ALyraCharacter type in ADDON
  • Content hero assets authored: BP_Hero_TerraFirma + pawn/input/ability DAs + parkour GA_Hero_*
  • GameState / PlayerState ownership matrix (above)
  • Empty C++ character body
  • Lyra pawn pipeline still authoritative for most combat (DefaultPawnData_EmptyPawn)
  • AbilitySet / parkour GAs authored — not the live default pawn grant path
  • Lyra GameState / PlayerState stand-ins on host
  • Flesh character with TFA components (owned by correct GFPs, not all in ADDON)
  • Ship ATFAGameState / ATFAPlayerState under TFACore; wire Online / Progression writers
  • Wire experience / Asset Manager DefaultPawnData to TFA hero consistently
  • See 02b-plugin-dependencies.md for deps, hierarchy, conflicts (MASTER)