Manual

GoSurvive Manual

Everything the game does, in plain words.

26 sections

Read me first

In short: GoSurvive isn’t out yet. This page explains everything the game does, in plain words, for the people building it.
Not published = English only. Don’t touch the translation files (messages/uk.json, es, pt-BR, zh-Hans, de). New text goes in messages/en.json only — other languages fall back to English on their own. We translate everything in one go right before launch.
  • This page is plain English in code, not in messages/. Edit the section files in src/routes/manual/sections/.
  • Numbers here are read from the game’s config, so they can’t go stale. The words can: if you change how something works, fix its section in the same commit.
  • The page is public (the website links it). Never write anti-cheat limits or how the server checks the phone here.
  • Want more detail? GAME_DESIGN.md § Survival has every rule; README.md has the tech.

Code: src/routes/manual/, messages/en.json, locale-parity.test.ts


The game in a minute

In short: Walk around your real city. Every building you pass gets searched for supplies. Eat and drink to stay up, level your skills, and make your own gear. Run dry and you pass out and lose your bag.

The point: get people outside walking — without staring at their phone. The game plays itself while you walk; you open it to eat, cook and plan.

The story

  • Something called the Event wiped everyone’s memory. People who couldn’t think it through turned into the dead. The smartest kept their minds but lost every fact — they can still read and reason, and that’s it.
  • The dead are drawn to thinking minds. That’s why they hunt you.
  • A bite doesn’t turn you. There’s no infection — not now, not ever.
  • Running dry doesn’t kill you. You collapse, a stranger robs you of all but your most valuable things and leaves a soda. You never lose your skills.
The big idea: you can only pick up what you can still name. Learn a skill and the things it uses start showing up in your loot. This is the game’s main progression — not a side system.

The loop

  1. Walk. Buildings you pass get searched by themselves, even with the app closed. About 1 in 50 holds something.
  2. Loot lands in your backpack.
  3. Eat and drink. Both bars drain all day, full to empty in 24 hours.
  4. Read books you find for skill XP.
  5. Make things: fire, food, clean water, wood, fish, gear.
  6. Level up. Every level that matters unlocks something new to find, use or make.
What’s live: every rule in this manual. Zombies and tower defence aren’t built yet — see Coming next.

The screen

In short: Two bars up top (calories and water), one backpack button bottom-right, and the map is your city.
  • Top bar: calories and water side by side, burning down live. A bar turns red when it’s running low. Tap either to open the backpack.
  • Backpack button (bottom-right): tap to open the backpack. Hold it, or slide off it, and it fans out Skills, Activity, the 2D map, compass follow and Bug report — let go on one to open it.
  • Your avatar shows your total level: all your skill levels added up.
  • The map: walking past a building searches it. A searched building bounces, puffs a bit of dust and fades grey. Tap any building for its sheet.
  • Loot shoots out of the roof it was found in, hovers there, then flies into your backpack. Better finds get confetti or light rays. If the building is off-screen, it pops under the top bar instead.
  • XP pops under the top bar every time you earn any: the skill's icon and how much you got. More of the same skill lands on the same pop and counts it up, and XP from a walk with the app closed pops when you're back.
  • A new level gets a big "Level up!" card over everything: the skill, its new level, and what that level just unlocked. A level that unlocks nothing shows what's next and at which level. Tap anywhere to close it, or it goes by itself after a few seconds. Levels you reached on a walk with the app closed show up when you're back.
  • Tap the world itself. There are no action buttons on the map: tap trees to chop wood, water to fish or fill a bucket or bottle, and stuff on the ground to pick it up. Too far away and it says how many meters short you are.
  • A job running (chopping, fishing, scavenging) shows right under your avatar: its tool in a dial whose rim fills up, and the time left. Tap it to see how it's going or stop it — a scavenge opens its building's card.
  • Chat (bottom-left): its last three lines sit over the map, and ride just above any sheet you open; tap them to open it. When a sheet covers them, the answer to a tap in it (what you examine, why a use did nothing) pops up on the thing you tapped instead, and the chat keeps it. Chat is one feed, RuneScape-style: Global, your country, and the game talking to you — Combat in red (a zombie reaching you and its line, every blow and bite, every kill) and Game in yellow (levels, finds, fires, books, things made, jobs done, what you examine, and why a tap did nothing). The game never pops messages up mid-screen: it all lands here. Tap a chip to hide one, tap again to bring it back. The picker by the text box says where you write: Global or any country. DMs are separate and never filtered.
  • Reduced motion or battery saver turns off the bounces and shakes.

Kept from the old game: chat (now with combat and game lines) and the walking pills (GPS, steps). Everything else from it is hidden — see Leftovers from the old game.

Code: VitalChips.svelte, BackpackButton.svelte, ActivityChip.svelte, HudFan.svelte, LootDrops.svelte, XpDrops.svelte, land-tap.ts, SurvivalLayer.svelte, ChatFeedPane.svelte, survival-log.ts, say.ts


Calories, water & passing out

In short: You hold up to 2,000 kcal and 3 L of water. Both burn around the clock, app open or not — full to empty in 24 hours. Hit zero on either and you pass out.
  • You burn 83.3 kcal and 125 ml every hour, day and night.
  • A new survivor wakes like one who just passed out: 210 kcal and 500 ml of water, so food and water come first.
  • Hold an item in the backpack and pick Eat or Drink.
  • The bars never go over the top — extra is wasted.

What fills you up

ItemDoCaloriesWaterLeaves behind
Bottled waterDrink—+500 mlEmpty bottle
Can of sodaDrink+140+330 ml—
Bucket of clean waterDrink—+1,000 mlBucket
Pot of clean waterDrink—+1,000 mlCooking pot
Bag of chipsEat+300−50 ml—
Can of beansEat+450——
Protein barEat+250——
Cooked rat meatEat+250——
Cooked perchEat+300——
Cooked troutEat+450——
Cooked pikeEat+650——
Pot of stewEat+600+600 mlCooking pot

Can’t be eaten: Raw rat meat, Burnt rat meat, Raw perch, Raw trout, Raw pike, Burnt fish, Pot of raw stew. Cook the raw stuff (see Fire & cooking); burnt food is junk.

