Skip to content

20 — Critical path (program order + per-plugin paths)

This is how to sequence programming, not a calendar. Build in plugin order so nothing is written against missing contracts. Each plugin below has its own mini critical path; finish that plugin’s exit gate before dependents treat it as real.

Anchors: FS §21 phases, Architecture Map GFP enable order, 02-gfp-cookbook.md, 02b-plugin-dependencies.md, 18-phase-checklist.md, inventory/HAVE-NEED.md.
How-to chapters: Full game 25-howto-program-full-game.md · Demo 26-howto-program-demo.md.

Kanban board (ch. 21): interactive page tracker board — projects Full game + Demo; add/edit cards, tasks, subtasks; columns include In review. See 21-module-kanban.md.

Critical path Gantt: Gantt — Full game spine · Demo spine. Relative sequence (not calendar dates); linked from each Kanban project toolbar.

Demo product lock (ch. 22): Full multiplayer sandboxes (Ladder first, then Regular MP); all gun families/archetypes in with art marked; trees/monetary out — 22-demo.md.
Cinematic Benchmark (ch. 28): Entitled UE showcase + Motion Matching + Benchmark ingest — parallel product, not Ladder exit — 28-cinematic-benchmark.md.

  1. Walk the master plugin order top → bottom.
  2. Inside the current plugin, walk its A → E steps.
  3. Do not start a dependent plugin’s gameplay code until the dependency’s Exit gate is checked.
  4. Parallel tracks are marked — only those may run beside the critical spine.
flowchart TB
  Host[0_Lyra_host_uproject]
  ADDON[1_ADDON_SKG_glue]
  Core[2_TFACore]
  Money[3_MonetaryPlatform]
  FE[4_TFAFrontend]
  OV[5_TFAOmniVisor]
  Combat[6_TFACombat_spine]
  Melee[6b_TFAMelee]
  Sing[6c_TFASingularity]
  Weap[7_TFAWeapons]
  Mod[7b_TFAModular_opt]
  CharI[8_TFACharacterI]
  Eco[9_TFAEconomy_adapter]
  Prog[10_TFAProgression]
  Craft[11_TFACrafting]
  Vis[12_TFAVision]
  World[13_TFAWorld]
  Maps[14_TFAMaps]
  Online[15_TFAOnline]
  Host --> ADDON --> Core
  Core --> Money
  Core --> FE
  Core --> OV
  Core --> Combat
  Combat --> Melee
  Combat --> Sing
  Combat --> Weap
  Weap --> Mod
  Combat --> CharI
  Money --> Eco
  CharI --> Eco
  CharI --> Prog
  Prog --> Craft
  OV --> Vis
  Core --> World
  World --> Maps
  FE --> Online
  Combat --> Online
  World --> Online
# Plugin / module FS phase Blocked on Parallel OK with
0 Lyra host + .uproject hygiene P0 — Docker DS ops
1 ADDON (+ SKG registered) P0 0 AimAssist already on
2 TFACore P0 1 —
3 MonetaryPlatform (portable) P4b prep 2 (identity interfaces) Can advance after Core while Combat starts
4 TFAFrontend (Plugify boot GUI) P0 2 MonetaryPlatform
5 TFAOmniVisor (Plugify HUD) P1 2, 4 (layout chrome) —
6 TFACombat spine (camera/stance/vitality) P1–P2 2, 5 (HUD readouts help) MonetaryPlatform
6b TFAMelee (Plugify) P2 6 Singularity (message-coupled)
6c TFASingularity (Plugify Flow+climax) P2 6 Melee / Weapons (via messages)
7 TFAWeapons (Plugify guns) P3 6 —
7b TFAModular (optional Plugify split) P3+ 7 —
8 TFACharacterI P4 6 MonetaryPlatform finish
9 TFAEconomy (adapter only) P4b 3, 8 —
10 TFAProgression P5 8 —
11 TFACrafting P6 8, 10 —
12 TFAVision P7 5 World content design
13 TFAWorld P7–P8 2, 5 (locator) Vision
14 TFAMaps P8 13 —
15 TFAOnline P9–P9b 4, 6, 13 Trust after social spine

Hard rules

  • Never put economy / inventory / combat GAS / OmniVisor into ADDON.
  • Never fork MonetaryPlatform ledgers into TFA* gameplay modules.
  • Cadence lock (FS-GUN-007) before “gunfeel done.”
  • TBD-* → data rows, not silent C++ defaults.
  • Plugify: Melee · Singularity · Weapons · OmniVisor · Frontend are separate GFPs — Experience enables/replaces; no sibling #include (02-gfp-cookbook.md).

Each plugin: A Scaffold → B Contracts → C Authority spine → D Minimum slice → E Exit gate.

