game database
/ every number visible. all values are pulled from the source of truth - the file is cited under each table.
the zone
| knob | value | note |
|---|---|---|
| tile size | 32 px | the grid unit |
| width | 30 tiles | 960 px - full width always visible |
| depth | 36 tiles | 1152 px deep - scrolls; the tension axis |
| viewport depth | 22 tiles | 704 px visible - the wall looms from off-screen |
| extract strip | 6 × 2 tiles | generous: near-misses succeed, not cheap-kill |
source: src/config/tuning.ts · zone, extraction
the husk
| knob | value | note |
|---|---|---|
| base speed | 160 px/s | at upgrade level 0 - the anchor everything is tuned against |
| radius | 12 px | the husk's footprint |
| backpack | 6 slots | forces "is this node worth a slot?" |
source: src/config/tuning.ts · player, backpack
the two pressures
decay
| knob | value | note |
|---|---|---|
| rate | 1.2% / s | fraction of current haul value lost per second (compounding) |
the rot-tide
| knob | value | note |
|---|---|---|
| grace | 9 s | the wall is frozen this long so you can commit to a direction |
| base speed | 14 px/s | southward, after grace |
| acceleration | 0.6 px/s² | turns "go deeper" from a free option into a late trap |
| danger range | 280 px | within this gap the dread (vignette + drone) ramps up |
| caught | lose 100% | the whole haul is lost - the husk survives |
source: src/config/tuning.ts · decay, rotTide, catch
salvage nodes
nodes sit in depth bands from the deep (north) edge toward extraction. value scales super-linearly with depth; the deepest nodes are where the rot arrives first.
| band | count | value each | note |
|---|---|---|---|
| deep | 3 | 40 | high value, rot arrives first |
| mid | 4 | 22 | |
| near | 5 | 10 | low value, safe |
source: src/config/tuning.ts · nodes.bands (node radius 14 px)
the three upgrades
each bends a different edge of the risk/reward frontier; none trivializes the loop. cost to buy the next level is round(baseCost × costGrowth ^ level).
| upgrade | effect | max | cost ladder | total |
|---|---|---|---|---|
| swift | move faster · outrun the rot (×1.18 speed / level) | 3 | 120 · 198 · 327 | 645 |
| satchel | more slots · carry deeper hauls (+2 slots / level) | 5 | 150 · 233 · 360 · 559 · 866 | 2168 |
| cure | haul rots slower (×0.7 decay / level) | 3 | 180 · 279 · 432 | 891 |
source: src/config/tuning.ts · upgrades · cost formula src/economy/upgrades.ts costFor(). all three maxed = 3704 gold (first spike still ~run 2-3; max lands ~beyond run 25).
the refuge - cosmetic sink
gold's open-ended cosmetic destination. one-time named reclaims, then an uncapped tend. never run-power - granted zero advantage in a descent.
| tier | cost | note |
|---|---|---|
| hearth | 100 | reachable run 2-3 · first warmth |
| lantern | 350 | |
| garden | 900 | |
| grove | 1800 | |
| haven | 3500 | home whole · lands ~around upgrade-max |
| tend | ×1.6 each | past haven, uncapped sink - late gold never orphans |
source: src/config/tuning.ts · refuge
the bloodline
the husk is mortal: it ages over runs, dies of age, and passes to an heir. age is never read by any run system. gold "feeds the line" - it does not buy off death (mortality is inevitable), and feeding never touches age, so there is no maintenance-or-lose treadmill.
| knob | value | note |
|---|---|---|
| lifespan | 14 descents | runs a husk makes before it dies of age |
legacy tiers - feeding the line (cosmetic)
| tier | cost |
|---|---|
| remembered | 500 |
| tended | 1200 |
| rooted | 2500 |
| ancestral | 4500 |
| feed | ×1.7 each |
source: src/config/tuning.ts · bloodline
founding bloodlines
the gen-0 cohort - the "early ones". a durable, finite ordinal handed out by the ledger. display / meta only, exactly like the token - never gates play, never read by any run system. the earliest cohort wears a rarer cosmetic mark.
| band | ordinals | mark | flavor |
|---|---|---|---|
| first ash | #1 - 100 | ✦ | among the first to stand in the ash |
| deep root | #101 - 500 | ✧ | rooted before the line was known |
| early frost | #501 - 1000 | · | early, before the thaw |
source: src/config/founding.ts · cap = 1000, server-enforced. past the cap there is no band (the honest "you weren't early" case).
husk skins
the cosmetic look of your line's husk, chosen at first entry and re-selectable. cosmetic only - a texture/tint swap, never run-power. the sim is byte-identical regardless of skin. rarity-free: every skin is equal.
source: src/economy/huskSkin.ts · HUSK_SKINS (default = moss; tideworn is a bespoke sprite, the rest are tints of the base)
the glass-box sim
the conversion vault and seasons scaffold ship flagged off (ECONOMY.live = false) - a pure, tested simulation, no live money, no UI surface. listed here because the box is glass on purpose. see the economy page for what it means.
vault (simulation knobs)
| knob | value | note |
|---|---|---|
| initial pool | 1,000,000 | finite simulated treasury (display-only, not a real supply) |
| release fraction | 2% / epoch | of what remains - floating, never a fixed payout |
| epoch | ~daily | 86,400,000 ms |
| min release floor | 1 | below this, the epoch releases 0 (pool kept) |
seasons (cosmetic)
| knob | value | note |
|---|---|---|
| season length | ~weekly | 604,800,000 ms · deterministic off a fixed epoch |
| activity / run | 5 | showing up |
| activity / extract | 10 | a clean extraction (honest play, never a burn) |
| activity / salvage | +1 / 50 gold | the size of an honest haul |
| badge threshold | 200 | season activity to earn the cosmetic badge |
| pool target | 5000 | collective activity that fills the season pool |
source: src/config/economy.ts · ECONOMY.vault, ECONOMY.seasons · seasons grant only badges/titles, never gold, never power.