Skip to content

Demo — Multiplayer Ladder Vertical Slice

Vertical slice · pure Online Ladder · HUD + one-weapon armory · Demo Mod O-key tuner (hideable) · hard-coded specials · Demo kanban

Demo override: the Demo armory does not use modular Receiver × Frame / parts assembly. Demo ships complete one-weapon kits (melee and ranged). Full-game modular ownership above still applies to Year-1+ Full game — not to Demo loadouts or Demo Mod.

This chapter is the design lock for the Demo. It defines what ships in the vertical slice, what is cut, and the Demo project on the module kanban. Programming Bible docs/22-demo.md and the seeded Demo board follow this chapter — they do not invent a second product.

Lock plate. Demo Ladder. HUD + loadout. Demo Mod hideable. Hard-coded specials.

Lock plate. Demo = Ladder vertical slice. HUD + one-weapon armory GUI in. Demo Mod (O-key tuner) hideable for external playtest.

A playable vertical slice of the online competitive loop — enough systems to prove Terra Firma’s combat and Ladder feel without the campaign spine.

  • Boot → Online → Ladder match → fight → freeze Results → ladder update → requeue.
  • OmniVisor HUD in-match (vitality, weapon, Flow, specials chrome) — same grammar as the master OmniVisor chapter, Demo-scoped seats only.
  • Demo GUIs: archetype / loadout pick + fixed one-weapon armory (complete melee + ranged kits from a capped pool — not loot, not modular).
  • All gun families + combat archetypes as systems (missing art marked, not cut).
  • Hard-coded special ability kits per Demo archetype / loadout.
  • Demo Mod kit (team only, hotkey O): weapon list of what the character has + per-variable current value / input + OK — removable or hidden for external playtest.
  • Match Results live + freeze, ladder standing hooks.
  • Host: demo5.8 + Docker DS + EOS / Lyra Online path.
Out of Demo Where it lives
Solo campaign / Part 1 story / Earth hub missions Full game · TFAWorld / storyline
Skill trees UI and final tree designs Full game · Skill Trees chapter + TFAProgression
MonetaryPlatform / TFAEconomy / Marketplace / LUMENAR Full game · Marketplace Economy
Crafting / Forge / full bag loot economy Full game · Crafting / Inventory
Modular weapons / parts / Receiver × Frame assembly Full-game modular armory — Demo uses one-weapon kits only
Character I CREDITS / BTUCOIN chips Full game economy adapter
Demo Mod kit visible to external playtesters Strip / hide before outside-team builds
Full-body Pose Search wiping Lyra upper/lower Linked Layers Forbidden — Demo MM is lower-body only (docs/tutorials/demo-motion-matching-lyra.md)
Regular / casual MP sandbox as a Demo exit requirement Stretch after Ladder exit
Trust P9b / full Career chrome as Demo exit Full game Online stretch

Do not start Monetary, Crafting, or Progression trees for Demo. The Demo loadout GUI is not the full Character I economy surface — it is a capped one-weapon armory + archetype pick (no modular parts).

One composition, one job: prove the Ladder fight loop with real HUD / loadout UX.

  1. Frontend Online path (no Solo campaign create required).
  2. Enter Ladder sandbox experience / map.
  3. Open Demo loadout GUI: pick archetype, then pick weapons from the fixed armory set.
  4. Hard-coded special kit granted for that pick — no tree screen.
  5. (Team builds only) Optionally open Demo Mod to tune aim-assist / gunfeel, then close it.
  6. Fight with OmniVisor HUD + full combat bar.
  7. Match Results live during; freeze at end; ladder update; requeue.

Demo must ship readable play HUD and the loadout surfaces needed to choose a fight kit. These are player-facing and stay in external playtest builds.

  • OmniVisor HUD (in-match): vitality / armor, active weapon + ammo brick readout, stance / Flow, hard-coded specials chrome. Same lock grammar as OmniVisor HUD — no Marketplace chips, no Trust chrome required for Demo exit.
  • Demo loadout GUI: archetype select + weapon seats filled from the fixed one-weapon armory. May be a slim Character I / sandbox widget (W_TFA_DemoLoadout or slim W_TFA_CharacterI) — not Forge, not trees, not CREDITS / BTUCOIN, not modular Refit.
  • Match Results sheet stays as Online Match Results (live + freeze).
  • Esc / pause may expose re-enter loadout only if the sandbox rules allow mid-session rekit — default: loadout before match / between matches, not mid-fight power edits.

