Each mission's type, narrative, timer, stages, and objectives are derived deterministically from world coordinates via ZeroQuest. No two playthroughs follow the same sequence. Quest text uses the Paradistro narrative profile with covenant governance, lattice authority, shell coordinates, and builder mythology theming.
ZeroQuest Apache 2.0
| Quest Type | Timer | Stages | Win Condition |
|---|---|---|---|
| PROTECT_HOME | 60-180s | 1 | Kill all enemies + extract at carrier |
| PROTECT_POI | 90-240s | 1 | Kill all enemies + extract at carrier |
| DATA_DUMP | 30-60s/stage | 3 | Complete all stages + extract |
| STRONGHOLD | None | 1 | Kill all enemies (no extraction needed) |
MENU → startLevel() → LOADING (voice pool prewarm) → QUEST_BRIEFING (narrative + accept) → PLAYING (combat + ATC comms) → MISSION_COMPLETE (score + bonus) → Next Level or Quest Gate
At quest gate levels (5, 10, 15, 20, 25), the Mission Complete screen shows "NEW INBOX MESSAGES AVAILABLE" and routes the player to the Hangar to access the narrative INBOX before continuing.
Enemies spawn at 300ms intervals around quest objective coordinates. Round-robin across multiple spawn centres for multi-point quests. Base count: debugEnemyBaseCount + (level × 4). One FRIGATE per level. Nemesis ACEs with tier-scaled escorts.
Progressive missions with escalating difficulty. Score persists as upgrade currency. Nemesis rivals carry between levels. Auto-saves to IndexedDB.
Max upgrades, 99 missiles, no mission, no timer, no initial enemies. Discovery spawning: every 3rd new cell spawns 2-4 enemies. HUD shows "FREE PLAY".
Quest stage coordinates are converted to cell-space and registered as ZeroStructureMask sites. Void pockets are carved at each objective location, and POI GLTF models render at the anchor. Enemies spawn around these POI centres for PROTECT_POI, DATA_DUMP, and STRONGHOLD quests. POIs are prevented from spawning within 2 cells of the carrier to avoid visual clutter near the home base.
ZeroStructure Mask Apache 2.0
A branching narrative experience accessed from the Hangar menu. The INBOX presents a terminal-themed message interface with character conversations, binary choices, and 16 possible endings.
| Element | Count |
|---|---|
| Binary Choice Points | 4 |
| Unique Endings | 16 (24) |
| Quest Gates | 5 (Q0 through Q4) |
| Characters | 5 (VAEL, CAEL9, ALBATROSS, UNKNOWN, PLAYER) |
| Story Threads | ~20 (branching paths P0 through E_*) |
New narrative content unlocks every 5 levels. The INBOX is empty until the player completes level 5.
| Level Completed | Gate Unlocked | New Content |
|---|---|---|
| 5 | Q0_LAUNCH | P0 thread — first contact, first choice |
| 10 | Q1_CONTACT | P1A or P1B (based on P0 choice) |
| 15 | Q2_ENGAGEMENT | P2 thread — third arc |
| 20 | Q3_CRISIS | P3 thread — climax |
| 25 | Q4_RESOLUTION | Ending thread (1 of 16) |
Quest-gated thread list with unread indicators and choice progress bar (5 dots).
NPC messages left-aligned, player responses right-aligned. Character colours and avatars per speaker.
[A][B][C][D] with keyboard shortcuts and staggered reveal animation. Path flags (PATIENT, AGGRESSIVE, etc.) stored per choice.
Unique title and body text for each of 16 endings. Ending counter tracks discoveries.
Player choices and quest gate progress persist to IndexedDB. Choices save immediately on selection. Survive app close, menu exit, and full restart via Continue. New Game resets all narrative progress.