Passing out

  • You don’t die. Someone robs you: the backpack, what you wear, the book you were reading, and your fire goes out. A running woodcutting or fishing job stops, and what it made goes too.
  • They take everything — unless you have perks. Hidden pocket keeps your most valuable things, one more a level, counted one by one: a hatchet beats a bottle of water, and between two of the same the one in better shape stays. Bookmark keeps the book you were reading.
  • They leave a soda. You wake with 210 kcal and 500 ml of water the next time the game hears from you (Fuller soda and Kin’s kit add to that).
  • You keep every skill, all your XP and every perk. See Perks.
  • It’s worked out on your next request, from the exact moment a bar hit zero, in the order things happened — a book that finished before then still counts.
  • The server keeps the news until your phone has shown it, so you always see what you lost, even after a walk with the app in the background.
For devs: the bars are a snapshot plus a timestamp, burned down whenever they’re read. Nothing ticks on the server.

Code: vitals.ts, items-food.ts, items-water.ts, advance.ts, PassOutDialog.svelte


Backpack

In short: 7 slots, more with a bag on your back. Most things take one slot each; small stuff stacks. A full backpack means new loot is lost.

How to use it

  • Tap an item to pick it up for “use”, then tap what to use it on: another item or your fire (see Use X on Y).
  • Hold an item for its menu: eat, drink, read, empty, use, drop, examine — only the ones that make sense for that item. Keep your finger down and slide it to one: letting go there picks it. Let go anywhere else and the menu waits for a tap.
  • Drag it onto another slot to move it. Same item tops up the stack; anything else swaps places.
  • Drag it out of the backpack, onto the map, to drop it. The item shows a Drop tag once it’s out; change your mind and bring it back in.
  • On a computer: click, hold and drag work the same, and a right-click opens the menu too. Keyboard: Enter picks an item up, the menu key opens its menu, arrows walk it, Escape closes it.
  • Drop puts the whole stack on the ground where you stand.
  • A find with no room is lost and pays no XP.
  • Water and trees aren’t used from the backpack — tap them on the map.

Bags

  • Sew a bag with Crafting and wear it on your back (Gear) for more slots. One bag counts, the biggest one.
  • Taking a bag off, or swapping it for a smaller one, only works once everything you carry fits in what’s left.
  • A recipe that would make something with nowhere to put it doesn’t run. Make room first, then nothing you make gets lost.
  • Pass out and the bag goes with everything else: you’re back to 7 slots.
  • Carrying more than fits (a backpack from before bags)? The extra slots show in red. Nothing new goes in, and each one disappears once you eat, use, drop or move what’s in it.

Bags

BagSlots wornCrafting level
Pouch1210
Backpack2015

Stuff on the ground

  • A dropped stack shows on the map as a sticker of the item, right where it was dropped, and lies there 24 hours.
  • For 1 min only you see it, so you can grab back the wrong thing. Then anyone nearby can take it. Nobody sees who dropped it.
  • Walk up and tap the sticker. Too far away and it tells you how many meters short you are. It’s the whole stack or nothing, so it has to fit in your backpack.
  • You can only take what you could have found or made yourself. Anything else is a bundle with a question mark until you know enough to tell what it is. Your own drops you can always take back, until you pass out: whoever robs you takes every stack you left lying too, wherever it is.

What stacks

ItemPer slot
Matches1,000
Twine20
Purification tablets20
Rags10
Split log2
For devs: every item is data — a stack size and the verbs it answers to. A filled container is its own item: an empty bucket and a bucket of dirty water are two ids. So anything can be used up or turned into something else by config alone.

Code: inventory.ts, backpack.ts, items.ts, InventorySheet.svelte, slot-gesture.ts, SlotMenu.svelte, ground.service.ts, ground-items-layer.ts


Wear & spoiling

In short: Nothing lasts. Tools and weapons wear down every time you use them and break at zero. Food goes off with time — raw meat and fish within a day, so cook it.

Wear

  • A tool or weapon starts at 100 durability. Every use takes a bit off: each log you cut, each fish you land, each blow you strike with it in hand, each recipe it comes out of whole (a hatchet splitting a log, a filter you pour a bottle through).
  • At zero it breaks and is gone. The chat says Worn out: …, and a woodcutting or fishing job stops if you carry nothing else that will do.
  • Anything you make comes out whole.

How fast things wear

ThingWear a useUses
Whetstone1010
Rusty hatchet250
Hatchet1100
Felling axe (retired)0.5200
Fire axe (retired)0.5200
Wooden club1100
Wooden spear1.567
Wrapped spear1100
Improvised fishing rod425
Fishing rod1100
Carbon fishing rod (retired)0.5200
Pocket knife (retired)250
Bow drill (retired)520
Water filter520

Spoiling

  • Food keeps a set number of hours from when it lands in your backpack — found, caught or cooked. A fish you caught with the app shut has been ageing since you caught it.
  • Cooking gives you fresh food, however close the raw piece was to going off. So the trick is to cook a catch the same day.
  • Spoiled food can’t be eaten or cooked. Drop it — or tip out a spoiled stew to get the pot back.
  • Water, drinks and burnt food never go off.

How long food keeps

FoodKeeps
Bag of chips100 h
Can of beans100 h
Protein bar100 h
Raw rat meat10–30 h
Cooked rat meat100 h
Raw perch10–30 h
Cooked perch100 h
Raw trout10–30 h
Cooked trout100 h
Raw pike10–30 h
Cooked pike100 h
Pot of raw stew10–30 h
Pot of stew100 h

Seeing it

  • A thin bar along the bottom of a slot shows what’s left. It turns red under a quarter. Spoiled food turns a sick olive and loses its bar.
  • Hold the item: the menu says exactly — Keeps 19 more hours, Spoiled, Durability 73/100.
  • Dropping something doesn’t reset it. It comes back up as worn and as old as it went down.
For devs: wear and freshness live on the stack (durability, spoilsAt), not the item, so they travel with it — worn, dropped, picked up. Two stacks merged keep the worse of the two. Food spoils by timestamp: nothing ticks on the server.

Code: condition.ts, items-food.ts, items-gear.ts, ItemTile.svelte


Gear

In short: 10 slots on your body. Wear a tool and it leaves the backpack, so you carry more. It still works from your hand. A bag on your back makes the backpack bigger.