Players do not loot a campaign stash. They choose from a capped Demo pool of complete weapons — melee and ranged. No modularity in Demo: each row is one finished weapon (mesh + feel + fire/swing), not Receiver × Frame / parts assembly.

  • Pool size and exact rows are data (DT_TFA_DemoArmory or equivalent). Cap is intentional — not infinite bags.
  • Each row: one complete Demo weapon + which loadout seats it may fill + which archetypes may equip it.
  • Player selects weapons into the loadout seats from that pool only. Swap is server-authoritative.
  • Placeholders / FPS-15 art marks still allowed; systems must be fireable / swingable.
  • This is not Marketplace, not Crafting, not Credits spend, and not the Full-game modular armory pipeline.

Figure OV36. Demo Mod — only kits on this character.

Figure OV36. Demo Mod — equipped doll seats (Weapons · Armor · Jewelry/ES · TBA kits · Lab). Enter → OV37.

Figure OV37. Demo Mod weapon edit. CURRENT + INPUT. Fake Mag and Fake Optic or Counterweight.

Figure OV37. Demo Mod — weapon edit. CURRENT + INPUT per section. Fake Mag / Fake Optic (or Heavy CounterweightBias). Back · OK · Cancel. Mesh never changes.

Figure OV38. OmniVisor ammo after Fake Mag OK.

Figure OV38. Demo play HUD — OmniVisor AMMO reflects Fake Mag / MagSize (e.g. Drum 60 / reserve) after Mod OK. Clip label = MagFamily. Mesh unchanged.

Team iteration only. A simple in-match / sandbox surface to tune gunfeel on the weapons the character already has. External playtests must not see or use it.

  • Open: hotkey O (respects Mod gate). Esc closes. Widget: W_TFA_DemoMod — not Character I, not OmniVisor combat chrome.
  • Categories: Weapons · Armor · Jewelry/ES · Specials/Ordnance/Tentacles ×4 TBA · Lab (Combat economy · Attributes · Encounter / difficulty · Affix totals).
  • 1080p / UE: title · tabs · OK/Back fixed; tab body scrolls (UMG ScrollBox) — never a non-scrolling wall of dials.
  • Quality / name locks: Name always RO; Rare = First+Second Word lexicon; Legendary/Unique/Apex = hand-authored Unique name; affix caps clamped on open/OK.
  • Weapon list: show all weapons the character currently has (Demo loadout / inventory seats — melee + ranged). Select a weapon to edit its variables.
  • Flow: OV36 weapon list → Enter → OV37 changeables for the selected kit (screen space). Esc / Back returns to the list.
  • Variables (OV37): AA four · Bloom / pellets (Spread) · Recoil / Kickback / Jump / Sway · Stability · RangeStat + hip meters · Fake Mag · Fake Optic (or CounterweightBias on Heavy / Heavy Gatling) · GL Sight + arc note. Exact dials: Programming Bible docs/inventory/demo-mod-gunfeel-vars.md. Catalog: docs/inventory/demo-fake-modular-optics-mags.md. No mesh change — mock data only (FS-GUN-012).
  • Per variable: display the current value and a manual input box to type a new value.
  • OK: commits / saves the typed values for the selected weapon (session / PIE override path). Cancel / Esc discards uncommitted edits.
  • Apply authority: server (or trusted host) applies overrides — client never owns damage / cadence / hit auth. Optional “promote to data” remains team-only.

Do not leave Mod chrome on the OmniVisor as a permanent pip. Do not require Mod to complete a Ladder match. Demo weapons are one-weapon kits — Mod tunes the selected kit’s feel vars; it does not unlock modular parts.

Final Combat / Tentacle / Ordnance trees are not Demo. They stay in the Skill Trees chapter and Full-game kanban.

  • Each Demo archetype / loadout row owns a fixed kit: named Ultimate + a small set of skills / tentacle / ordnance grants.
  • Kits are data constants or hard-coded GAS grants on sandbox enter — not a spendable tree UI.
  • Numbers and names may be temporary Demo values.
  • When Full game trees land, Demo kits are replaced by tree grants — do not fork combat GAS for trees inside the Demo path.
  • In Demo: Asymmetric Flow · second meter (= Flow) · full Burst Storm art · Overclocked · Singularity takedown · Melee Drive (no auto-pull) · stance mix.
  • Out of Demo: Final Ult 4×4 trees · campaign-only Flow variants · merging Ultimate into Flow. Approach A–only / placeholder Burst Storm is not the Demo exit.

