Missions

What it is

A mission is a single deployable run. The player picks one of two postings on the mission board, flies the run, and is graded at extraction. Each posting is a positively-framed in-universe contract that names a planet, hiring faction, difficulty tier, objective vibe, and extraction timer. The mission board surfaces 11 postings (one per planet in the planet order) authored as static data; selection at the board is biased toward the planet the player tapped in the hub. At run end the engine emits a fixed-schema result record that drives the post-run screen, history buffer, per-planet best-tracking, challenge progression, and the prologue tutorial gate.

Stats tables

Mission objective types (engine tuning)

The board collapses display copy into four objective vibes; each applies a distinct engine tweak on top of base difficulty.

ObjectiveEnemy count multiplierWeapon boxes placed at run startIntent
Explore1.00Baseline run
Find0.852Calmer, more loot
Protect1.151Mild pressure with a weapon to defend with
Battle1.40Pure pressure, no extra loot

The enemy-count multiplier stacks multiplicatively on top of planet, rarity, and challenge multipliers. A caller-supplied weapon-box count overrides the objective default.

Mission difficulty tiers

DifficultyExtraction timer (seconds)Extraction timer (M:SS)
Routine1803:00
Standard2404:00
Hazardous3005:00
Critical3606:00
Black Flag4207:00

The 240-second Standard timer is the per-level default that the engine writes into the mission timer at run start. The board shows “SURVIVE M:SS until extraction” using this value.

Mission factions (in-universe contract authors)

Faction
Cygnus Freight Co.
Outer Rim Salvage
Sol Defense Authority
Independent Operators
Eden Reclamation Corps
Network Sysadmins
Delphi Mining Guild
Wasteland Brokers
Speedway Commission
Voidstar Research Div.

Mission postings (one per planet in planet order)

Posting indexFactionObjective vibeDifficultyExtraction timer (s)
0Cygnus Freight Co.ExploreRoutine180
1Outer Rim SalvageFindRoutine180
2Sol Defense AuthorityBattleStandard240
3Eden Reclamation CorpsExploreStandard240
4Delphi Mining GuildExploreStandard240
5Network SysadminsFindHazardous300
6Independent OperatorsProtectHazardous300
7Wasteland BrokersProtectHazardous300
8Speedway CommissionBattleCritical360
9Voidstar Research Div.ExploreCritical360
10Sol Defense AuthorityExploreBlack Flag420

Run-time difficulty escalation (tier counter)

StatValue
Per-level timer240 s (engine default node timer)
Starting tier1
Tier increment+1 each time the timer expires and difficulty ramps
Tier visibilityPost-run result, run history, per-planet best

Mission-result schema (post-run record)

SectionFields recorded
IdentitynodeId, heat, missionType, shipId, seed
Outcomesurvived, bossKilled, causeOfDeath, missionPhaseAtEnd, bossDifficultyMult, reviveTokenUsed, dailyBonusActive, wasRareSignal
Performancescore (0-100), rewardTier, objectivesCompleted, objectivesTotal, bonusObjectives, timeElapsedSeconds, timerRemainingSeconds, timeBonusEarned, deathDefianceUsed
ProgressionlevelReached, tierReached, artifactsCollected, weaponsFound, weaponsAtEnd, highestWeaponLevel, upgradesChosen, eventsCompleted, newlyUnlockedArtifactIds, artifactBestTierThisRun
CombatenemiesKilledByType, totalKills, bossId, damageDealt, damageTaken, abilityUses, weaponStats
EconomycoinsCollected, finalMultipliers (damage / hp / shield)
ExplorationdistanceTraveled, maxDistanceFromGenesis, poisVisited, subZoneEntered

Reward tiers

Tier name
bronze
silver
gold
diamond

Run-history buffer

StatValue
StoragelocalStorage
Capacity20 runs (FIFO, newest at index 0)
Per-run fields keptplayedAt, nodeId, shipId, score, rewardTier, survived, totalKills, damageDealt, damageTaken, timeElapsedSeconds, tierReached, levelReached, coinsCollected, weaponsFound, highestWeaponLevel, distanceTraveled
Per-planet bests trackedtier, kills, events, level (write only on strict improvement)
Aggregates computedaverages across stored runs, personal-best score / kills / time / tier / damage

New-account spawn dampener

Mission spawn rate is dampened based on the number of prior runs in local history.

Prior runsSpawn-rate multiplier
00.50
10.70
2 to 90.90
10 or more1.00

Prologue tutorial beats (first four missions)

BeatNameTracking statTargetReward
1First Flighttotal_kills510 gems
2Getting Strongermax_run_level215 gems
3New Weaponevents_completed11 ticket + 20 gems
4Welcome Homepulls_made150 gems

Beats 1 through 3 are completed inside a single continuous tutorial run; beat 4 covers the first deploy-mission, first pull, and hub-lite reveal. Target duration is 10 to 15 minutes.

Hub reveal levels (gated by mission progression)