How to use it

  • Open Gear from the backpack button’s hold menu. Your survivor is the stencil; each slot sits where that thing is worn.
  • Tap a thing in the backpack to wear it. A tool goes into your first free hand; with both full it takes the right one, and the old tool drops into the slot the new one left.
  • Tap a worn thing to take it off. It needs a free backpack slot, and a bag only comes off once everything you carry fits without it.
  • Only what you can wear shows here. Food, wood and books stay in the backpack.
  • Under the stencil sit your stats: attack speed (seconds between blows), damage a hit and your lure. They’re the numbers the fight runs on, so a level or a weapon in hand moves them — see Zombies.
  • Hold a thing in the backpack to examine it. The backpack’s own hold menu has Wear too.
  • A worn hatchet or rod still starts a cut or a fishing session. A recipe needs the thing in a backpack slot, so take a hatchet off before you split or carve with it.
  • Pass out and what you wear is robbed with the rest.

What can be worn

ItemWorn
WhetstoneEither hand
Rusty hatchetEither hand
HatchetEither hand
Felling axeEither hand
Fire axeEither hand
Wooden clubEither hand
Wooden spearEither hand
Wrapped spearEither hand
Improvised fishing rodEither hand
Fishing rodEither hand
Carbon fishing rodEither hand
Pocket knifeEither hand
Bow drillEither hand
Water filterEither hand
Pouchback
Backpackback
For devs: ten slots in gear.ts; an item names its slot with wear, a tool says hand. Clothing is content: give an item a slot in the admin panel and it is wearable. What clothing does is still open.

Code: gear.ts, GearSheet.svelte, GearStencil.svelte, SurvivorStats.svelte, items-gear.ts


Zombies

In short: The dead stand around every building and come for you once you’re inside your lure — 40 m to start, 0 m more per skill level, 45 m at most. Within 5 m you trade blows on your own — only a brute is slow enough to outwalk, and barely.

Where they are

  • Every building holds about one for each 300 m² of footprint (at most 12); hospitals and schools more, sheds fewer. A few stand on open ground.
  • They’re rolled fresh every day, in the small hours, and everyone sees the same ones. One you put down stays down for everyone until then.
  • Who they were comes from the building: an office’s dead were project managers and sysadmins, a hospital’s nurses. Each still says one line.

The kinds

KindPaceBiteAttack speedHit pointsBare-handed blowsShare
Shambler1.8 m/s25 kcal3.5 s20about 280%
Runner6 m/s25 kcal1.5 s20about 215%
Brute1.35 m/s75 kcal4.5 s60about 125%

Weapons

  • Every blow has a type — Bash, Stab or Chop — and every kind takes more or less from each: a brute shrugs off a club and fears a hatchet; a runner folds under a club and dodges a point. Bare hands are Bash. Pick the tool before the fight; nothing changes during it.
  • Only the weapon in your hand swings — the right hand first, then the left. Nothing in either hand that counts as a weapon means bare hands.
  • Hatchets are weapons too: the rusty one as found, the sharp one honed from it. The rest are made: split a log, then grip a club or carve a spear — see Crafting. The felling and fire axes are retired, so only one you already carry swings.

Damage types

TypeWhat it doesWeaponsBest againstWeak against
BashHits hard and flatBare hands, Wooden clubRunner ×1.5Brute ×0.5
StabGoes in deepWooden spear, Wrapped spearShambler ×1.25Runner ×0.75
ChopHacks throughRusty hatchet, Hatchet, Felling axe, Fire axeBrute ×1.5Runner ×0.75

Weapons

WeaponTypeAttack speedDamage
Bare handsBash1.5 s5–15
Rusty hatchetChop2 s10–22
HatchetChop1.9 s12–24
Felling axeChop2.6 s16–34
Fire axeChop2.8 s20–40
Wooden clubBash2 s10–20
Wooden spearStab1.8 s8–16
Wrapped spearStab1.64 s8–16

What each kind takes from a blow

KindBashStabChop
Shambler×1×1.25×1
Runner×1.5×0.75×0.75
Brute×0.5×1×1.5

The lure

  • The dead are drawn to thinking minds. Your lure is the faint red ring around you: 40 m plus 0 m per level across all your skills, capped at 45 m. The better you get, the farther they feel you.
  • Anything standing inside it wakes and comes. They only move while the game hears from you, so opening the app among buildings is what brings them.
  • From the moment one wakes for you it wears a health bar over its head — green for what it has left — with a tag that says what it is: a figure reaching and dragging a foot for a shambler, one sprinting for a runner, a heavy one with its arms hanging for a brute. You see them through buildings too.
  • Walk away faster than one and it falls behind; far enough and it gives up where it stands.
  • Tap a building and Hide to shut yourself in at its door. Nothing reaches you in there, however your GPS wanders, and they wait outside its wall for the moment you come out. You can’t shut the door with one already on you: fight it off or get clear first.
  • You’re out again when you tap Step out on that building, start anything outdoors, or walk off. Standing inside a building without hiding keeps nobody out.

The fight

  • It fights itself. Every zombie within 5 m bites at its attack speed from the moment it gets there, none waiting its turn, and you strike back at yours. Nothing to tap.
  • Attack speed is the time between your blows, as games count it. Bare hands swing every 1.5 s and hit for 5 to 15; a weapon swings at its own speed for its own damage and type. Agility makes either faster: +0.5% attack speed for every level past the first, never faster than one every 0.5 s.
  • Every blow you land splashes its damage over the zombie, and it flashes and staggers. Every bite flashes the edges of your screen red.
  • The chat keeps the score: each one that reaches you and its line, every blow, every bite and every kill is a red Combat line (see The screen).
  • Every kill pays Fighting XP. If the dead empty your calories you pass out as usual: someone drags you clear, and they lose you.
  • A bite costs calories, nothing more. No infection, no turning.
For devs: the server rolls, wakes and fights them on its own tick, run first on every open-app survival request. The fight is a pure function of when each zombie got there, your attack speed and a seeded roll per blow, so the phone plays the same function to show each blow as it lands; the server's next answer overrules it. Every number is live content (Admin, Survival, Zombies).

Code: zombies.ts, spawn.ts, pursuit.ts, fight.ts, zombie-step.ts, zombie-manager.ts


Tower defence

In short: Build a spear turret, set it down on a 4 m square near you, and it shoots the dead coming for anyone inside its ring. They bite it as they pass; mend it with a split log.

Building and placing

  • Craft it (table below), then hold it in the backpack and pick Place.
  • Your action circle fills with 4 m squares: green where it can stand, red where a building, water or another turret is in the way. Tap a square to move it there, then hold the button to set it down.
  • One turret to a square, and you can keep 3 standing at once.

