Terra Firma: Awakening — Front-End UI/UX Spec
Status: Locked for design and CommonUI remap
Scope: Boot → Main Menu → Play → Character → In-world chrome (Tab map, Esc, Command Deck)
Does not replace: OmniVisor play HUD (vol. 15) or Character screen I (hotkey I)
Solo and Online are separate realms. Characters never transfer. Same story, different delivery (raids vs solo endgame dungeons).
Locked product decisions
Section titled “Locked product decisions”| Decision | Lock |
|---|---|
| Menu art | Black field. Shiv mark glows on intro, burns on the menu. No live 3D atrium. |
| Menu chrome | Lyra centered glass pillar. TFA ember / hard-light tokens, not Lyra ice-blue. |
| Play / Quit labels | Short PLAY and QUIT on buttons. Full title lives in the logo. |
| Clan | Lives under Command Deck Social. Online only. Solo shows Social locked: “Social is Online only.” |
| Social | Command Deck tab. Panes: Fireteam (max 8 + instance list), Clan (full roster + clan invites), Friends (EOS list), Discord (link). |
| Fireteam privacy | Settings → Social (same Options screen). Accept fireteam invites from and Who can join my fireteam. Online only. Example HAVOC: Friends or clan on both. |
| Fireteam | Session group. Cap 8. Distinct from clan. RAID/Vault matchmaking still uses activity size 2 / 4 / 8. Story coop instance still caps at 4. |
| Discord identity | Discord is an EOS Connect external credential (EOS_ECT_DISCORD_ACCESS_TOKEN) linked after EOS login (Social pane). Same Online PUID. Not a second game account. Not a Screen A login button. |
| Discord invites | One Send on the invite sheet. Game server issues the token and lands it in-game. Same Send also delivers on Discord if sender and target are linked. Discord miss does not fail the invite. |
| Companion Discord bot | Separate Discord application from invite delivery. Reads Online profiles / Ladder / career via Companion Player API (FS-API-*). Does not Send invites. Does not own Social → Discord Link. |
| Companion profile privacy | Settings → Social (same Options screen as fireteam privacy). Per-component Public / Friends / Private for Career, Equipment, Collections, Triumphs, Modes (default Public). Match History default Friends. Ladder standing public when ranked. Bags / wallets / Case / Trust never exposed. Online only. |
| Marketplace | Command Deck tab. Storefront requires EOS login. Buys unlock locally and work on Solo with no live session. Listings Online only. Cosmetics / looks only, plus Secure Locker tab QoL SKUs (FS-ECO-014 — storage capacity, never power). Seasons never vault. Prices in LUMENAR. Wallet: cash → BTUCOIN mint 51/49; convert BTUCOIN → LUMENAR to spend. Daily / weekly / hard objectives mint BTUCOIN at 51/49 — Online only, tracked on Local Map, World Map, and in the world. |
| Credits | In-world vendor currency, account-shared (same pool on every character). Character I title-bar chip (W_TFA_IWallet), left of BTUCOIN, never overlapping tabs. Play: stashes, kills, bosses, side missions. Does not buy Marketplace. |
| BTUCOIN | Player crypto (was Currency). 49% of every mint. Play: daily / weekly / hard (TBD-039 fiat (V), mint (M = V / P)) — Online only. Convert → LUMENAR on Marketplace Wallet at same settlement (P). Never marketplace tender. |
| LUMENAR | Soft marketplace currency — not crypto. Storefront + listings spend. Acquired only by BTUCOIN convert (BTUCOIN from cash mint and/or play mint). Not on the I title bar. |
| Create Character | Name + Sex (Male / Female) + Appearance (premade MetaHuman faces / grooms / facial dials / hair+skin color / tattoos — no body-size dials) + Order → Faction. Starts as the main class. Subclasses unlock in roster order as you level. Race is Human (Year 1), not a picker. Full-game mesh: Mutable (FS-APP-*); not Demo. |
| Reset Campaign | Character Select only. Wipes story/location. Keeps identity, gear, Credits, Collections, Xenobiological Codex, hangar, clan, marketplace unlocks. |
| Campaign complete (Online) | Stay on that character. Endgame hub: open world, repeatables, Raids, special coop. No forced NG+. |
| In-game chat | OmniVisor Online. Enter opens compose. Tab while chat is up cycles Fireteam → Clan → Match (matchmade activity only) → General → Proximity. Whisper is not Tab — open from a name / Whisper action. Enter sends. Shift+Enter is a new line. There is a message limit; the number is TBA. Proximity radius meters TBA. Discord is not this chat. Not a Deck tab. GDD: In-game Chat. |
| Tab map | Contextual: on planet opens Local Map (Missions & Objects hub); in orbit opens World Map. Tab toggles Local ↔ World. Set as Primary drives the OmniVisor GUI locator (quiet world pip + heading tape + tracker blip). Tap Tab / M pings name + meters for 4 s. While chat compose is focused, Tab is channel cycle only — no map, no ping. Fast travel is TBD. Daily / weekly / hard objectives are Online only and live in the Missions & Objects / Operations drawer on both maps, plus the world. Filter Tasks on both. |
| Online Esc | Overlay only. World does not pause. |
| Online chrome | Command Deck, Character I, Tab maps, Esc, Settings, and Deck children are overlay only. Online never pauses — including hubs and the Crafting Page station. Solo pauses the local world when any of those overlays is up. |
| Remember password | Allowed only if username is also saved. Show a warning. |
| Stay signed in | After a successful Online login, persist the EOS session on this device. Next Online path silent-logs in. Discord: persist refresh via the Discord SDK, never the short-lived AccessToken. Log Out clears. |
| Endgame card badge | ENDGAME on the character card when campaign is complete. |
Visual language
Section titled “Visual language”- Boot / menu world: full black.
- Brand mark (locked): the painted Shiv — inward horns, three side spikes, needle chin, inner mask lines. FE30 (primary play-HUD still) shows it fire / red. Intro = glow charge on this mark. Menu = this same mark on fire. Logo only. No gem housing, no hex cage, no metal ring, no all-seeing-eye triangle. Canonical painted asset:
tfa_gdd_html/figures/tf_shiv_logo_fire.png(fire / FE30).tf_logo.svgis a thin wrapper that embeds that PNG — do not use the old outline paths. Leave the mark as PNG (alpha stamp) — not JPEG. Triangle-eye stays GDD volume chrome only. - Type: uppercase button labels, high contrast, geometric. Logo: TERRA FIRMA with smaller AWAKENING.
- In-game overlays: same type and color tokens as the front-end.
- Color tokens: ember
#E85A1A, gold story#E8B44A, vault violet#8B6CFF, raid crimson#C42A2A, steel#8A9AA8.
Master flow
Section titled “Master flow”Happy path (FE0): Intro → Menu → Mode → EOS if Online (or silent persist) → Character → World.
Full UX map (every screen and back edge) is FE11. Auth flow is FE31. Social / invite flow is FE32.
flowchart TD
subgraph bootLane [1_BootFrontEnd]
firstRun[FirstRun_Legal]
intro[Intro_ShivGlow]
main[MainMenu]
options[Options_LyraParity]
bench[Benchmark]
credits[Credits]
quit[QuitConfirm]
firstRun --> intro
intro -->|Esc_Enter_Space_or_end| main
main --> options
main --> bench
main --> credits
main --> quit
options --> main
bench --> main
credits --> main
quit -->|Cancel| main
end
subgraph playLane [2_PlayAccount]
mode[ModeSelect]
solo[Solo_LocalPool]
online[Online]
silent[Silent_StaySignedIn]
eos[EOS_Login]
discordOAuth[Discord_OAuth]
tfa[TFA_Code]
logged[EOS_Session]
main -->|PLAY| mode
mode --> solo
mode --> online
online --> silent
silent -->|persist_valid| logged
silent -->|miss| eos
eos -->|Continue_Discord| discordOAuth
discordOAuth --> logged
eos -->|TFA_on| tfa
eos -->|no_TFA| logged
tfa --> logged
end
subgraph charLane [3_CharacterSharedWidget]
chars[CharacterSelect]
empty[EmptyPool_CreateOnly]
create[CreateCharacter]
reset[ResetCampaign]
delete[DeleteCharacter]
loadNew[Load_Tutorial]
loadResume[Load_LastSpot]
loadEnd[Load_EndgameHub]
solo --> chars
logged --> chars
chars --> empty
chars --> create
chars --> reset
chars --> delete
create --> chars
reset --> chars
delete --> chars
chars -->|Play_new| loadNew
chars -->|Play_existing| loadResume
chars -->|Play_campaignDone_Online| loadEnd
end
subgraph worldLane [4_InWorld]
world[InWorld_OmniVisor]
mapLocal[Tab_LocalMap_Missions_Objects]
mapWorld[Tab_WorldMap_Global]
pause[Esc_SessionMenu]
deck[CommandDeck]
inv[Inventory_CharacterI]
hangar[Hangar]
look[Appearance]
coll[Collections]
journey[Journey]
market[Marketplace]
social[Social]
fireteam[Fireteam_8]
clanPane[Clan]
discord[Discord_Link]
invite[InviteSheet]
settings[Settings_sameOptions]
loadNew --> world
loadResume --> world
loadEnd --> world
world -->|Tab_onPlanet| mapLocal
world -->|Tab_inOrbit| mapWorld
world -->|Tap_Tab_or_M| world
world -->|Enter_Online| chatCompose
chatCompose[Chat_Compose]
chatCompose -->|Tab_channel| chatCompose
chatCompose -->|Enter_send| world
chatCompose -->|Esc| world
mapLocal <-->|Tab_or_Button| mapWorld
mapLocal -->|Set_Primary| world
mapLocal -->|Esc_or_Close| world
mapWorld -->|Esc_or_Close| world
world -->|Esc| pause
pause -->|Resume| world
pause -->|Options| settings
pause -->|CharacterSelect| chars
pause -->|MainMenu| main
pause -->|Quit| quit
pause -->|LogOut_Online| main
world --> deck
deck --> inv
deck --> hangar
deck --> look
deck --> coll
deck --> journey
deck --> market
deck --> social
deck --> settings
social --> fireteam
social --> clanPane
social --> friends[Friends_EOS]
social --> discord
fireteam --> invite
clanPane --> invite
settings --> social
invite -->|Send| world
settings --> world
inv -->|I_or_Esc| world
end
Lane rules: Character Select is one widget with the pool injected (Solo or Online). Options and Settings are one screen. Reset Campaign is not on Esc. Social (and Clan under it) is locked on Solo. Marketplace storefront needs EOS; an EOS store login does not move a Solo character into the Online pool. Buys then work locally. Listings stay Online-only. I is Character screen I, not the session menu.
1. Boot and intro
Section titled “1. Boot and intro”- Application window opens after engine load.
- Black field. Intro song starts. The Terra Firma logo fades in and charges a glow (drawn mark only — no gem housing, not a cut-out).
- Skip: Esc, Enter, or Space. Fade audio + logo, then Main Menu.
- If not skipped: hold through the glow peak / song sting, then auto-advance.
- First launch only, before intro: legal / EULA / privacy, language if shipped, graphics auto-detect.
2. Main Menu
Section titled “2. Main Menu”Background: black + looping burning Terra Firma logo (mark only, no gem, not a still).
Center pillar, top to bottom:
- Game logo
- PLAY
- OPTIONS
- BENCHMARK
- CREDITS
- QUIT
- Small engine / build mark
Peripheral chrome
- Bottom-left: machine / build / OFFLINE until EOS login
- After Online login: account display name + EOS status
- Dev/network warnings stay a debug overlay
3. Options (Lyra parity)
Section titled “3. Options (Lyra parity)”Same screen from Main Menu and from in-game Settings. Apply / Back / Restore defaults.
- Video: window mode, resolution, VSync, frame-rate cap, quality preset, resolution scale, GI, shadows, AA, view distance, textures, effects, reflections, post, foliage, shading, brightness/gamma
- Audio: master, music, SFX, dialogue (voice-chat later for Online)
- Mouse and keyboard: sensitivity, invert, full keybind list (default Toggle Sprint on Left Shift; Hold Sprint unbound — FS-INP-006)
- Gamepad: look sensitivity, invert, dead zone, vibration, bindings (default LS click / L3 Toggle Sprint — FS-INP-006)
- Controls (shared): Auto Sprint boolean, OFF by default. When ON, forward move past threshold auto-enters sprint when legal (FS-INP-006). Same Options asset from Main Menu and Esc Settings.
- Accessibility: colorblind mode + strength
- Social (Online): fireteam privacy. Accept fireteam invites from (Anyone / Friends or clan / Friends / Clan / Nobody). Who can join my fireteam (Invite only / Friends or clan / Friends / Clan / Anyone). Companion profile (for Discord bots / BenchMark / third-party apps — FS-API-005): Career, Equipment, Collections, Triumphs, Modes — each Public / Friends / Private (default Public). Match History — Friends / Private / Public (default Friends). Ladder standing stays public when ranked. Solo: tab visible, rows locked. Friends are EOS Friends on this PUID — Discord is not this list.
Later TFA additions (not required for remap): FOV, HUD scale, subtitle size, language, camera shake, combat-text, safe-area, ultrawide.
4. Benchmark
Section titled “4. Benchmark”- Disclaimer: timed scene, may hitch, results are local.
- Run Benchmark — fixed camera path: Earth surface + Ring flyover.
- Results: avg / 1% / 0.1% FPS, resolution, preset, GPU/CPU names, timestamp.
- Actions: Apply Recommended Preset, Save Result, Back.
5. Play — mode select
Section titled “5. Play — mode select”Two large cards.
| Card | Visual | Meaning |
|---|---|---|
| Solo Local Campaign | Single operator, Earth, no network marks | Local saves only. No EOS. No raids / special coop. |
| Online | Fireteam + Earth + Indra’s Ring signal nodes | EOS required. Raids and special coop exist. |
Footer on each card: Characters do not transfer between Solo and Online.
6. Online — EOS login
Section titled “6. Online — EOS login”Shown only on the Online path if not already logged in this session (or saved login failed). Same screen opens from Marketplace storefront. Store login does not move a Solo character into the Online pool.
Screen A — credentials
- Username, password
- Remember username
- Remember password (enabled only if username is also saved; warning shown)
- Stay signed in on this device (default on after a successful login). Uses OS secure storage. Warning on shared machines.
- Log In / Back / Create Account (external EOS) / Forgot Password
- No Discord control on Screen A. Discord is linked after a live EOS session from Command Deck → Social → Discord (
W_TFA_DiscordLink/EOS_Connect_LinkAccount). See Functional Spec §3.X / FS-ID scenario C.
Screen B — TFA (2-FA) if the EOS account has two-factor on the username / password path: code, submit, resend/timeout, Back. Real client: automatic from EOS — no player “has 2-FA” checkbox. FE lab may show a 2-FA (Lab: Purpose to show UX) toggle only to preview Screen B.
Discord mapping (runtime is FS-ID-004)
- Discord attach is post-login only (Social → Discord → Link).
EOS_Connect_LinkAccounton the live PUID. Same Online pool. NeverCreateUseron this path. - Discord already tied to a different PUID: fail closed. No silent merge.
- Cold Online login is username / password (and Screen B if required). Do not place Continue with Discord on Screen A.
Errors (Discord link path): expired Discord token → silent OAuth refresh and retry EOS LinkAccount once. Network timeout → tell the player to check Discord Services.
Stay signed in (FS-ID-006). Online path tries silent login first. If persist is valid, skip Screen A (and skip TFA). If persist fails, show Screen A. Log Out of EOS (Online Character Select and Esc) deletes local persist and Discord OAuth consent on this device. Confirm before Log Out (drops session). Discord OAuth consent is once per device until Log Out, Discord revoke, or refresh failure.
Failures (username path): wrong password, network down, banned, TFA mismatch, expired session.
Logout lives on Online Character Select and in the Online Esc menu. That is the shared-device / next-player path. Confirm Log Out clears device persist and Discord consent on this device only. It does not unlink Discord from the EOS PUID. The next person who logs into their EOS account only sees Discord linked to their PUID.
Discord Unlink (Social pane). Optional, while still logged into EOS: Unlink Discord on W_TFA_DiscordLink if the player wants to detach Discord from this account (wrong link, or no longer want Discord delivery). Not required for shared-PC handoff. Relink uses EOS_Connect_LinkAccount again. Social shows the linked Discord display name so the player can verify it is theirs.
7. Character select / create
Section titled “7. Character select / create”Same layout for Solo and Online. Different save pools.
Empty pool: centered Create New Character. No Play.
Occupied pool (1–10): profile cards + Create New Character. At 10, Create is disabled: “Maximum 10 characters.”
Card data: portrait, name, level, last location, campaign part, last played, playtime, ENDGAME badge if complete. Online: clan tag. Solo: LOCAL.
Play enables only when a character is selected (or auto-selected after create).
Also on this screen: Delete (confirm), Reset Campaign, Sort by last played.
Create Character — locked fields
Section titled “Create Character — locked fields”Year 1 create is identity, not a second game.
| Field | Rule |
|---|---|
| Display name | 2–16 characters, unique inside the current pool. Required. |
| Sex | Male or Female. Two options. Required. No other body types, no Type A/B/C, no identity sliders. |
| Appearance | Premade MetaHuman face presets, grooms (hair / brows / facial hair), limited facial feature dials, hair color, skin color, tattoos on face and body. Sex picks the fixed Male or Female body — no body-size or limb-scale dials. Light / medium / heavy armor later changes plates only (a_socket_* / a_plate_* — FS-MESH-001) — joints, underarmor, and flare scale stay that person’s size. Full-game mesh: Mutable + MetaHuman (FS-APP-*). Catalog counts TBD-057. Not in Demo. |
| Order | Fist / Magus / Hidden. Required. This is the main class origin. |
| Faction | Auto from Order: Enforcer / Arcwarden / Phantom. Not a free picker. New characters start as this main class. |
| Subclass | Not on create. Five per faction (GDD §5b) open one after another as the character levels, in roster order. No picker. |
| Race | Human. Locked for Year 1. Shown as read-only. Later years unlock races on this screen. |
| Difficulty | Not on create. |
| Corp | Not on create. Corps are armor finishes, not origin. |
Confirm writes into the current pool only, returns with that character selected.
Subclass unlock order (not chosen on this screen). T1 opens first, then T2, then T3, then T4, then T5. Character-level thresholds: Functional Spec TBD-029.
- Fist / Enforcer: Berserker → Vanguard → Shock Trooper → Battle Master → Seraph
- Magus / Arcwarden: Pyrocaster → Torrentcaller → Zypher → Cyromancer → Stormbringer
- Hidden / Phantom: Infiltrator → Specialist → Wraith → Shadow → Ghost
Reset Campaign (both modes)
Section titled “Reset Campaign (both modes)”Lives on Character Select only. Esc does not wipe. Optional Esc helper: “Reset campaign from Character Select.”
Enabled only if the selected character has campaign progress.
Two-step confirm: warning, then type RESET or hold confirm 2 seconds. Cancel is default focus.
Wipes: story / mission / sub-mission flags, tracked objectives, last position, campaign-complete / endgame-hub state, story-gated map unlocks.
Keeps: name, appearance, Order / Faction, subclass unlock progress, inventory, Credits, hangar, shaders, Collections, Xenobiological Codex kills, marketplace unlocks, Online clan.
After confirm the card returns to campaign start. Player hits Play. This is not Delete and not New Game+.
Online reset is server-authoritative and fails closed. Solo writes local with a backup until the next successful save.
8. Entering the game
Section titled “8. Entering the game”- Existing: load where that character left off.
- New: tutorial / opening cinematic.
- Online + campaign complete: endgame hub on that character.
- After reset: fresh campaign start on that character, kept gear and Collections.
Loading: Shiv mark + planet name + one tip.
9. In-world chrome
Section titled “9. In-world chrome”Command Deck (top bar)
Section titled “Command Deck (top bar)”- Character / Inventory — opens Character screen I
- Hangar — ships and mechs for this character
- Appearance — armor / item look, shaders
- Collections — Items + Xenobiological Codex
- Journey — Game Story list and lore (not the globe)
- Marketplace — storefront (EOS to buy) + player listings
- Social — Fireteam (instance list + Invite), Clan (full roster + clan invites + favorite), Friends (list + Invite + favorite), Discord. Online functional; Solo locked: “Social is Online only.”
- Settings — same Options screen (includes Social / fireteam privacy)
Social (locked). Replaces Clan on the Deck. Clan is a pane under Social, not a Deck tab. Online only. Follows the Command Deck pause policy.
| Pane | Owns | Does not own |
|---|---|---|
| Fireteam | Session group. Cap 8. You are a team of 1 until invites land or eligible players Join. Leader invites / kicks from the team. Mixed clans allowed. Accepting a fireteam invite or Joining leaves the old fireteam. Leader leave: oldest remaining member leads. In this instance lists everyone else here; each row has Invite. | Clan membership. RAID/Vault activity size still 2 / 4 / 8. Story coop instance still caps at 4 (GDD). Extra fireteam members do not enter a 4-player story instance. Favorites (those live on Clan and Friends). |
| Clan | Persistent Online org. Create if ClanId is empty. One clan at a time. Server-authoritative. Founder / leader invites and kicks. Reset Campaign keeps membership. Leave before creating another. Example tag: HAVOC on Ash Cantor. Full roster on this pane (online and offline). Clan org Send stays here. Row Invite is fireteam. Diamond favorite. |
Fireteam. Matchmaking. Solo. Roster cap and extra ranks: TBD-031. |
| Friends | EOS Friends on this PUID. Full list. Add / remove by Online display name / EOS. Used by fireteam privacy. Online friends get Invite. Diamond favorite (same flag as Clan). | Discord friends. Voice. I-screen. A second game account. |
| Discord | After EOS login: Link Discord → Discord OAuth / SDK consent (no Discord password inside TFA) → short-lived AccessToken → EOS_Connect_LinkAccount (EOS_ECT_DISCORD_ACCESS_TOKEN). Linked state shows Discord display name + username on this PUID. Unlink returns to not-linked. Invite Send delivers in-game and on Discord when linked. Accept stays in Terra Firma. Not voice. Not a second game login. Linked Discord also enables Companion API by-discord lookup for the separate companion stats bot (FS-API-002) — that bot is not this pane and does not Send invites. |
Friends list. Voice. I-screen tabs. Discord button on EOS Screen A. In-game Discord password fields. Separate Discord-only send. Companion Discord bot app credentials. |
Fireteam privacy (locked). Lives on Settings → Social (same Options asset). Also echoed on the Fireteam pane. Per PUID; clan checks use this character’s ClanId. Online only.
| Setting | Options | Behavior |
|---|---|---|
| Accept fireteam invites from | Anyone · Friends or clan · Friends · Clan · Nobody | Who may Send you a fireteam invite. Outside the set, Send fails closed (does not land). Inside the set, Accept is automatic — no prompt. Nobody blocks all fireteam invites. Clan org invites are a different sheet and ignore this. |
| Who can join my fireteam | Invite only · Friends or clan · Friends · Clan · Anyone | Who may Join your fireteam without an invite while a slot is open. Invite only = they wait for Send. Leader can still kick. Cap 8 still fail closed. |
Companion profile privacy (locked). Same Settings → Social tab, below fireteam rows. Per PUID. Online only. Controls what Companion Player API apps (companion Discord bot, BenchMark site, third-party) may read with an app API key. FS-API-005.
| Setting | Options | Default | Behavior |
|---|---|---|---|
| Career | Public · Friends · Private | Public | FS-CAR-001 totals |
| Equipment | Public · Friends · Private | Public | Equipped cosmetics only (FS-NET-002) |
| Collections | Public · Friends · Private | Public | FS-CAR-002 |
| Triumphs | Public · Friends · Private | Public | FS-CAR-003 |
| Modes | Public · Friends · Private | Public | FS-CAR-004 |
| Match History | Friends · Private · Public | Friends | FS-MCH-006 / Last match recap |
Ladder standing on the season board stays public when ranked. Bags, wallets, Case / mystery, and Trust are never rows here — hard deny on the API. Friends visibility requires player OAuth on the caller; app-key-only sees Public. Solo: rows visible and locked.
Example: Ash Cantor (HAVOC) sets both to Friends or clan. Clanmates and EOS Friends Join the HAVOC fireteam without waiting. A stranger’s Send fails closed.
Join from Friends pane or clan roster. Joining leaves the old fireteam. Story coop instance still caps at 4.
Lists (locked). Fireteam pane: In this instance — other players here, each with Invite. Clan pane: full member roster + clan org Send. Friends pane: full EOS Friends list, each online friend with Invite. Row Invite is the same fireteam Send as the sheet. Offline: no fireteam Invite. Already on your fireteam: On fireteam.
Favorites (locked). Diamond on Clan roster and Friends list. One flag per target PUID; both panes share it. Sorts favorite first. Persist on the Online account. Not a privacy set. No diamond on the instance list. Infographic: locks/lock_fe_favorites.svg. Still: FE44.
Invite sheet. One sheet, opened from Fireteam or Clan. Search Online display name / EOS. One Send button. Game server issues the token. Fireteam Send lands only if the target’s Accept setting includes you — then Accept is automatic. Same Send delivers on Discord if sender and target are linked. Discord miss does not fail Send. Clan roster can seed a fireteam invite. Clan org invites still land as pending on Social (this privacy table does not apply to clan org). Fireteam invites die with the session; clan invites persist on the server. Expiry: TBD-032. Fail closed: Solo realm, fireteam already at 8, already in that clan, target not in the Online pool, target’s Accept set excludes you, target offline (fireteam Invite).
Deep link from Discord opens the game / EOS session. Fireteam join follows Accept / Join settings. Clan org still presents Accept. Discord is delivery, not authority.
Pause policy (locked). Same widgets both realms. The session owns time, not the widget.
| Solo | Online | |
|---|---|---|
| World clock | Stops while Deck, I, Tab map, Esc, Settings, or a Deck child is up | Never stops. No SetGamePaused on GameState or the server |
| Esc title | PAUSED | LIVE — overlay |
| Input | Cursor on. Move / look / fire / skills off | Same input lock |
| Pawn | Frozen with the world | Still simulates. Damage, CC, objectives, fireteam keep going |
| OmniVisor | Hidden under pause glass is fine | Vitals must stay readable under the overlay |
| Hit while overlay is up | N/A (world frozen) | Does not auto-close the Deck |
| Downed / death / disconnect | Resume path after unpause | Dump overlay stack to OmniVisor death / respawn or session-lost |
Hubs are not an exception. Crafting Page is still a station (not a Deck tab) and still follows this clock: Solo may pause there; Online does not.
Esc — in-game menu
Section titled “Esc — in-game menu”- Resume (Solo: unpause. Online: close overlay)
- Options
- Leave to Character Select
- Leave to Main Menu
- Quit Game
- Online: Log Out of EOS
Confirm on anything that drops a session.
Hotkey I remains Character screen I. Esc is the session menu. They are not the same window. I uses the same pause policy as the Command Deck.
10. Tab — Contextual Navigation: Local Map & World Map
Section titled “10. Tab — Contextual Navigation: Local Map & World Map”The map and navigation experience is unified under Tab and context-aware:
10.1 In-World Input & Context Resolution
Section titled “10.1 In-World Input & Context Resolution”- Hold / Press Tab: Evaluates player context (
IsPlayerOnPlanet()):- On Planet Surface / Combat Sector: Opens Local Map (
W_TFA_LocalMap), centered on current operative coordinates. - In Orbit / Station (Indra’s Ring / Dropship transit): Opens World Map (
W_TFA_WorldMap), showing the planetary globe.
- On Planet Surface / Combat Sector: Opens Local Map (
- Tap Tab (or Tap M) during gameplay: Does not open the full-screen map. Pings the GUI locator for 4 seconds: name +
{dist} m+ elevation beside the quiet world pip; heading-tape pip and tracker blip brighten. No nameplate on the reticle. - While OmniVisor chat compose is focused: Tab cycles Fireteam → Clan → Match → General → Proximity (skip empty seats; Whisper is not Tab). Does not ping. Hold Tab does not open the map. Enter sends. Shift+Enter inserts a newline. Overlay Enter is UI, not chat. Full lock: FS-HUD-010 / GDD In-game Chat.
10.2 Local Map & Missions/Objects Hub (W_TFA_LocalMap)
Section titled “10.2 Local Map & Missions/Objects Hub (W_TFA_LocalMap)”The Local Map is the tactical command center for the current sector:
- Map Viewport: High-resolution topological vector render, elevation contours, dynamic fog-of-war, real-time player position / orientation cone, and interactive world tags (
TFA.World.*). - Missions & Objects Drawer (Left Panel):
- Filter Tabs:
All|Campaign|Sub-Missions|Tasks|Local Objects. Tasks is Online only (hidden Solo). - Tracked Categories:
- Story & Campaign: Active story quest stages, narrative leads, primary drop zones.
- Sub-Missions & Bounties: Side contracts, high-value target bounties, patrol tasks.
- Online tasks (Online pool only): Daily tasks, weekly tasks, hard objectives. Same drawer and Tasks filter on Local Map and World Map. Set as Primary tracks them in the world. Not a Command Deck tab. Catalog TBD-039.
- Local Objects & POIs: Tagged world actors including Fabricators, Weapon Caches, Data Terminals, Safe Hubs, and Extraction Beacons.
- Item Card: Shows name, lore/task summary, distance from player, completion criteria, and reward preview.
- Filter Tabs:
- Set as Primary Action:
- Selecting any mission, Online task, or world object enables the [Set as Primary] button.
- Only one objective or object is Primary at a time.
- Setting an item as Primary locks its tracking, highlights its marker with an ember/gold pulse on the open map (Local or World), and publishes world coordinates through
UTFAObjectiveSubsystemto the OmniVisor GUI locator (quiet pip + heading tape + tracker blip).
- World Map Navigation: Prominent header button
[ < World Map (Tab) ]allows immediate zooming out to the planetary view.
10.3 World Map (W_TFA_WorldMap) & Bi-directional Flow
Section titled “10.3 World Map (W_TFA_WorldMap) & Bi-directional Flow”- Globe & Orbital Station: Rotatable 3D Earth globe, atmospheric operational sectors, and elevated Indra’s Ring orbital station.
- Operations / Missions & Objects Drawer (Left Panel):
- Filter Tabs:
All|Story|Tasks|Raids|Vaults. Tasks, Raids, and Vaults are Online only (hidden Solo). No Objects tab — Local Objects / POIs stay on Local Map. - Same Online-task rows as Local Map: Daily / Weekly / Hard Objectives. Story, Raid, and Vault rows stay here.
- Set as Primary works from this drawer the same as Local Map. One Primary across both maps.
- Filter Tabs:
- Globe markers: Online-task diamonds at sector (amber, not RAID hexes). Solo never draws them.
- Bi-Directional Tab Toggle:
- Pressing Tab while in Local Map $\rightarrow$ switches to World Map.
- Pressing Tab while in World Map $\rightarrow$ switches to Local Map (defaulting to operative’s current sector).
- Pressing Esc or clicking [Close] returns directly to gameplay.
10.4 Marker Hierarchy (Solo vs Online)
Section titled “10.4 Marker Hierarchy (Solo vs Online)”Solo markers: story, sub-mission, side, solo endgame dungeon, local objects/POIs. No Raid. No special coop. No daily / weekly / hard objectives. GDD solo equivalents (Biolab Purge, Grid Collapse, System Purge, Core Collapse) use the SOLO OPS bunker mark.
Online markers: everything Solo has, plus Raid, Vault, and Online-task markers (daily / weekly / hard).
| Type | Shape | Color / motion | List / Drawer |
|---|---|---|---|
| Story / campaign | Chevron / diamond | Gold, steady | Default Primary |
| Sub-mission | Small diamond | Muted gold | Nested |
| Side / next step | Circle | White / cyan | Secondary |
| Local Object / POI (Cache / Terminal / Fabricator) | Square / hexagonal pip | Cyan / Amber | Local Objects tab |
| Daily / Weekly / Hard Objective | Small diamond | Amber | Tasks tab on Local Map and World Map. Online only. Set as Primary |
| Primary Tracked Target | Same shape, enlarged | Gold pulse ring + beam | Active Primary |
| Raid (Online) | Hex breach seal, ~1.4× | Ember / crimson, rotating ring | Badge RAID, pip 2 / 4 / 8 |
| Special coop dungeon | Triangle vault + Shiv rune | Hard-light violet | Badge VAULT + fireteam size |
| Solo endgame dungeon | Square bunker | Steel + ember, no ring | Badge SOLO OPS |
| Complete | Desaturated sealed glyph | Grey | Collapsed |
| Locked | Same shape + lock | Grey | Filter |
Filters (split by map):
- Local Map: All | Campaign | Sub | Tasks | Objects. Tasks hidden Solo. Objects = Local POIs.
- World Map: All | Story | Tasks | Raids | Vaults. Tasks / Raids / Vaults hidden Solo. No Objects tab.
10.5 OmniVisor GUI locator (W_TFA_3DWaypoint + tape + tracker)
Section titled “10.5 OmniVisor GUI locator (W_TFA_3DWaypoint + tape + tracker)”Once an objective or object is marked as Primary, in-world navigation uses FE30 as the primary lock: quiet world pip + heading tape + tracker gold blip. FE26’s nameplate on the reticle is the clutter anti-example. The center-top Ultimate is the painted Shiv on fire (tf_shiv_logo_fire.png). Never a new skull or helmet.
Secondary options (not the default ship): FE28 world pip only; FE29 heading tape as the heading cue.
- Quiet world pip: 8–12 px gold diamond on the target in world space. Never over the Firehand reticle. Name + meters hidden until Tap Tab / M ping (4 s).
- Heading tape: thin tick strip under the visor brow. Shiv Ultimate stays center-top. Gold pip = Primary heading. Off-FOV parks at the tape end. Not a compass rose over the world.
- Tracker blip: gold diamond on the existing IFF disc. Red = hostiles. Not a second minimap.
- Off-FOV: world pip hides; tape + tracker remain; tiny rim tick only. Not FE26’s visor-rim billboard.
11. Marketplace
Section titled “11. Marketplace”Command Deck tab. Always visible.
Storefront requires EOS. Browse and buy only while an EOS session is live. Signing in for the store does not move a Solo character into the Online pool.
Buys unlock locally. After purchase, cosmetics, shaders, titles, and hangar liveries stay on this machine. Solo characters can apply them with no live EOS session. Appearance is the apply screen. Offline storefront still lists owned locally; the live catalog stays locked until EOS sign-in.
| Pane | Without EOS | With EOS |
|---|---|---|
| Storefront | Locked: “Sign in to EOS to browse and buy.” Owned-locally list remains. | Live catalog. Season items stay listed forever. LUMENAR SKUs debit LUMENAR. Fiat / cash SKUs mint BTUCOIN 51/49 (FS-ECO-003) — then convert to spend. |
| Listings | Solo: visible and locked — “Player listings are Online only.” | Online pool: player trade of allowed looks, priced in LUMENAR. Server-authoritative. |
| Wallet | Locked: “Sign in to EOS to convert.” Credits still read on Character I. | LUMENAR (primary) + BTUCOIN (player 49%). Floor, market, settlement (P = \max(\text{floor}, \text{market})). Convert BTUCOIN → LUMENAR anytime at (P) (FS-ECO-006). Cash buy mints (M = V / P) at 51/49 (no direct LUMENAR). |
Sells: looks, shaders, titles, hangar liveries, and Secure Locker tab slots (secure_locker_tab_slot — FS-ECO-014 QoL: account storage capacity only). Does not sell: combat stats, raid clears, Collections bases, Frames, trees, or anything that changes power.
Secure Locker tabs: LUMENAR SKU unlocks one extra account Locker tab beyond the six free (FS-GUI-009). Buy from Storefront or Secure Locker Buy Tab deep-link. Not looks — explicit QoL exception. Not Armory foundry. Not coop Vault.
LUMENAR is the Marketplace spend. Credits are in-world vendors only. Ended seasons roll into the standard storefront — no vault, no disappearing SKUs.
Play BTUCOIN → daily / weekly / hard objectives
Section titled “Play BTUCOIN → daily / weekly / hard objectives”Completing daily tasks, weekly tasks, and hard objectives mints BTUCOIN. TBD-039 is a fiat value (V) table (and Hard Objective catalog) — not fixed BTU counts. At complete: settlement (P = \max(\text{floor}, \text{market})); mint (M = V / P); then 51/49. When market is above the marketplace floor, objectives mint fewer BTUCOIN; convert at the same (P) keeps LUMENAR out flat for that (V). Do not invent a board. These grants are not Credits and not LUMENAR (Credits stay stashes / kills / bosses / sides).
Online service only. They live where other game objectives live: world markers and the Missions & Objects / Operations drawer on every Tab map (Local Map and World Map). Filter Tasks on both. Set as Primary tracks them on the OmniVisor. Solo never lists or spawns them. Store login does not grant them to a Solo character.
Every BTUCOIN mint — play or fiat BTUCOIN path — splits 51% studio treasury / 49% player wallet. There is no mint that skips the studio cut. Character I BTUCOIN shows the player share only.
Real money → BTUCOIN mint → convert → LUMENAR
Section titled “Real money → BTUCOIN mint → convert → LUMENAR”Marketplace fiat / cash SKUs mint at 51% BTU Games / 49% buyer (FS-ECO-003 / FS-ECO-004). Pack tables are fiat (V) (TBD-036); (M = V / P) at settlement. They do not grant LUMENAR or Credits.
BTUCOIN floor TBD-035. Settlement (P = \max(\text{floor}, \text{market})) is shared by mint sizing and convert. The player converts their 49% BTUCOIN to LUMENAR on Wallet whenever they want ((\lfloor B_{49} \times P \times R \rfloor)), then spends LUMENAR on storefront / listings / Advanced Pass. BTUCOIN does not buy SKUs directly. Credits do not buy Marketplace.
Infographic: locks/lock_fe_economy.svg. Marketplace chrome: FE22.
12. Collections
Section titled “12. Collections”Xenobiological Codex
Section titled “Xenobiological Codex”Planet → Location. Info gated by kills. 10,000 kills = full dossier. Unencountered = silhouette / Unknown.
Armor and Weapons. Base pieces only (no prefixes / suffixes). Foundry index, not the backpack. Pull a base into inventory if frames and parts are owned. Modifications / gems = coming slot, disabled.
13. CommonUI remap (Lyra → TFA)
Section titled “13. CommonUI remap (Lyra → TFA)”No Unreal project lives in this workspace. This is the class and widget map for the next editor pass. Keep CommonUI: UCommonActivatableWidget, UPrimaryGameLayout, stacked menus, gamepad focus.
| Lyra (source) | TFA (replace / add) | Notes |
|---|---|---|
Frontend experience B_LyraFrontend |
B_TFA_Frontend |
Black + burning Shiv, not the atrium map |
ULyraFrontendStateComponent |
UTFAFrontendStateComponent |
Owns intro → menu → play stack |
W_LyraFrontend / press-start |
W_TFA_IntroSplash then W_TFA_MainMenu |
Intro is skippable |
ULyraButtonBase / menu buttons |
W_TFA_MenuButton |
Ember glass, uppercase |
| Play Lyra | Opens W_TFA_ModeSelect |
Does not start a match |
Options → W_GameSettingScreen |
W_TFA_Settings |
Same asset from menu and Esc |
ULyraGameSettingRegistry |
UTFAGameSettingRegistry |
Lyra tabs + TFA Social / fireteam privacy |
| Credits (menu roll) | W_TFA_Credits |
Staff / studio roll. Not the in-game wallet |
| Quit | W_TFA_QuitConfirm |
|
| — | W_TFA_Benchmark + W_TFA_BenchmarkResults |
New |
| — | W_TFA_ModeSelect |
Solo / Online cards |
| — | W_TFA_EOSLogin |
Username, password, remember flags, Stay signed in. No Discord button |
| — | W_TFA_EOS_TFA |
Code only if required on the username path |
| — | W_TFA_CharacterSelect |
Shared widget, pool injected |
| — | W_TFA_CharacterCreate |
Locked fields above |
| — | W_TFA_ResetCampaignConfirm |
Two-step |
| — | W_TFA_DeleteCharacterConfirm |
|
| — | W_TFA_Loading |
Shiv + planet + tip |
| — | W_TFA_CommandDeck |
Top bar. Pause policy: FE spec §9 / FS-SES-005 |
| — | W_TFA_InGameMenu |
Esc. Title PAUSED (Solo) / LIVE (Online) |
| — | W_TFA_LocalMap |
Tab on planet; Missions & Objects drawer (Online: Daily / Weekly / Hard + Tasks filter), Set Primary, [World Map] button |
| — | W_TFA_WorldMap |
Tab off planet / in orbit; Daily / Weekly / Hard rows + Tasks filter (Online); globe task diamonds; [View Local Map] button; Set Primary; no Local Objects |
| — | W_TFA_HeadingTape |
Visor-brow heading tape; gold Primary pip |
| — | W_TFA_3DWaypoint |
GUI locator world pip; ping reveals name; off-FOV hides (tape + tracker stay) |
| — | W_TFA_Collections |
Items / Xenobiological Codex |
| — | W_TFA_Journey |
Game Story log |
| — | W_TFA_Marketplace |
Storefront needs EOS; buys unlock locally; listings Online only. Panes: Storefront / Listings / Wallet. Includes secure_locker_tab_slot (FS-ECO-014) |
| — | W_TFA_MarketWallet |
Wallet pane. LUMENAR primary. Cash → BTUCOIN mint 51/49. Convert BTUCOIN → LUMENAR |
| — | W_TFA_SecureLocker |
Hub / station terminal only. Dual-pane CHARACTER GEAR ↔ SECURE LOCKER with center DEPOSIT → / ← WITHDRAW rail. Footprints FS-GUI-010 (Gear 10×6 · Locker 12×12). Six free tabs + LUMENAR expand. Not Character I. Not Armory foundry. Not coop Vault (FS-GUI-009) |
| — | W_TFA_CreditChip |
Do not ship. Second pair caused tab overlap. W_TFA_IWallet is the only I-screen wallet |
| — | W_TFA_IWallet |
Title-bar pocket: CREDITS, gap, BTUCOIN, then X. Persistent. Never overlaps Inventory / Combat / Tentacles / Ordnance. LUMENAR is Marketplace only |
| — | W_TFA_WeaponAmmo |
OmniVisor bottom right. Mag + Field/Specialist/Siege reserve counter. Bricks never enter the bag |
| — | W_TFA_Hangar |
Ships / mechs |
| — | W_TFA_Appearance |
Shaders |
| — | W_TFA_Social |
Deck tab. Panes: Fireteam / Clan / Friends / Discord. Solo locked |
| — | W_TFA_Fireteam |
Session group. Cap 8 |
| — | W_TFA_Clan |
Pane under Social. Create / invite / leave. Online only |
| — | W_TFA_Friends |
EOS Friends list. Invite on the row. Favorite diamond |
| — | W_TFA_InstanceList |
Fireteam pane. Other players in this instance. Invite on the row |
| — | W_TFA_DiscordLink |
Social Discord pane: linked profile / Log in with Discord |
| — | W_TFA_DiscordOAuth |
Open Discord consent → Authorize → AccessToken → LinkAccount (lab mock; real = Discord SDK / browser). No Discord password in TFA |
| — | W_TFA_InviteSheet |
One Send. In-game inbox + Discord delivery. Row Invite uses this Send |
| Character I / OmniVisor | Unchanged | Do not fold into Esc |
| Character I · Inspect | Trait column strips seat-aware (guns: Feed = {MagFamily} Spec · Bullets · Plate · Verb; armor/shield: Shell · Stride · Brace · Verb; jewelry: none) + Origin(s) (1 Unique · 2 Apex) + Set membership pips on Unique/Apex + Familiarity / Masterwork | FS-ITM-010 2026-11-13d / 004/013, FS-TRK-001/002. Mock: #ins-verb / #ins-fam in tfa_gdd_html/index.html. Catalog names filled; Familiarity costs TBD-065…068 |
| Character I · Active Sets | LOAD OUT / doll chrome strip: dynamic worn SetIDs · equipped n · toggles · ASBP meter used / 6 |
FS-ITM-004 · Year 1 ship surface TBD-072. Mock: #active-sets in tfa_gdd_html/index.html. Inspect pips ≠ active state |
| Demo Mod | Seat-aware Trait columns by quality (Common none; jewelry none); Origin + Set on Unique/Apex; Active Sets ASBP note | Mock: tfa_gdd_html/figures/demo_mod_mock.html. Not OmniVisor child |
Save pools
- Solo: local save per slot, max 10, tagged
LOCAL. Never listed on Online. - Online: EOS + server slots, max 10. Never listed on Solo.
Input
- Intro skip: Esc, Enter, Space, gamepad face / start.
- Every front-end screen: CommonUI analog cursor + keyboard / gamepad focus order.
- Tab (Hold / Press): Toggles contextual Map (Local Map on planet, World Map in orbit). Not while chat compose is focused.
- Tab (Inside Map UI): Seamlessly swaps between Local Map and World Map.
- Tab (Tap) / M (Tap) in gameplay: Pings GUI locator (pip + tape + tracker); name / meters 4 s. Not while chat compose is focused.
- Enter (Online, in play, no overlay): Opens OmniVisor chat. Enter sends. Shift+Enter is a new line. Tab cycles Fireteam / Clan / Match / General / Proximity (Whisper separate).
- Esc: Toggles in-game menu (or closes top overlay first). Chat compose open: Esc closes chat without sending.
14. Thin screens that must exist
Section titled “14. Thin screens that must exist”Credits, Quit confirm, Delete confirm, Reset confirm, Loading, disconnect / session lost, Create Account / Forgot Password landing, empty / error / max-characters, first-run legal.
Combat HUD and death / respawn stay in the OmniVisor lock.
15. Walkable prototype and figures
Section titled “15. Walkable prototype and figures”GDD reader lab: tfa_gdd_html/index.html → UX · Front-End. Written lock: Front-End UI.
Infographics (same chrome as the Character I lock plates):
| Figure | File | Example shown |
|---|---|---|
| Lock · Logo | tfa_gdd_html/figures/tf_shiv_logo_fire.png |
Painted fire Shiv (PNG stamp). tf_logo.svg embeds this PNG. |
| Lock · Realms | tfa_gdd_html/figures/locks/lock_fe_realms.svg |
Riven Hale vs Ash Cantor |
| Lock · Markers | tfa_gdd_html/figures/locks/lock_fe_markers.svg |
Mission 1, Biolabs raid, Biolab Purge |
| FE0 | fe0_flow.svg |
Happy path. Online may skip EOS if Stay signed in |
| FE11 | fe11_full_flow.svg |
Full UX map — four lanes, every screen |
| FE31 | fe31_auth_flow.svg |
Online auth: persist, Discord Connect, username TFA, Log Out |
| FE32 | fe32_social_flow.svg |
Social: Fireteam 8, Clan, Discord link, invite sheet |
| FE33 | fe33_eos_discord.jpg |
Illustrated still — Stay signed in (legacy Discord-on-A art; product = Social Link after login) |
| FE34 | fe34_social.jpg |
Illustrated still — Social tab, Fireteam 1 of 8, LIVE overlay |
| FE35 | fe35_invite.jpg |
Illustrated still — one Send (in game and Discord) |
| FE36 | fe36_pause_live.jpg |
Illustrated still — Solo PAUSED vs Online LIVE |
| FE1–FE2 | intro + main menu | Skip keys, PLAY pillar |
| FE3–FE4 | mode + EOS | ash.cantor + 2-FA path. Discord Link on Social after login |
| Lock · Identity | locks/lock_fe_id.svg |
Discord AccessToken → EOS Connect. Stay signed in persists EOS session, never the AccessToken |
| FE5–FE6 | characters + create | Hale / Voss / Cantor. Create: Order → Faction, no subclass picker |
| FE7 | reset | Kira Voss wipe vs keep |
| FE8 | deck + Esc | Marketplace on the bar; Social locked on Solo; Clan lives under Social |
| Lock · Social | locks/lock_fe_social.svg |
Fireteam 8, Clan create/invite, Discord delivers both invite types |
| Lock · Overlay | locks/lock_fe_overlay.svg |
Solo PAUSED vs Online LIVE. Command Deck never pauses Online |
| Lock · Privacy | locks/lock_fe_privacy.svg |
Accept invites from / Who can join. HAVOC Friends or clan |
| FE37 | fe37_fireteam_privacy.jpg |
Illustrated still — Settings → Social, fireteam privacy |
| FE38 | fe38_fireteam_join.jpg |
Illustrated still — Fireteam pane, Accept / Join Friends or clan |
| FE39 | fe39_friends_join.jpg |
Illustrated still — Friends pane, Join fireteam auto-join |
| FE40 | fe40_accept_filter.jpg |
Illustrated still — clanmate Join vs stranger Send fails closed |
| Lock · Roster | locks/lock_fe_roster.svg |
Instance Invite. Clan full roster + favorite. Friends list + Invite |
| Lock · Favorites | locks/lock_fe_favorites.svg |
Tap diamond. Shared PUID flag. Sort. No diamond on instance |
| FE41 | fe41_clan_roster.jpg |
Illustrated still — HAVOC roster, favorite diamond, clan Send |
| FE42 | fe42_friends_list.jpg |
Illustrated still — EOS Friends, favorite, Invite |
| FE44 | fe44_favorites.jpg |
Illustrated still — tap diamond on Friends. Same flag on Clan |
| FE43 | fe43_instance.jpg |
Illustrated still — In this instance + Invite. No diamond |
| FE9 | world map | RAID 2/4/8, VAULT, Daily / Weekly / Hard rows, Tasks filter, globe task diamonds, View Local Map (Tab) |
| FE18 | illustrated world map | Earth + Ring. Daily / Weekly / Hard in Operations. Tasks on this globe. Set as Primary |
| FE23 | local map | Missions & Objects drawer, Online Tasks filter, Set as Primary, Extract A-7 |
| Lock · Online tasks | locks/lock_fe_online_tasks.svg |
Daily / weekly / hard: Online only. Local Map and World Map. Tasks filter. Set as Primary |
| FE24 | dense 3D waypoint (anti-example) | Large callout — do not ship |
| FE27 | waypoint density | Seat diagram. Primary lock is FE30 |
| FE30 | primary lock · GUI locator | Pip + tape + tracker. Painted Shiv on fire |
| FE28 | secondary option | World pip only |
| FE29 | secondary option | Heading tape as heading cue |
| FE10 | collections | Warden Frame, Xenobiological Codex |
| FE22 | marketplace | EOS to buy; LUMENAR prices; Wallet cash → BTUCOIN mint 51/49 then convert; Online tasks mint 49% BTUCOIN; listings Online only |
| Lock · Economy | locks/lock_fe_economy.svg |
Cash → BTUCOIN mint 51/49. Convert → LUMENAR to spend. Play mints same split. Floor vs market. Credits = vendors |
| Lock · Credits chip | locks/lock_gui_credits.svg |
Character I title bar: CREDITS + BTUCOIN, gap, then X. Never overlap tabs |
| FE22b | marketplace wallet still | Illustrated Wallet: LUMENAR primary; BTUCOIN convert; Credits vendors echo |
| FE12–FE21 | illustrated stills | Same visor chrome as OV12–OV24: intro, menu, mode, EOS, chars, create, map, Esc, collections, reset |
| FE33–FE44 | illustrated stills | Discord + Stay signed in, Social, invite, pause vs LIVE, fireteam privacy, Friends Join, Accept filter, clan roster, friends list, favorites toggle, instance list |
| OV29 | ov29_chat.jpg |
Illustrated still — OmniVisor chat compose, Fireteam / HAVOC team |
| OV31 | ov31_chat_channels.jpg |
Illustrated still — Tab cycle (channel bible: Fireteam → Clan → Match → General → Proximity; Whisper separate). GDD: In-game Chat |
| OV32 | ov32_chat_newline.jpg |
Illustrated still — Shift+Enter new line |
| Lock · Chat | locks/lock_hud_chat.svg |
Enter / Tab / Shift+Enter. Message limit TBA |
| FE25 | illustrated local map | Ring Approach. Daily / Weekly / Hard in Missions & Objects. Extract A-7 Primary |
| FE26 | illustrated 3D waypoint | OmniVisor EXTRACT A-7, 142 m, rim clamp |
Lock plates: python tfa_gdd_html/figures/build_fe_infographics.py
Illustrated stills live in tfa_gdd_html/figures/ as .jpg (fe12_intro.jpg … fe21_reset.jpg, plus fe25_local_map.jpg, fe26_waypoint.jpg (anti-example), fe30_waypoint_combo.jpg (primary GUI locator), fe28_quiet_pip.jpg / fe29_heading_tape.jpg (secondary options)). Shiv stamp stays PNG (tf_shiv_logo_fire.png).