Manual

GoSurvive Manual

Everything the game does, in plain words.

23 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, read books to learn 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 and leaves a snack bar. You lose your bag, never 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 25 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 to learn new skills.
  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, a new level gets stamped on it, and XP from a walk with the app closed pops 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) puts its tool on the corner of your backpack. Open the backpack to see how it's going or stop it.
  • Chat (bottom-left): its last three lines sit over the map, and ride just above any sheet you open so they never hide behind it; tap them to open 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, 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 starts full.
  • 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—
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 whole backpack, the book you were reading, and your fire goes out. A running woodcutting or fishing job stops, and what it made goes too.
  • They leave a snack bar. You wake with 200 kcal and 600 ml of water (20%) the next time the game hears from you.
  • You keep every skill and all your XP.
  • 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: 28 slots. 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.
  • 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.

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.

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, items.ts, InventorySheet.svelte, slot-gesture.ts, SlotMenu.svelte, ground.service.ts, ground-items-layer.ts


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.

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.
  • Food, wood, books: anything you can’t wear is greyed out here and does nothing.
  • 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 knife off before you carve with it.
  • Pass out and what you wear is robbed with the rest.

What can be worn

ItemWorn
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
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 — 80 m to start, 1 m more per skill level, 250 m at most. Within 5 m you trade blows on your own — or outwalk the slow ones.

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
Shambler0.6 m/s40 kcal3 s30about 380%
Runner2 m/s25 kcal1.5 s20about 215%
Brute0.45 m/s120 kcal4 s80about 165%

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 and axes are weapons as found. The rest are made: split a log, then grip a club or carve a spear — see Crafting.

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: 80 m plus 1 m per level across all your skills, capped at 250 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.
  • Walk away faster than one and it falls behind; far enough and it gives up where it stands.

The fight

  • It fights itself. Within 5 m a zombie bites at its attack speed 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 (+49% at 99, bare hands every 1.01 s), 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. At most 3 bite at once; the rest wait their turn.
  • 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


Looting

In short: Just walk. Every building you pass gets searched, and about 1 in 25 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 4% 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 7 days later (at local midnight).
  • 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 hatchets before Woodcutting, no rods before Fishing, no twine before Crafting.

Everything you can find

FindFrom LootingAlso needsPer findWeightRarity
Bottled water1—130Common
Bag of chips1—125Common
Wood1—125Common
Raw rat meat1—120Common
Twine1Crafting2–48Uncommon
Rusty hatchet1Woodcutting15Uncommon
Campfire Cooking1—11.5Rare
Firestarter's Guide1—11.5Rare
Woodcutter's Manual1—11Epic
Angler's Almanac1—11Epic
Maker's Notebook1—11Epic
Scavenger's Handbook1—10.75Epic
Matches2—3–812Uncommon
Bucket3—16Uncommon
Fishing rod3Fishing13Rare
Cooking pot4—15Uncommon
Can of soda5—110Uncommon
Pocket knife5Crafting12Rare
Hatchet5Woodcutting11.5Rare
Can of beans6—110Uncommon
Rags6Crafting1–35Uncommon
Protein bar8—18Uncommon
Felling axe10Woodcutting10.5Epic
Purification tablets12—2–54Rare
Carbon fishing rod12Fishing10.75Epic
Fire axe20Woodcutting10.4Epic

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 scavenge it, see if it’s ready to search, how far away it is, and what the map knows about it.
  • Scavenge: six lengths with what each should find, on top of the card — see Scavenging. Out of reach, it says how many meters short you are.
  • Search status: ready to search (never searched, or restocked), searched (when, plus a countdown to the restock 7 days later), or spotted, not searched (your GPS wasn’t sure where you were, so nothing was looted — walk past it again to search it).
  • Distance, or in reach when it’s inside your action circle.
  • What the map knows: name, type, address, shops inside, year built, architect, heritage status, footprint size, and a photo and Wikipedia text when there is one. Anything the map doesn’t know is left out. Landmarks get a sticker.
  • Tap another building to swap. Tap empty map, tap the same building again, or swipe to close.
  • 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: BuildingSheet.svelte, ScavengePanel.svelte, building-search.ts, building-about.ts, GET /api/survival/building


Skills & XP

In short: Eight skills, levels 1 to 99. You start knowing Looting, Fighting and Agility; every other skill comes from its book. Every action pays XP to the skill it uses, and every step pays Agility.

The skills