The recipe

UseOnNeedsYou getFails
Wooden spearSplit log (either order)Crafting 25Spear turretNever

What it does

  • It fights for everyone: any zombie inside its ring that’s coming for someone gets shot, on the turret’s own clock, oldest in the ring first. The ring on the map is exactly how far it shoots.
  • Its kills pay Fighting XP to whoever the zombie was after.
  • Every zombie within 5 m of a turret that isn’t biting someone bites the turret. At 0 it falls apart. The dead walk around it, so one set back from their way, still in range, stays whole longer.
  • Tap a turret for its sheet: its hit points, and one button — Mend while it’s hurt (anyone can), or Take back once it’s whole and yours.

Turrets

TurretRingShotHit pointsA bite takesMend
Spear turret15 mevery 3 s · 8–16 Stab100Shambler 5 · Runner 3 · Brute 151 split log: +25 (Crafting 25)

Code: src/lib/shared/config/survival/defences.ts, src/lib/shared/survival/defences/, src/lib/shared/survival/zombies/battle.ts, GAME_DESIGN.md § Tower defence


Looting

In short: Just walk. Every building you pass gets searched, and about 1 in 50 holds something. What you can find depends on what you know.
  • It rides on the walking tick that scouts buildings: same buildings, same moment, no tapping. Works with the app closed.
  • Each freshly passed building has a 2% chance of a find. At most 3 finds per tick, so opening the app downtown can’t fill your bag in one go.
  • A searched building restocks 24 hours after it was searched.
  • Each find pays Looting XP.
  • Walking, cycling or in a car, it all loots the same. A faked location or a GPS jump pauses it.
  • Finds made in the background pop when you come back to the app.
  • Standing still at a building digs deeper, off the same table — see Scavenging.
You only find what you can name. An item stays out of the draw until your Looting level is high enough. Tools stay invisible until you know the skill that uses them — no hatchet before Woodcutting, no twine or scrap before Crafting. Better tools never turn up at all: you make them (see Crafting).

Everything you can find

FindFrom LootingAlso needsPer findWeightRarity
Wood1—125Common
Bottled water1—18Uncommon
Raw rat meat1—18Uncommon
Twine1Crafting2–48Uncommon
Bag of chips1—16Uncommon
Rusty hatchet1Woodcutting15Uncommon
Campfire Cooking1—11.5Rare
Firestarter's Guide1—11.5Rare
Woodcutter's Manual1—11Rare
Angler's Almanac1—11Rare
Maker's Notebook1—11Rare
Scavenger's Handbook1—10.75Epic
Matches2—3–812Common
Bucket3—16Uncommon
Scrap metal4Crafting15Uncommon
Whetstone4Crafting12Rare
Can of soda5—13Uncommon
Rags6Crafting1–35Uncommon
Can of beans6—13Uncommon
Protein bar8—12Rare
Purification tablets12—2–52Rare

Weight is how often it turns up next to everything else you can currently find. Rarity is worked out from the weight and only changes how loud the loot pop is.

Code: loot.ts, looting.ts, foot-traffic.service.ts


Buildings

In short: Tap any building to zoom in on it (out, for a big one, so it all fits): its name and type sit over the roof, and under it the scavenge.
  • Scavenge: one button on top of the card, arrows to pick the length and what it should find — or "Backpack full after 2 finds" when your backpack runs out of room first, at that length and every longer one. See Scavenging. Out of reach, it says how many meters short you are.
  • Searched or not is the map’s color, not the card’s: solid ash grey hasn’t been searched yet, a paler grey you can see the map through has. A searched building restocks 24 hours later.
  • Name and type: the building’s name, or its address when it has no name, and its type on a sticker under that. Tap the type to see what else is inside (a museum with a restaurant and a hotel) and what a scavenge there can bring home: each find with its chance of turning up in the time set on the button, at your Looting level. Tap again to fold it away.
  • What else the map knows: year built, architect and heritage status under the scavenge button, and a photo and Wikipedia text when there is one. Anything the map doesn’t know is left out. Landmarks get a sticker.
  • Tap the name to read the building’s history, when it has one (a book on the name says so). Tap another building to swap. Tap empty map or the same building again to close, and the camera goes back to you.
  • Looking is free: it changes nothing and counts for nothing.
Every building has the one card. What a special building (pharmacy, supermarket, library…) adds is what its scavenge leans to. Height isn’t shown because the stored height is the old game’s, not the real one.

Code: BuildingCallout.svelte, BuildingKinds.svelte, RunFinds.svelte, find-odds.ts, building-camera.ts, building-fit.ts, ScavengePanel.svelte, ActivityButton.svelte, building-about.ts, GET /api/survival/building


Skills & XP

In short: Eight skills, levels 1 to 99, all known from day one: no book to find first. Every action pays XP to the skill it uses, and every step pays Agility.

The skills

SkillOne action isActions an hourXP an action
Lootinga find1559.5
Cookinga cook1207.4
Firemakinga fire lit or fed6014.9
Woodcuttinga log3029.8
Fishinga fish3029.8
Craftinga thing made1559.5
Fightinga kill3029.8
Agilitya step2,5000.357

How fast you level

  • The level curve is RuneScape’s: level 2 takes 83 XP, level 99 takes 13,034,431. Half of that XP sits past level 92.
  • Level 99 takes 8 hours a day for 5 years (14,600 hours) — 892.8 XP an hour, in any skill.
  • Each skill says how many actions an hour of play holds. One action’s XP is just the split:
XP an action = XP an hour ÷ actions an hour
To retune, change XP_TARGET_HOURS_TO_MAX or a skill’s actions an hour. There’s no per-action XP number to edit.
  • XP is stored in tenths (so 1.5 XP never drifts). A skill caps at 200,000,000 XP.
  • Failed attempts pay nothing.

Agility

  • Every step the game counts trains Agility: 357.1 XP a thousand steps. An hour of play holds 2,500 steps, so 20,000 steps a day reaches level 99 in 5 years.
  • Steps walked with the app closed count too; their XP lands the next time the app talks to the server. Steps from before you had a survivor don’t.
  • Its guide says how many steps the next level is, not how long. The XP is worked out on all your steps at once, so lots of small syncs pay exactly what one big one would.
  • It makes you hit faster: +0.5% attack speed for every level past the first — see Zombies. The guide’s What it does shows yours.