Step Work
A Keep Lyra_5p8.uproject as host; document Engine 5.8
B Persist plugin enable list (ADDON, SKG, AimAssist, later TFA* + MonetaryPlatform)
C Solo vs Online realm pools (FE); EOS identity hooks available
D Boot to a known map; client ↔ Docker DS still connects
E Clean clone enables the same plugins without “local only” DLLs
Step Work
A GFP Active at boot; ADDONRuntime; SKG in .uproject
B ATerraFirmaCharacter subclass only — no inventory/HUD/economy
C SKG components attach; movement prediction still server-sim for custom modes
D Hero BP + Roll/Slide/WallRun playable on L_TestMap (Have today)
E Character is a valid Lyra pawn host for later TFA components; ADDON stays glue
Step Work
A GFP Active at boot; Runtime module
B Gameplay Tag roots; message structs; IMonetaryHost / shared interfaces; pawn data refs
C Message Router conventions; no upward deps
D Empty experience can enable Core; tags cook
E Every other TFA GFP may depend on Core only downward
Step Work
A Standalone .uplugin (not inside TFACombat): Runtime + public AntiCheat modules
B Config DA, grant/cash tables (empty OK), ledger types, Marketplace Wallet widget; EntitlementFlags store (CF / Founding Clubs, FS-ECO-012); UAntiCheatSubsystem public headers
C Server mint/spend/convert + entitlement upsert; fail-closed; host identity via IMonetaryHost; AntiCheat signal ingest + economy fraud + case-store hooks (worker path only)
D Smoke in a minimal map: mint Credits and call AntiCheat signal ingest without TFA GFPs / TFAEconomy
E Second project can enable plugin + host stub; TFA not required. Host enables platform early so TFACore / Online / Combat workers can submit signals without waiting on #9 TFAEconomy

Detail: 14-economy-ledgers.md. AntiCheat is part of this plugin; cheap combat hit-auth stays in #6 / #7.

Step Work
A GFP Experience-enabled
B CommonUI flows: intro, mode, create/select, Command Deck shell
C Realm pool write on create (FS-SES / FE)
D Create Character with Order→Faction, no subclass at create
E Enter-world handoff to gameplay experience works
Step Work
A GFP + widget map from FS-HUD
B Always-on vs contextual slots; ammo never bag; chat OV widgets
C HUD is presentation; no power authority
D Three bars + stance/weapon chrome + GUI locator seat (FE30 data later)
E Combat/Weapons can bind readouts without owning UI
Step Work
A GFP; depends Core (+ OmniVisor messages)
B Camera director, loadout/stance, vitality, ASC combat grants
C Hybrid hit auth (FS-ARCH-013); GE damage pipeline order
D Melee Drive + gun stance + vitality bars vs dummies
E Flow/Singularity hooks exist; Weapons/Character I may attach
Step Work
A GFP registered + experience-enabled (Have: scaffold/CSV)
B Cook UDA_TFA_GunFrames; parts DA; Firehand Bus API
C Cadence immutable from parts (FS-GUN-006/007); server damage from validated hits
D One family × two frames, distinct cadence, placeholder meshes
E AC-GUN cadence test green; SKG adaptors wrapped, not forked
Step Work
A GFP + UTFAInventoryComponent + W_TFA_CharacterI
B 15 slots, bags, Inspect, Customizable dock, tree tabs
C Inventory mutations server-only
D Equip/unequip + Inspect on a test item; no ammo tiles
E Crafting/Progression/Economy adapter have a UI host
Step Work
A Thin GFP; enables MonetaryPlatform
B Map FS-ECO play grants; I chips CREDITS·BTUCOIN; Marketplace routes; CF / Founding Club entitlement apply (FS-ECO-012)
C No local ledger math — call platform only
D Play grant → Credits; Online task → BTUCOIN mint 51/49 path
E Vendors spend Credits; Marketplace uses LUMENAR only; CF flags never grant Combat power
Step Work
A GFP; tree DAs
B Level/XP/stats; Combat/Tentacles/Ordnance; Customizable→Ultimates
C Grants via ASC; Apex Invoke fail-closed (FS-PRG-009)
D Level-up grants a point; one tree node activates
E Crafting may gate on progression tags
Step Work
A GFP + Crafting subsystem
B Frame/Blueprint identity; Refit/Rewrite/Bore; Forge/OV18
C Station-only; server mutators
D Salvage → typed Frame; fake Refit while bFakeModular
E Unique/Apex SetID cook rules enforced
Step Work
A GFP + UTFAVisionComponent
B Seven modes, one active; PP/stencil
C Unlock/relevancy server-gated (TBD-028 as data)
D Toggle two modes in PIE
E OmniVisor vision chrome bound
Step Work
A GFP + Objective subsystem
B Mission / sector / POI DAs; Online tasks dual-list
C Marker authority; Solo vs Online delivery split
D One mission flag + GUI locator target
E Maps content can author against stable APIs
Step Work
A Content-only GFP/experiences
B Earth hub + Part 1 slice layouts
C n/a (content)
D Playable hub → mission entry
E Online instance maps reference World markers
Step Work
A GFP on EOS sessions
B Fireteam/clan/friends; Match Results/History; Career; Trust
C Ladder normalization; report/ghost/ban studio rules
D 2-player session + live results freeze
E Trust + Discord pager path (P9b) after social spine

Suggested parallel tracks (do not break the spine)

Section titled “Suggested parallel tracks (do not break the spine)”
Track May run beside Must not skip
Art: gun family SKs / reticles After Weapons contracts (B) Cadence validator
Monetization legal/ops Beside MonetaryPlatform Ledger authority design
Docker / DS ops Beside host Plugin registration
GDD content fill (affixes, uniques) Anytime as data Cooking types from FS §20 first

Exit criteria for “Year 1 programmable spine”

Section titled “Exit criteria for “Year 1 programmable spine””

Critical path is green when:

  1. Core + ADDON + Frontend boot Solo create → enter world.
  2. Combat + OmniVisor + one Weapons family cadence-locked.
  3. Character I equip loop + MonetaryPlatform smoke + TFAEconomy adapter grant.
  4. One World mission + locator; Online 2p session optional stretch.

Until then, treat later plugins as design-only or scaffold-only, not feature-complete.