Reveal levelTriggered byCurrency barBottom navShopCollectionMissions buttonSystems button
lockedAccount creationhiddenhiddenhiddenhiddenhiddenhidden
hub_litePrologue completehiddenhiddenhiddenhiddenhiddenhidden
hub_midChapter 1 completeshownshownshownshownshownhidden
hub_fullChapter 2 completeshownshownshownshownshownshown

Challenges (per-planet contracts tied to mission stats)

Each planet has 15 challenges (3 categories x 5 rarities). Three planets are fully tuned; the remaining eight share the Landing Site target table as placeholder.

RarityGem rewardXP bounty (Landing Site base)
common530
uncommon1560
rare40150
epic100400
legendary300800
PlanetXP bounty multiplierTier targets (C / U / R / E / L)Single-run kill targets (C / U / R)Lifetime kill targets (E / L)Single-run event targets (C / U / R)Lifetime event targets (E / L)
Landing Site1.03 / 5 / 8 / 12 / 2050 / 150 / 3002,000 / 10,0001 / 3 / 525 / 100
Sunrise City1.54 / 6 / 10 / 15 / 2575 / 200 / 5003,000 / 15,0002 / 4 / 630 / 120
The Voidstar2.05 / 8 / 12 / 18 / 30100 / 300 / 7505,000 / 25,0002 / 5 / 840 / 150

Tier challenges are always per-run. Kill and event challenges are per-run at common/uncommon/rare and lifetime at epic/legendary.

Per-objective engine knobs (in-run)

StatValue
Kill count required before sub-events spawn25
Event-unlock lifetime-kill gate25
Star-rewards lifetime-kill gate25
Starting-artifact tier when granted0 (uncommon visuals, common stats)

How it works

Picking a mission

  • The hub’s mission-board screen always shows exactly two posting cards.
  • When the player taps a specific planet in the hub, the pair is biased so at least one card is for that planet; the other is deterministically chosen from any other planet using a seeded hash so refresh and back navigation do not reroll the offer.
  • When the player opens the board without a planet preference, both cards are picked deterministically from the full 11-posting pool via the same seeded hash.
  • If a planet has zero matching postings (defensive), the picker falls back to the unbiased two-card draw.
  • Cards show: planet display name, hiring faction, difficulty pill, positive objective label, one-line in-universe blurb, payout line, posted-by author tag. Loss conditions are never surfaced on the card.

Running a mission

  • The run starts with a spawn invulnerability window before the first enemy appears.
  • The mission timer counts down from the posting’s extraction timer (3, 4, 5, 6, or 7 minutes by tier) and is surfaced as the “SURVIVE M:SS until extraction” banner.
  • Each completed timer cycle increments the tier counter and ramps difficulty; the run can continue across multiple tiers in a single deployment.
  • Spawn quantity follows a tent-pole curve (zero at start, ramping to full pressure by 120 s); spawn quality (enemy tier) ramps linearly across the run.
  • Weapon boxes are placed at the world start per the objective tuning (0, 1, or 2). Artifact boxes are placed per-level by a separate roll.
  • Sub-events start spawning after the player crosses the 25-kill threshold within the run.
  • On a Find objective, enemy count is multiplied by 0.85 and 2 weapon boxes are placed. On Battle, the count is multiplied by 1.4 with no extra boxes. On Protect, 1.15x count with 1 weapon box. On Explore, the baseline is unchanged.

Ending a mission

  • The run ends on death or on objective completion. The engine builds a mission-result record at this moment.
  • The mission-result record is the single contract: it covers identity, outcome (survived, boss killed, cause of death, phase at end, revive flags), performance (0-100 score, reward tier, objectives, time elapsed and remaining, time bonus, death-defiance use), in-run progression (level, tier, artifacts, weapons, upgrades, events, newly unlocked artifacts, per-artifact best tier), combat, economy, and exploration.
  • After the mission-result is built, the end-of-level matrix dissolve plays for 2.0 s, fading to black in the final 0.5 s. The screen then fades back in over the post-run results.
  • A compact summary is unshifted into the front of the local run-history buffer and the buffer is trimmed back to 20 entries.
  • For each of the four headline stats (tier, kills, events, level), the engine writes a strictly-improving per-planet personal best keyed by node id.

Reward tier

  • Score is a 0-100 aggregate calculated at run end; reward tier is the bronze/silver/gold/diamond label derived from it.
  • Time-bonus, death-defiance use, revive-token use, daily-bonus, and rare-signal flags are all recorded on the result for downstream consumption.

Prologue gate

  • A new account is funneled through the four-beat prologue before the hub opens up.
  • Beats 1 to 3 happen inside one continuous tutorial run; beat 4 happens across one full mission deploy + one pull + the hub-lite reveal.
  • Beat completion is checked against the matching progress key; on completion the listed gem and ticket rewards are granted and the beat’s call-to-action advances.
  • Until the prologue completes, the hub reveal level stays at locked or hub_lite (no currency bar, no bottom nav, no shop, no collection, no mission button, no systems button).