The Skills sheet

Each skill you know is one bar: your level on its badge, the fill showing how close the next level is, and what that level brings waiting at its far end (just the number when that level brings nothing new). A skill still being built stands dimmed on a shelf below. Tap a bar for its guide: XP banked, about how much play the next level takes, how to train it (its book among the ways), what its level does outside its own job (Agility’s attack speed), and every level that unlocks something — ticked when you have it.

Code: skills.ts, xp-curve.ts, walking.ts, skill-guide.ts, SkillsSheet.svelte, SkillDetailSheet.svelte


Books

In short: A book pays its skill XP. Reading one takes 6–10 hours of real time and keeps going with the app closed. Books teach nothing new: you know every skill from day one.
  • One book at a time. The read takes 8 hours on average, anywhere from 6 to 10, and you win XP worth hours of playing that skill (table below).
  • Stop reading and the book goes back in your bag — progress is gone. The hours stay the same next time: they’re rolled once and kept until a read finishes, so you can’t restart until you get a short one.
  • Pass out mid-read and the book is stolen with everything else.

Book prize

ChancePrizeXP
70%1 h of play893
22%3 h of play2,678
7%8 h of play7,142
1%40 h of play (jackpot)35,711

Books come from looting — see the Looting table for which ones and how rare.

Code: config/survival/reading.ts, shared/survival/reading.ts, ReadingBanner.svelte


Perks & the Tally

In short: Every one of the dead you put down adds to your Tally: a shambler 1, a runner 2, a brute 3. The Tally buys perk points; spend one to open a perk or lift it a level. Perks stay when you pass out. The backpack doesn’t.

How it works

  • Open Perks from the backpack button’s hold menu.
  • The Tally never goes down: perk points are bought off it as it grows, dearer as you go (the table below). A pass-out adds nothing to it.
  • Perks grow on one tree: a perk opens once the one it grows from has its first level. Hidden pocket, Kin’s kit, Mend and Daily round are open from the start.
  • Tap a perk to pick it. A picked perk you can take shows the one button that spends the point, and there’s no taking it back.
  • Pass out and the robbers take everything your Hidden pocket doesn’t keep. Then you see the life you just lived: how long it lasted, your steps, the dead you put down, what you found and made, and what ran out.

The perks

PerkBranchGrows fromEach level
Hidden pocketKeep—The robbers leave you one more of your most valuable things
BookmarkKeepHidden pocketThe book you’re reading isn’t taken, and the read goes on
Second chanceKeepSoft landingOnce a day, the bite that would put you down drags you clear instead
Kin’s kitWake—You wake with one more thing: matches, then rags, twine, a bottle of water
Fuller sodaWakeKin’s kit100 more kcal when you come round
Soft landingWakeKin’s kit10 more minutes before the dead come after you wake
MendMake—Tools and weapons wear 10% less
SalvageMakeMendA tool that breaks leaves a part behind: rags, twine, a bottle or scrap metal
RoomyMakeHidden pocketOne more backpack slot
Daily roundRoam—10 more of the day’s first dead pay double
FarsightRoamDaily roundYour action circle grows 1 m

What a perk point costs

PointTally
1 to 10100
11 to 30200
31 on300
For devs: the rules are code defaults in config/survival/perks.ts. The engine pays the Tally in the fight and counts each life from its own events; a pass-out closes the life into the notice and a survivor_lives row.

Code: perks.ts, life.ts, pass-out-keep.ts, PerksSheet.svelte, LifeRecap.svelte


Use X on Y

In short: Tap an item, then tap what to use it on. Every pair is one recipe. Some need a skill level, some can fail, and every success pays XP.
  • You can use an item on another item, on your fire, or on water near you.
  • Either order in a recipe table means you can tap either one first.
  • A recipe’s skill level is the level that unlocks it. Below it, the game says no and tells you why.
  • Failing gets rarer every level and never hits zero — cooking can always burn, a fire can always fail to catch.
  • A success pays one action of that skill’s XP. A failure pays nothing.
  • What you make lands in the slot the used item left, so a container stays where it was. Anything with no room is lost.
For devs: the build fails if two recipes share a pair, an item has no way to get it, or a skill can’t be trained from level 1 (progression.test.ts). Add a recipe in the recipes-*.ts file for what it makes.

Code: interactions.ts, interact.ts, recipes-*.ts, progression.test.ts


Fire & cooking

In short: Light a fire, then cook on it. A fire burns 3 min; feeding it wood adds more, up to 15 min ahead.

Fire

  • You have one fire. While it burns it sits as a chip in the backpack with its time left — pick an item, then tap the chip to use it on the fire.
  • Matches on wood lights it. A failed strike wastes the match and the wood.
  • Lighting it again while it burns never cuts its time short.
  • Later you can feed it wood to keep it going. The bow drill lights it with no match at all, but it’s retired: only one you already carry still works.
  • It goes out when its time runs out, or when you pass out.

Fire recipes

UseOnNeedsYou getFails
MatchesWood (either order)Firemaking 1Lights a fire (3 min)50% at first; wastes Matches + Wood
WoodThe fireFiremaking 10+3 min of fireNever
Bow drillWood (either order)Firemaking 20Lights a fire (3 min); keeps the bow drill58% at first; wastes Wood

Cooking

  • Raw meat and fish go on the fire. A failed cook leaves something burnt (junk).
  • The fire is one you light yourself, so a cook needs Firemaking too.
  • Bigger catch, easier to burn: a pike needs a better cook than a perch.
  • Stew takes two steps: raw rat meat or perch into a pot of clean water, then the pot on the fire. It’s a meal and a drink in one and gives the pot back. A burnt stew leaves only the pot.

Cooking recipes

UseOnNeedsYou getFails
Raw rat meatThe fireCooking 1Cooked rat meat60% at first; leaves Burnt rat meat
Raw perchThe fireCooking 1Cooked perch60% at first; leaves Burnt fish
Raw troutThe fireCooking 15Cooked trout61% at first; leaves Burnt fish
Raw rat meatPot of clean water (either order)Cooking 20Pot of raw stewNever
Raw perchPot of clean water (either order)Cooking 20Pot of raw stewNever
Pot of raw stewThe fireCooking 20Pot of stew57% at first; leaves Cooking pot
Raw pikeThe fireCooking 30Cooked pike59% at first; leaves Burnt fish

