02 — GFP cookbook
Intent
Section titled “Intent”Where to put new C++, dependency direction, and ADDON boundaries.
Anchors
Section titled “Anchors”- FS §2.1 Module map, §2.5 GFP map — FS-ARCH-010, FS-ARCH-011
- Architecture Map §2–3
- Inventory: inventory/gfp-status.md
- Live deps / class hierarchy / conflicts MASTER: 02b-plugin-dependencies.md
- Build order: 20-critical-path.md
Ownership rules
Section titled “Ownership rules”- Logical names (
TFACombat, …) pack into Game Feature Plugins — do not forkLyraGameinto UBT modules named TFACombat. - Dependencies point downward only (TFACore at root).
- UI GFPs talk to gameplay via Gameplay Message Router + TFACore interfaces — not by including Combat headers.
- FS-ARCH-011: Do not rip vendor/host. SKG glue stays in ADDON; new systems get their own GFP.
- Boot Active: ADDON + TFACore. Everything else Experience-enabled.
5b. Absorb reference systems into TF GFPs: Carbon (ParkourSystem/Character) and Phys Shield (BallisticShield) are pattern sources — copy needed code into TFACombat (ADDON only as temporary glue). Never ship them as their own
.uplugin/ never depend on those repos at cook time. - Monetary platform is separate: Credits / BTUCOIN / LUMENAR live in a portable
MonetaryPlatformplugin.TFAEconomyis only the TFA adapter GFP. Other games integrate the platform without any TFA* GFP. See 14-economy-ledgers.md and inventory/monetary-platform.md. - Plugify (MASTER): Every major product surface is its own GFP so it can be disabled, replaced, or shipped alone — same idea as Lyra enabling ShooterCore vs TopDownArena per Experience. See § Plugify lock below.
Plugify lock — swappable systems (Lyra-style)
Section titled “Plugify lock — swappable systems (Lyra-style)”Intent: Every major product surface is its own plug — pull / replace / omit without rewriting the host or siblings. This table is the complete catalog (no “etc.” left implied).
Complete Plugify catalog (MASTER)
Section titled “Complete Plugify catalog (MASTER)”| # | Surface | Plugin / GFP | Kind | Replace / omit by… |
|---|---|---|---|---|
| 0 | Lyra host (Experience, CommonUI shell, EOS hooks) | LyraGame | Host (not a TFA GFP) | Do not fork — Experiences compose plugs |
| 1 | SKG / AimAssist / temporary parkour host glue | ADDON | Boot Active GFP | Keep thin; Carbon/Phys Shield absorb into TFACombat — never dump whole systems here |
| 2 | Shared tags · messages · interfaces | TFACore | Boot Active GFP | Replace only with same contracts — everything depends on it |
| 3 | Credits · BTUCOIN · LUMENAR · Marketplace Wallet · AntiCheat case store · CF EntitlementFlags | MonetaryPlatform | Portable .uplugin (not a GFP) |
Ship / swap the whole money product; other games can use it without TFA* |
| 4 | Boot / menus / Command Deck chrome | TFAFrontend | GFP · Plugify | New Frontend GFP + Experience widgets |
| 5 | In-game HUD / OmniVisor | TFAOmniVisor | GFP · Plugify | New HUD GFP; same message contracts |
| 6 | Camera · stance · vitality · shared combat ASC host | TFACombat (thin spine) | GFP · Plugify | New spine GFP; same Core interfaces |
| 7 | Melee Drive | TFAMelee | GFP · Plugify | New melee GFP; publishes hit/kill messages |
| 8 | Kinetic Flow + Singularity climax | TFASingularity | GFP · Plugify | New climax GFP; subscribes to kill/Flow messages |
| 9 | Guns / Firehand / Demo Mod host | TFAWeapons | GFP · Plugify | New weapons GFP |
| 10 | Mag / optic / parts dials (Refit product) | TFAModular | GFP · Plugify (optional) | Split from Weapons when modular is a product; Demo may keep dials under Weapons |
| 11 | Character I · bags · Inspect · Invoke | TFACharacterI | GFP · Plugify | New I GFP |
| 12 | XP · trees · 4×4 · tentacles · ordnance grants | TFAProgression | GFP · Plugify | New progression GFP |
| 13 | Crafting / Forge recipes | TFACrafting | GFP · Plugify | New crafting GFP |
| 14 | TFA money adapter (grants, I chips, marketplace routes, CF apply) | TFAEconomy | GFP · Plugify | New adapter; never forks ledgers — enables MonetaryPlatform |
| 15 | Report / Trust overlay / ghost chrome | TFATrust | GFP · Plugify | New Trust UI; cases live in MonetaryPlatform AntiCheat |
| 16 | Seven vision modes | TFAVision | GFP · Plugify | New vision GFP |
| 17 | Objectives · missions · map drawers · encounters | TFAWorld | GFP · Plugify | New world GFP |
| 18 | AI substrate (Logic Driver Squad/Agent · difficulty profiles) | TFAAI | GFP · Plugify | New AI GFP; no second damage pipeline |
| 19 | EOS Connect · Discord · fireteam / clan / invites · Match Results / Ladder social | TFAOnline | GFP · Plugify | New Online GFP |
| 20 | Content-only experiences / maps (ShooterMaps pattern) | TFAMaps | GFP · Plugify (content) | New maps GFP; Experiences list GameFeaturesToEnable |
| 21 | All TF input mapping: IMC_TFA_* contexts, input config, and the game feature action that attaches them additively |
TFAInput | GFP · Plugify | New input GFP; keep additive — never edit Lyra’s IMCs |
Built so far (2026-11-14): TFACore (contracts only: the FS 2.3 TFA.* tag taxonomy and the ITFAStanceInput interface), TFACombat (first slice: UTFALoadoutComponent and the stance rules), TFAInput (IMC_TFA_Default, input config, hold / double-tap dials) and ADDON (movement, camera and stance-key abilities). TFAInput’s _UI / _Map / _Chat contexts are not built. Cross-plugin calls go through TFACore contracts, for example the stance-key ability in ADDON finds ITFAStanceInput on the pawn and never includes TFACombat.
Not a separate GFP: Demo Mod UI lives under TFAWeapons + CommonUI. Ultimate (Shiv meter) stays Progression/Combat ASC grants — separate from Singularity (FS-CMB-006).
Hard rules
- No sibling
#include.TFAMeleedoes not includeTFAWeaponsheaders. Cross-talk = Gameplay Message Router + TFACore interfaces / tags only (Lyra pattern). - Experience is the composition root.
GameFeaturesToEnablelists which plugs are in this build (Demo can omit Frontend polish / Crafting / Vision / Monetary; a lab can omit Singularity). - Kill / Flow credit is a message, not a hard call. Melee and guns emit
TFA.Combat.KillConfirmed(name TBD in tags); TFASingularity (and HUD) subscribe. Swapping melee does not recompile Singularity. - ADDON stays glue — never the place you dump a whole system “temporarily.”
- Monetary ledgers stay in MonetaryPlatform —
TFAEconomyadapts only; Combat/Weapons never own money. - Replace test: if removing the GFP (or MonetaryPlatform) from the Experience/enable set leaves the rest playable (degraded but compiling), the boundary is correct.
- Tick off by default (Lyra 5.8). Match
ALyraCharacter:bCanEverTick = false. Prefer timers / events / GAS / messages. Gameplay mutations requireHasAuthority()(or server validate). Never put damage / Flow / economy on client Tick. See FS-ARCH-014.
Plugins/MonetaryPlatform ← portable money + AntiCheat (not a GFP)TFACore ← Boot Active · contracts only ├─ TFACombat (spine) ← camera · stance · vitality · ASC host │ ├─ TFAMelee ← Melee Drive │ └─ TFASingularity ← Flow + Singularity climax ├─ TFAWeapons ← guns / Firehand / Demo Mod │ └─ TFAModular (optional) ← mag/optic/parts ├─ TFAOmniVisor ← in-game GUI ├─ TFAFrontend ← boot / Deck GUI │ └─ TFAOnline → TFATrust ├─ TFAVision ├─ TFACharacterI → TFAEconomy → MonetaryPlatform ├─ TFAProgression → TFACrafting └─ TFAWorld → TFAMaps · TFAAIADDON = SKG glue only (Boot Active)Demo enable example: ADDON + TFACore + TFACombat + TFAMelee + TFASingularity + TFAWeapons + TFAOmniVisor — omit Frontend polish / Crafting / Vision / Monetary / Progression / World.
“New HUD” example: disable TFAOmniVisor, enable TFAOmniVisor_Lab that implements the same Core HUD message contracts.
“New money” example: swap or omit MonetaryPlatform + TFAEconomy — rest of game still boots (no I-wallet chips / marketplace).
Target GFP / plugin tree
Section titled “Target GFP / plugin tree”Same as Plugify lock diagram above (authoritative).
- ADDON GFP created on live Demo host (Active, ExplicitlyLoaded in uplugin; still need
.uprojectpersist) - Doc lock: monetary stack = separate portable platform (ch. 14)
- Stock ShooterCore / ShooterMaps / ShooterExplorer / TopDownArena
- ADDON folder on
5.8_terra_demo
- Remake TFACore · TFACombat spine · TFAMelee · TFASingularity · TFAWeapons · TFAOmniVisor on this host (see inventory/gfp-status.md)
- Create remaining Plugify GFPs as phases hit them: Frontend · CharacterI · Progression · Crafting · Economy · Trust · Vision · World · AI · Online · Maps · optional Modular
- Scaffold MonetaryPlatform portable plugin + TFAEconomy adapter GFP
- Register ADDON / remade TFA* / SKG / MonetaryPlatform in uproject
- TFACore first (tags, message structs, interfaces)
AC hooks
Section titled “AC hooks”- AC-ARCH-001..003 — GFP ownership / vendor boundary / threads (see FS)