SkillHow you get itOne action isActions an hourXP an action
LootingKnown from day onea find3029.8
FightingKnown from day onea kill3029.8
AgilityKnown from day onea step2,5000.357
CookingRead “Campfire Cooking”a cook1207.4
FiremakingRead “Firestarter's Guide”a fire lit or fed6014.9
WoodcuttingRead “Woodcutter's Manual”a log3029.8
FishingRead “Angler's Almanac”a fish3029.8
CraftingRead “Maker's Notebook”a thing made1559.5

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, +49% at 99 — 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 XP still to go printed on it, and what the next level brings waiting at its far end (just the number when that level brings nothing new). Skills you haven’t learned yet stand as books on a shelf below. Tap a bar or a book for its guide: XP banked, about how much play the next level takes, how to train it, what its level does outside its own job (Agility’s attack speed), and every level that unlocks something — ticked when you have it. Before you know a skill, it tells you which book teaches it.

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


Books

In short: Read a book to learn its skill — that takes 10 seconds. Reading a book for a skill you already know takes 6–10 hours of real time and keeps going with the app closed.
  • One book at a time. Don’t know the skill yet? The read takes 10 seconds and you learn it at level 1.
  • Already know it? 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 an hours-long 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 for a skill you know

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


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.
fail chance = at 1 + (at 99 − at 1) × (level − 1) ÷ 98
A straight line from level 1 to level 99. Each recipe sets its own two ends.
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, or light it with a bow drill and no match at all.
  • 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% → 2% at 99; wastes Matches + Wood
WoodThe fireFiremaking 10+3 min of fireNever
Bow drillWood (either order)Firemaking 20Lights a fire (3 min); keeps the bow drill58% → 10% at 99; 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% → 3% at 99; leaves Burnt rat meat
Raw perchThe fireCooking 1Cooked perch60% → 3% at 99; leaves Burnt fish
Raw troutThe fireCooking 15Cooked trout61% → 5% at 99; 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% → 5% at 99; leaves Cooking pot
Raw pikeThe fireCooking 30Cooked pike59% → 8% at 99; 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.
  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
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, rags, the pocket knife) 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.
  • Crafting feeds the other skills: the improvised rod is Fishing’s first rod, the bow drill lights fires without matches, and the filter cleans bottles forever.
  • 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
Pocket knifeWood (either order)Crafting 10Bow drill; keeps the pocket knifeNever
RagsWooden spear (either order)Crafting 15Wrapped spearNever
RagsEmpty bottle (either order)Crafting 20Water filterNever

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, pick a length (10 min, 30 min, 1 h, 2 h, 4 h, 8 h), done.
  • Close the app or walk away — it keeps going where you started it.
  • One job at a time: a cut, a fishing trip or a scavenge, never two.
  • One roll every 1 min (a swing or a cast). The chance is locked in when you start.
chance = base(level) × tool × weather × length
base: 20% at level 1 → 60% at 99. length = (10 ÷ minutes)0.5. Capped at 95%, so no roll is certain. Woodcutting adds two more factors for the trees.

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

LengthLength factorOne run givesSame time in 10 min runs
10 min×122
30 min×0.583.56
1 h×0.414.912
2 h×0.296.924
4 h×0.29.848
8 h×0.1413.996

How a job ends

  • Time’s up.
  • Your backpack has no room for the next log or fish.
  • You stop it — 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. Stop it from the backpack (a scavenge from the building’s card too); 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 rolls the missed minutes whenever time passes — on the next request. 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, ActivityBanner.svelte, ActivityMarker.svelte


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.
chance = base × hatchet × tree × stand × weather × length
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 10Loot, from Looting 5
Felling axe×1.5Woodcutting 30Loot, from Looting 10
Fire axe×1.75Woodcutting 45Loot, from Looting 20

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.
chance = base × rod × weather × length
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 5Loot, from Looting 3
Carbon fishing rod×1.5Fishing 30Loot, from Looting 12

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).
  • The first rod is crafted, so a new angler needs Crafting too — the rods you find want a higher Fishing level (table above).

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 offers the lengths; tap one and you’re searching. No tool needed, and the weather doesn’t reach indoors.
  • 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.
  • Finds pop out of the roof into your backpack and pay Looting XP, like a walk’s.
  • It runs like any timed job: one roll a minute, chance locked in at the start, ends when time’s up, the backpack is full, you stop it 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.
chance = base(level) × size × length
base: 20% at Looting 1 → 60% at 99. 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. Capped at 95%.

Size — bigger floors, more finds a minute

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)

LengthLength factorOne run givesSame time in 10 min runs
10 min×122
30 min×0.583.56
1 h×0.414.912
2 h×0.296.924
4 h×0.29.848
8 h×0.1413.996
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.service.ts, ScavengePanel.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
TreesThe 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.
  • Trees are any tree land: forest, woods, park, orchard, garden and so on (see Woodcutting). A pond in a park counts as water.
  • The phone reads them 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, world-targets.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 snackvitals.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. 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 builds on top of all of this.
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