Code: recipes-fire.ts, recipes-food.ts, world.ts (STATIONS), FireTarget.svelte


Clean water

In short: Water from a lake, river or the sea is dirty. Boil it in a pot, drop in a tablet, or pour it through a filter. No skill needed, and nothing can fail.
  1. Fill up: tap water inside your action circle while you carry an empty bucket or bottle. The sheet that opens fills one container per tap.
  2. Bucket route: pour the bucket into a cooking pot, boil the pot on your fire, drink the pot. The pot is yours to make: beat it out of scrap metal (see Crafting).
  3. Bottle route: drop in a purification tablet (used up) or pour it through a water filter (kept). No fire needed.

Drinking gives the container back, so the loop never ends. The first bottle you refill is usually a bottled water you found and drank.

Water recipes

UseOnNeedsYou getFails
BucketWater nearby—Bucket of dirty waterNever
Empty bottleWater nearby—Bottle of dirty waterNever
Bucket of dirty waterCooking pot (either order)—Bucket + Pot of dirty waterNever
Pot of dirty waterThe fire—Pot of clean waterNever
Bucket of dirty waterThe fire—Bucket of clean waterNever
Bottle of dirty waterThe fire—Bottled waterNever
Purification tabletsBottle of dirty water (either order)—Bottled waterNever
Bottle of dirty waterWater filter (either order)—Bottled water; keeps the water filterNever

Code: recipes-water.ts, items-water.ts


Crafting

In short: Make gear out of loot. Crafting never fails — if you know how, you make it.
  • Its materials (twine, scrap metal, the whetstone, rags) only show up in loot once you know Crafting — same rule that hides a hatchet from someone who can’t use one.
  • Every recipe pays one action of Crafting XP.
  • Good tools are made, not found. Loot only ever hands you the rusty hatchet. Rig more twine onto an improvised rod for a fishing rod, beat scrap metal round with a hatchet’s back for a cooking pot, and hone a rusty hatchet on a whetstone for a sharp hatchet (levels in the table).
  • Crafting feeds the other skills: both of Fishing’s rods, the pot that boils water and stew, Woodcutting’s sharp hatchet, and the filter that cleans bottles forever.
  • The pocket knife, bow drill, felling axe, fire axe and carbon rod are retired: nothing drops or makes them, and anyone who still carries one can keep using it.
  • Weapons come off one log. Any hatchet or axe on wood splits it into two half-logs (the tool is kept); rags round a half-log make a wooden club; a hatchet on a half-log shaves it to a wooden spear (Crafting 5 — an axe splits but doesn’t whittle); rags round the spear’s grip make a wrapped spear that swings a touch faster (Crafting 15). What each does to whom is in Zombies.
  • A thing fits inside what it’s made from: the club is the half-log’s thick end, the spear its shaved length, so both come out of a split log and neither out of the other. An upgrade is a new item, never a number on the old one.

Crafting recipes

UseOnNeedsYou getFails
TwineWood (either order)Crafting 1Improvised fishing rodNever
Rusty hatchetWood (either order)Crafting 12 × Split log; keeps the rusty hatchetNever
HatchetWood (either order)Crafting 12 × Split log; keeps the hatchetNever
Felling axeWood (either order)Crafting 12 × Split log; keeps the felling axeNever
Fire axeWood (either order)Crafting 12 × Split log; keeps the fire axeNever
RagsSplit log (either order)Crafting 1Wooden clubNever
Rusty hatchetSplit log (either order)Crafting 5Wooden spear; keeps the rusty hatchetNever
HatchetSplit log (either order)Crafting 5Wooden spear; keeps the hatchetNever
TwineImprovised fishing rod (either order)Crafting 10Fishing rodNever
TwineRags (either order)Crafting 10PouchNever
Rusty hatchetScrap metal (either order)Crafting 12Cooking pot; keeps the rusty hatchetNever
HatchetScrap metal (either order)Crafting 12Cooking pot; keeps the hatchetNever
RagsWooden spear (either order)Crafting 15Wrapped spearNever
RagsPouch (either order)Crafting 15BackpackNever
RagsEmpty bottle (either order)Crafting 20Water filterNever
WhetstoneRusty hatchet (either order)Crafting 25Hatchet; keeps the whetstoneNever

Code: recipes-crafting.ts, items-gear.ts


How timed jobs work

In short: Woodcutting, fishing and scavenging run on a timer you pick (10 min to 8 h) and keep going with the app closed. Short runs give way more per hour.
  • Tap trees, water or a building for its button. Tap the time on its right end for another length (10 min, 30 min, 1 h, 2 h, 4 h, 8 h, round and round); hold the button to start (a scavenge deals its cards on a tap instead).
  • Close the app or walk away — it keeps going where you started it.
  • Phone in your pocket? On Android the step notification shows the job and the time it ends, and what’s new in your backpack. When its time’s up your phone pings you (“Done scavenging”).
  • One job at a time: a cut, a fishing trip or a scavenge, never two.
  • What a run gives is locked in when you start, in half crates (half logs, half fish). The whole ones land evenly through the run, the last at the end; a half is a coin flip.
gives = length × level × tool × weather
level: ×1 at level 1, a little more every level. At ×1 a run gives 10 min ½, 30 min 1, 1 h 1½, 2 h 2, 4 h 2½, 8 h 3; the total is rounded to the half and never more than 5. Woodcutting adds two more factors for the trees.

Why short runs win (level 1, first tool, everything else ×1)

LengthOne run givesSame time in 10 min runs
10 min½½
30 min11½
1 h1½3
2 h26
4 h2½12
8 h324

How a job ends

  • Time’s up.
  • Your backpack has no room for the next log or fish.
  • You stop it: tap its marker on the map, then tap Stop? — you keep what it made.
  • You pass out — what it made is stolen with the rest.

Each log or fish pays one action of XP. While a job runs, a marker stands over where it’s happening — the building, or the trees or water you tapped — with the job at work, a rim that fills up and the time left, and the same dial sits under your avatar. Tap that for the job’s button (a scavenge opens the building’s card): it keeps counting down, the next find rummages, and each find pops on it. Hold it 2 seconds to stop it there; you keep what it made. The phone refreshes the moment it ends, so the next one can start at once.