Difficulty stacking summary

The final enemy-count multiplier is the product of: world-knob enemyCountMult x objective-tuning enemyCountMult x facility enemyCountPct x planet rarityScale x new-account spawn dampener. The same stacking applies to enemy HP and damage with their own world-knob mults.

Interactions

  • Planets: each posting is bound to one entry of the planet order. The hub passes the tapped planet id into the board picker; the run-definition writes the planet id into the run context (used for nebula archetype selection).
  • Ships: the run-definition carries the ship combat-stats, meta-stats, weapon slot count, non-weapon slot count, and starting weapon list. Hidden rarity scale derived from the ship’s rarity feeds the world knobs.
  • Weapons: starting weapon list is run-init data; objective-placed weapon boxes (Find = 2, Protect = 1) seed the world; weapon-cache rarity cap on context gates drop quality; per-weapon shots / hits / damage are recorded on the mission result.
  • Artifacts: starting-artifact id (chosen on the inline-artifact pick after the previous stage) is granted at tier 0 at run start; per-level artifact-box rolls drop additional artifacts; mission-result records newly-unlocked artifact ids and per-artifact best-tier-this-run, which flushes into the artifact-unlocks store.
  • Modifiers / upgrades: levelup-rarity-cap on context gates upgrade choices; upgradesChosen is recorded on result; facility upgrade-choices-bonus is applied via context.
  • Events: event pool and event tier are written into the run-definition; the 25-kill in-run gate unlocks sub-events; eventsCompleted is recorded on result and counted toward challenge progress.
  • Bosses: boss-config id, base multiplier, and per-miss penalty live on the run-definition; bossKilled, bossId, and bossDifficultyMult are recorded on result.
  • Vision / world: vision config (base radius, dim width, dark opacity, ambient light), biome, seed, level config, weapon-box count, and artifact-box count are all packaged on the run-definition node.
  • Facilities (metagame): credit and reward percent bonuses, build / move / upgrade time reductions, gem-skip cost, world-event spawn percent, chest reward percent, challenge XP percent, mission success chance, mission board slots, mission ship slots, mission reward percent, mission duration percent, ship drop chance, event reward quality, hull role and contribution percent, weapon damage bonus, enemy count percent, elite-rarity cap. These all flow into the run context.
  • Codex: per-enemy and per-weapon damage bonuses are read in.
  • Daily / session: dailyBonusActive, rareSignalRewardMult, deathDefianceTokens.
  • Telemetry: per-weapon shots / hits / damage stats are populated at mission end. The score, reward tier, and history summary feed the post-run UI and the per-planet PB writes.
  • Run history: the buffer feeds averages, personal bests, and the new-account spawn dampener (the dampener reads only the count, not the contents).
  • Prologue: completion of beat 4 is what flips the hub reveal off locked / hub_lite; chapter 1 and chapter 2 completion later move it to hub_mid and hub_full.
  • Challenges: tier counter, run kill count, lifetime kill count, in-run events completed, and lifetime events completed are all evaluated against the per-planet challenge thresholds; payouts are gems plus planet XP bounty.

What it does NOT do

  • Does not list loss conditions on the board cards.
  • Does not change difficulty by changing the objective vibe alone — objective tuning is a small (0.85x to 1.4x) modifier on top of the existing difficulty stack.
  • Does not roll a fresh mission pair on every refresh: the picker is deterministic for a given seed so back-navigation and refresh do not reroll the offer.
  • Does not allow both cards to be for the same planet when the board is opened with a planet bias; one card is the biased match, the other is from a different planet.
  • Does not gate event spawning by mission timer — event spawning is gated by the 25-kill in-run threshold.
  • Does not increase artifact tier mid-run; tier advances only through meta-progression XP between runs.
  • Does not store mission results on a server; the run-history buffer is local-only at 20 entries.
  • Does not preserve history entries beyond 20 runs; the oldest drops off when a new entry is added.
  • Does not overwrite a per-planet personal best with a worse value; the PB writer rejects non-improvements and silently drops on storage failure.
  • Does not dampen spawn rate forever for new accounts; the new-account multiplier reaches 1.0 once the local history has 10 or more prior runs.
  • Does not surface the prologue’s missions, shop, collection, or systems buttons until the hub reveal advances past locked / hub_lite.
  • Does not award reward-tier diamond automatically — score is computed from the run and the tier label is derived from it.
  • Does not vary the per-level mission timer based on planet; the per-level timer is the standard 240 s engine default. The posting’s extraction timer reflects the contract’s overall difficulty tier.
  • Does not allow the objective vibe to override a caller-supplied weapon-box count.
  • Does not consume the heat field on the run-definition node; it is carried for schema completeness only.
  • Does not record optional fields on the mission-result; every field is required.
  • Does not allow a posting card to be edited at runtime; postings are static module data, one per planet entry.
  • Does not run a separate post-mortem damage chain — combat stats are aggregated from in-run telemetry into the result at extraction.