Parked tutorial: docs/tutorials/melee-drive-guns-singularity.md — resume after Melee Drive foundation.

  • All gun families systems-complete; Rocket / Bow / Heavy may ship on placeholders with FPS-15 / kanban [art].
  • Cadence stays Frame-owned (FS-GUN-006 / 007).
  • Melee + stance + loadout seats required for the sandbox.
  • Aim-assist / gunfeel defaults come from family × archetype data; Demo Mod only overlays while enabled.
  • Cheap hit-auth stays Combat / Weapons. Statistical AntiCheat / economy fraud is Full game — not a Demo exit gate.

Open html/kanban.html?project=demo. Seed is rebuilt from build_pb_kanban.py to match this lock. Cards:

Card Job
Ladder sandbox Primary Demo product — session, combat bar, ladder hooks, exit gate
HUD + Demo GUIs OmniVisor in-match + Demo loadout GUI (stays for external playtest)
Fixed armory set Capped weapon pool → select loadout seats
Demo Mod kit Aim-assist / gunfeel dials per family × archetype — hide/strip for external
Hard-coded specials Fixed kits per archetype; no tree UI
Host → Online spine Host, ADDON, TFACore, Frontend, OmniVisor, Combat (spine), Melee, Singularity, Weapons, Character I (loadout), Maps, Online
Art / content Blocked Rocket / Bow / Heavy / placeholder folder — systems still in Demo
Regular MP (stretch) Optional after Ladder exit
Out of Demo Campaign, trees, monetary, crafting, vision — Full game only

Blocked reason tags ([art], [feat], …) park work — they do not cut families from Demo.

Beyond the Ladder vertical slice and the shared Demo Mod lab, two more sandbox experiences are planned for systems testing:

  • Sandbox B — Per-player item design (TBA). Same Demo Mod feature surface as today’s tuner (equipped doll · Quality/affixes/sockets · gunfeel · Lab economy / attributes / encounter / affix totals), but each player designs their own items in the session (per-pawn / per-PUID session overrides). Still Demo-only; server owns apply; client requests. Not shipping character crafting; not Marketplace.
  • Sandbox C — Fireteam vs AI (TBA). Multiple players on the same team fight AI monsters (not PvP Ladder). Needs encounter AI. Planned stack: Logic Driver Pro for Unreal Engine 5 (behavior / state). Monster level + Difficulty remain area/sandbox-authored when those rows exist (FS-CMP-006 · FS-PRD-005). Bot roster, spawn directors, and win/lose: TBA.

Sandbox A (current) = shared Lab / Mod on the Ladder or systems host for team tuning. B and C do not gate Ladder exit. Full game does not ship these as player-facing product modes.

  1. Demo done (required): 2+ players in Ladder; OmniVisor HUD readable; loadout GUI picks from fixed one-weapon armory; Demo melee + ranged kits fireable (art marked where missing); hard-coded specials fire; Match Results freeze; ladder update path green; Demo Mod off / unreachable in the external-playtest configuration; no campaign / trees / economy required.
  2. Team tuning (internal): Demo Mod (O) lists the character’s weapons, edits aim assist / recoil / bloom / related vars via current-value + input + OK, and feels them in-match.
  3. Stretch (optional): Regular / casual MP sandbox after (1).

Until (1) is green, treat Full-game-only plugins and Regular MP as design/scaffold only for Demo purposes.

TBD-056 — Flow toughness (no Block). Locked 2026-11-05: Health damage dumps Flow to Tier 1 + 0.5 s stagger. Shield/Armor chips that do not reduce Health do not dump. FS-CMB-004 · singularity Spec.

Builder stack (not product fiction). Firehand Bus = TFA gun brain (UTFAFirehandBus in TFAWeapons): active gun, reticle family, bloom, mag/cadence from Receiver×Frame data, kill/Flow handoff. Now (Demo): live fire / kill credit = ShooterCore / Lyra until Firehand is wired. Later: SKGShooterFramework (SKG) = marketplace FPS runtime (meshes, attachments, ballistics presentation) wrapped by Firehand — keep SKG off until Firehand exists (no dual ShooterCore+SKG fire stacks). Engineering authority: FS FS-GUN-005 · bible docs/11-weapons-firehand-bus.md · docs/22-demo.md guns path. GDD names the player-facing Bus; this note is how the plugins join.