For devs: no heartbeat. The server lands the finds that fell due whenever time passes — on the next request; while a job’s button is open, the phone asks as each one falls due. Woodcutting adds two factors for the trees, scavenging one for the building; see their own pages.

Code: activities.ts, activity.ts, activity-odds.ts, ActivitySheet.svelte, ActivityButton.svelte, ActivityChip.svelte, RunningActivitySheet.svelte, ActivityMarker.svelte, survival-notification.ts


Woodcutting

In short: You need the skill, a hatchet, a free slot and trees in your action circle. Better hatchet, thicker woods and more trees mean more logs.
logs = length × level × hatchet × tree × stand × weather
Everything from How timed jobs work, plus the land you’re cutting and how many trees stand around you.

Hatchets — you swing the best one your level allows

HatchetPowerNeedsWhere from
Rusty hatchet×1Woodcutting 1Loot, from Looting 1
Hatchet×1.25Woodcutting 10Made at Crafting 25
Felling axe×1.5Woodcutting 30Retired — no longer found or made
Fire axe×1.75Woodcutting 45Retired — no longer found or made

Tree land — the kind that covers most of your circle counts

LandWood factorChance a 14 m patch holds a tree
Forest×1.270%
Woodland×1.270%
Nature reserve×1.118%
Park×125%
Orchard×0.950%
Garden×0.835%
Dog park×0.815%
Scrub×0.640%
Meadow×0.56%

Stand (how many trees)

0.5 + 0.2 × log2(1 + trees), never more than ×1.3: ×0.7 for one tree, ×1.02 at five, ×1.3 at fifteen.

Trees are counted from the map’s land, not the drawn trees: how much of your circle each land covers, times how thickly it’s wooded — the same odds the 3D map plants its trees with.

Code: config/survival/woodcutting.ts, shared/survival/woodcutting.ts, tree-stand.ts


Fishing

In short: You need the skill, a rod, a free slot and water in your action circle. Better rod, better level, bigger fish.
fish = length × level × rod × weather
Everything from How timed jobs work — fishing adds nothing else.

Rods — you use the best one your level allows

RodPowerNeedsWhere from
Improvised fishing rod×1Fishing 1Made at Crafting 1
Fishing rod×1.25Fishing 5Made at Crafting 10
Carbon fishing rod×1.5Fishing 30Retired — no longer found or made

What bites

FishBites fromWeightCooked gives
Raw perchFishing 160+300 kcal (Cooking 1)
Raw troutFishing 1530+450 kcal (Cooking 15)
Raw pikeFishing 3015+650 kcal (Cooking 30)
  • Each catch is drawn by weight from the fish your level reaches.
  • A level you reach mid-trip counts from the next cast.
  • Fish land in the backpack raw — cook them (see Fire & cooking).
  • Every rod is crafted, so an angler needs Crafting too: the improvised rod first, then the fishing rod rigged from it (table above). The carbon rod is retired.

Code: fishing.ts, activities.ts


Scavenging

In short: Looting that stands still. Tap a building inside your action circle and search it for 10 min to 8 h; what turns up leans to what the place is.
  • The building is the button: its card has one Scavenge button showing the crates a run gives. Tap the time on its right end for another length; it opens on the length you used last. No tool needed, and the weather doesn’t reach indoors.
  • Tap Scavenge and your cards fly out of the building. The middle one is always the approach card: bare hands, with arrows that set how loud you go. Beside it sit up to two cards for things in your bag that help. Tap a card, or flick it up toward the building, to start; the thing on it is used up. Nothing starts until a card is played, and a tap on the map puts the hand away.
  • Louder finds more and wakes more. A loud approach draws extra dead to the building’s wall, once a building a day, and they are waiting there when you come back. The card you played stays on the roof as a small chip while the run goes.
  • Any building works. A home gives the plain loot table; a shop, a library, a pharmacy lean.
  • Every find comes off the Looting table, so you still only find what you can name — a library full of books is no use before… well, it’s a library.
  • Each find pops on the button, then out of the roof into your backpack, and pays Looting XP like a walk’s.
  • It runs like any timed job: what it gives is locked in at the start, and it ends when time’s up, the backpack is full, you stop it (tap the marker on the roof, then Stop?) or you pass out. One job at a time.
  • Out of reach? The card says how many meters short you are, and nothing is sent.
crates = length × level × size × stance + the item’s crates
level: ×1 at Looting 1, a little more every level. size = 0.5 + 0.2 × log2(1 + m² ÷ 100), at most ×1.3; a building the map has no footprint for counts ×1. length as every timed job: 10 min ½, 30 min 1, 1 h 1½, 2 h 2, 4 h 2½, 8 h 3 crates at ×1, never more than 5.

The approach card's stance

StanceCrates ×Dead drawn to the wall
Tiptoe×0.71
Rummage×13
Ransack×1.58

The things a card can spend (one per run)

ItemAddsDead drawn
Rags—−2
Matches+½—
Scrap metal+1+1

Size — bigger floors, more crates

FloorSize ×
100 m²×0.7
400 m²×0.96
1,500 m²×1.3
5,000 m²×1.3

What each kind of place leans to (× on the loot table's weights; anything unlisted ×1)

PlaceCategoriesItems
Home——
Storefood ×2.5, drink ×2.5, container ×1.5, tool ×1.5, material ×1.2Wood ×0.3, Raw rat meat ×0.5
Eateryfood ×2.5, drink ×2, container ×2.5Matches ×2, Raw rat meat ×2, Wood ×0.5
Pharmacytool ×0.3, book ×0.5Purification tablets ×8, Rags ×3, Bottled water ×1.5, Protein bar ×2
Librarybook ×4, food ×0.5, drink ×0.5, tool ×0.5, material ×0.5, container ×0.5—
Workshoptool ×3, material ×3, container ×1.5, food ×0.3, drink ×0.5Matches ×2, Purification tablets ×0.3
Hallbook ×1.5, drink ×1.2Wood ×0.5

Why short runs win (Looting 1, size ×1), in crates

LengthOne run givesSame time in 10 min runs
10 min½½
30 min11½
1 h1½3
2 h26
4 h2½12
8 h324
For devs: a place’s kind comes from its OpenStreetMap building type and the types of the shops inside it (never the raw shop kind). The server reads the building and checks your reach from its own last fix; the phone only names the building.

Code: scavenge.ts, scavenge-cards.ts, scavenge.service.ts, scavenge-crowd.ts, ScavengePanel.svelte, ScavengeHand.svelte, ActivityButton.svelte, activities.ts


Action circle & weather

In short: Anything you can act on sits inside the ring around your marker (50 m). Tap the thing itself; there are no action buttons. The real weather where you stand changes your odds.

Tap the world

TapOpensNeeds
A treeThe woodcutting timerWoodcutting, a hatchet your level can swing, a free slot, no job running
WaterThe fishing timer, or a sheet with Go fishing and Fill bucket / Fill bottle when you carry an empty oneTo fish: Fishing, a rod your level can use, a free slot, no job running. To fill: an empty bucket or bottle
Stuff on the groundPicks it upYou can tell what it is, and all of it fits (see Backpack)
A buildingIts sheet, with the scavenge rows (see Scavenging)To look: nothing, from any distance. To scavenge: in reach, a free slot, no job running
  • It has to reach into your circle. Too far away and it tells you how many meters short you are.
  • Missing something (the skill, a tool, a free slot)? It says what instead.
  • Water is any water on the map: sea, lake, river, even a thin stream. Only the bit you tapped lights up.
  • A tree is one of the 3D trees on tree land: forest, woods, park, orchard, garden and so on (see Woodcutting). Tap the tree itself; the grass around it does nothing. Zoomed far out the trees are hidden, so zoom in to cut.
  • The phone reads all this from the map it already has loaded, so a tap costs nothing.

Weather

The real sky over you, read by the server — never by your phone. Very strong wind turns any sky into a storm. If the weather can’t be read, nothing changes. It’s locked in when a job starts.

Weather against each job

SkyWoodcuttingFishing
Clear sky×1.1×0.9
Cloudy×1×1.1
Fog×0.9×1
Drizzle×0.9×1.2
Rain×0.75×1
Snow×0.7×0.8
Storm×0.5×0.5
Weather unknown×1×1

Code: world.ts, land-tap.ts, tree-tap.ts, world-targets.ts, water-spot.ts, WaterSheet.svelte, survival-weather.ts


How it’s built

In short: One pure engine runs on both the server and the phone. Only the server saves, and it rolls every die.
  • Engine — src/lib/shared/survival/. A pure function of (state, command, time, dice): no database, no clock, no Math.random.
  • Data — src/lib/shared/config/survival/. Every item, recipe, loot entry, tool, fish and number. Change the game here.
  • Server — survival.service.ts locks the survivor’s row, runs the engine, saves, then fires hooks. Dice are crypto-random.
  • Time catches up on every call. Bars, books, fires and jobs settle on the next request; nothing ticks in the background. A refused command still saves the time that passed.
  • API — GET /api/survival (state now), POST /api/survival (one command: move, drop, act, use, stopReading, startActivity, stopActivity, ackPassOut), GET /api/survival/building, GET /api/survival/weather. A refusal is a 200 with a rejected code, because time still passed.
  • Looting is server-only — the walk tick calls it (lootBatch).
  • Storage — survivors and survivor_skills. Every save bumps a version; the phone keeps the newest reply, whatever order they land in.
  • Events & hooks — every change is a SurvivalEvent. Server: onSurvivalEvent(type, fn) runs after commit. Phone: survival.onEvents(fn). Plug new mechanics in there, or add an effect type in effects.ts.
  • Phone — survival-store.svelte.ts holds the state and burns the bars down between replies.

Want to change…

ThisEdit
Bars, burn rate, wake-up soda, what a pass-out keepsvitals.ts
Items, stack sizes, eat/drink valuesitems.ts + items-water/food/gear.ts
Loot odds and level gatesloot.ts
Recipesrecipes-fire/food/water/crafting.ts
Skills and XP paceskills.ts
Book length and prizesreading.ts
Timed jobs, tools, catchesactivities.ts, woodcutting.ts, fishing.ts
Fire length, tree land, weather kindsworld.ts

Tests that guard the design

  • progression.test.ts — no dead ends: every item has a source, every skill trains from 1.
  • engine.test.ts, recipes.test.ts, fishing.test.ts and friends next to the engine.
  • Anything touching loot, vitals or scouting also needs the testing ground (tests/integration/ground, npm run ground).
  • The tables on this page have their own tests in src/routes/manual/lib/.

Leftovers from the old game

In short: GoSurvive started as a copy of WalkStreet, a walking property-tycoon game. Most of it is switched off or hidden — not deleted yet.
  • Switched off: trips, freight, franchise, briefcases, perks, tenantdex, battles, partnerships, intel, architect studio. Their APIs answer 503, their jobs don’t run, their buttons are gone. Switch: legacy-features.ts.
  • Hidden but still running on the server: cash, income, building ownership, tenants, districts, missions, challenges, boosts, leaderboards and more. Switch: legacy-hud.ts.
  • Scouting still pays cash in the background. Nobody sees it.
  • Kept on purpose: the 3D map and real buildings, GPS walking and steps, accounts, chat, the admin panel.
Strip as you build. Delete an old system only when its GoSurvive replacement lands. The old systems are tangled together (the building core imports the economy), so speculative deletes break things.

Heads-up: GAME_DESIGN.md below its Survival section still describes the old game. Git history here starts on 2026-10-17; the old game’s history lives in the walkstreet repo.

Code: legacy-features.ts, legacy-hud.ts, GAME_DESIGN.md § Legacy Features


Coming next

In short: Not built yet: special buildings on the map, the planning map, and tower defence beyond its first turret. Here’s what’s decided so far.
  • Zombies are in (see Zombies): opening the app among buildings is what brings them, so when and where you open it is a choice. Next for them: weapons that Fighting levels unlock, night rules, hordes, and zombie zones on the planning map.
  • Special buildings have their own loot now: a scavenge leans to what the place is (see Scavenging). Still to come: showing them on the map by type, and a picked-clean restock. Homes keep looting in the background and never show loot markers.
  • Two views: a close 3D street view that opens when an attack starts, and a 2D map for planning a trip (special buildings, zombie zones, your route).
  • Tower defence has begun (see Tower defence): a turret on the world’s grid. More defences come onto the same grid.
Design rules for anything new: every new level must unlock something to find, use or make — never just a bigger number. Gate new loot on the skill that uses it. No shops, no skill trees that only multiply.

Open work and its priority live in docs/BACKLOG.md.

Code: docs/BACKLOG.md, GAME_DESIGN.md § Survival