Survival / Crafting
Dropped into a hostile world with nothing — gather, craft, and build your way to survival | Wilderness Survival
"The genius of survival games is that a wooden door feels like a fortress when you built it yourself from trees you chopped with an axe you made from sticks you picked up off the ground."
Week 1: History & Design Theory
The Origin
Minecraft did not invent the survival game, but it defined the modern template when Markus "Notch" Persson released the alpha in 2009. The concept was disarmingly simple: you spawn in a procedurally generated world made of blocks. You can break any block. Breaking a tree gives wood. Wood becomes planks, planks become sticks, sticks and planks become a pickaxe. The pickaxe breaks stone faster. Stone makes better tools. And then night falls, and monsters come. Minecraft's genius was the crafting tree — every material led to something that led to something else, and the survival pressure provided just enough motivation to keep climbing the tech tree without dictating how.
How the Genre Evolved
Minecraft (2011) — Established the core loop: punch tree, get wood, craft tools, mine deeper, build shelter, survive the night. The procedural world meant every player's experience was unique. Proved that gathering and crafting are inherently satisfying even without traditional goals.
Don't Starve (2013) — Klei Entertainment dialed up the consequence. Death was permanent. The game tracked hunger, health, and sanity — three stats that all drained simultaneously. Night was lethal without a light source. Don't Starve proved that multiple competing survival stats created more interesting decisions than a single health bar.
Valheim (2021) — Iron Gate Studio added progression that felt like an adventure. Valheim structured its crafting tree around boss fights — each boss unlocked tools for the next biome. The building system was physics-based. It showed that the survival loop was not just a solo experience but a social one.
What Makes It "Great"
A great survival game makes the player feel like they earned every inch of safety. The world starts hostile and stays hostile — the key is that the player's relationship to that hostility changes. On night one, a dark cave is terrifying. By night twenty, the player has a walled base with torches, a furnace, and iron tools. The world did not get easier; the player got more capable, and every piece of that capability was built by hand.
The Essential Mechanic
The gather-craft-survive loop — turning raw materials into tools that enable gathering better materials.
Week 2: Build the MVP
What You're Building
A top-down survival game on a grid-based world. The player spawns with nothing in a world containing trees, rocks, bushes, and ore deposits. They gather raw materials, craft tools and structures, manage hunger/thirst/health stats, and build shelter to survive nightly enemy waves. Each night is harder than the last.
Core Concepts
1. Resource Gathering Loop
The player interacts with world objects to harvest raw materials. Each object yields specific resources and has durability. Some objects require specific tools — bare hands can gather wood, but stone requires a pickaxe.
WORLD_OBJECTS = {
"tree": {resource: "wood", amount: 3, hitsToBreak: 5, requiresTool: null},
"rock": {resource: "stone", amount: 2, hitsToBreak: 8, requiresTool: "pickaxe"},
"bush": {resource: "berry", amount: 2, hitsToBreak: 1, requiresTool: null},
"ore_vein": {resource: "iron", amount: 1, hitsToBreak: 12, requiresTool: "iron_pickaxe"}
}
function gatherResource(player, worldObject):
objData = WORLD_OBJECTS[worldObject.type]
if objData.requiresTool and not player.hasEquipped(objData.requiresTool):
return "Requires " + objData.requiresTool
worldObject.durability -= getToolDamage(player.equippedTool)
if worldObject.durability <= 0:
player.inventory.add(objData.resource, objData.amount) Why it matters: The gathering loop is the foundation everything else is built on. The tool-gating system creates natural progression tiers that guide the player without a tutorial.
2. Crafting Tree
Recipes form a dependency tree: raw materials produce basic tools, basic tools enable access to better materials, better materials produce advanced tools and structures. The crafting tree IS the progression system.
RECIPES = {
// Tier 1
"wood_axe": {ingredients: {"wood": 3, "stone": 2}, tier: 1},
"wood_pickaxe": {ingredients: {"wood": 3, "stone": 2}, tier: 1},
"campfire": {ingredients: {"wood": 5, "stone": 3}, tier: 1},
// Tier 2
"furnace": {ingredients: {"stone": 10}, tier: 2, requires: "wood_pickaxe"},
// Tier 3
"iron_pickaxe": {ingredients: {"wood": 2, "iron": 3}, tier: 3, requires: "furnace"}
} Why it matters: There are no experience points, no skill trees, no level-ups. You progress by crafting better things. The tree structure means the player always has a visible next goal.
A visual dependency tree showing raw materials at the bottom, intermediate items in the middle, and advanced items at the top. Click any item to see its recipe and highlight the raw materials needed.
3. Hunger / Thirst / Health Drain
Three stats drain over time. Hunger and thirst decrease steadily; if either hits zero, health drains. Eating food restores hunger, drinking water restores thirst. The player must continuously gather and consume resources just to stay alive.
function updateSurvivalStats(player, deltaTime):
player.hunger -= HUNGER_DRAIN * deltaTime
player.thirst -= THIRST_DRAIN * deltaTime
if player.hunger <= 0:
player.health -= HEALTH_DRAIN * deltaTime
if player.thirst <= 0:
player.health -= HEALTH_DRAIN * deltaTime
if player.health <= 0:
triggerDeath(player) Why it matters: Multiple draining stats create competing priorities. The interplay between stats creates interesting decisions: eat the berries now, or save them for the dangerous area ahead?
4. Day/Night Cycle
A continuous clock cycles between day and night. During the day, the world is lit and enemies do not spawn. At night, visibility drops and hostile enemies spawn at map edges and move toward the player. Each successive night is longer or spawns more enemies.
DAY_NIGHT_CONFIG = {
dayDuration: 180, // seconds
nightDuration: 120,
playerLightRadius: 3, // tiles visible at night
campfireLightRadius: 6
}
function spawnNightEnemies():
if phase != "night": return
count = BASE_ENEMIES + (dayCount * ESCALATION_PER_NIGHT)
for i in range(count):
enemy = createEnemy("hostile", getRandomEdgePosition())
enemy.target = player Why it matters: The day/night cycle creates the fundamental rhythm: gather during the day, survive at night. It gives the crafting system purpose (you build shelter because night is coming) and makes light a gameplay mechanic.
Watch a scene transition from day to night. During the day, resources (green dots) spawn. At night, the world darkens and enemies (red dots) approach from the edges. A countdown shows time until dawn.
5. Base Building / Structure Placement
The player places crafted structures (walls, doors, campfires) onto the grid. Walls block enemy pathfinding, doors can be opened by the player but not enemies, and campfires provide light and enable cooking.
STRUCTURE_DATA = {
"wood_wall": {durability: 50, blocksEnemies: true, lightRadius: 0},
"wood_door": {durability: 30, blocksEnemies: true, lightRadius: 0},
"campfire": {durability: 100, blocksEnemies: false, lightRadius: 6},
"furnace": {durability: 200, blocksEnemies: true, lightRadius: 2}
} Why it matters: Base building transforms the survival experience from reactive to proactive. The base is the player's home, and defending it creates emotional investment that pure combat cannot match.
6. World Persistence
The entire world state — every gathered resource, placed structure, and entity position — must be serializable and loadable. Persistence is what allows the player to build something over time.
function saveGame(world, player):
saveData = {
dayCount: dayNightClock.dayCount,
player: {position, health, hunger, thirst, inventory},
grid: [modified tiles only],
entities: [all entity states]
}
writeToFile("save.json", serialize(saveData)) Why it matters: A survival game without persistence is a roguelike. Persistence lets the player build a base that grows night by night, a stockpile that accumulates, a world that bears the marks of their decisions.
7. Threat Escalation
Each night is harder. More enemies spawn, and after certain day thresholds, tougher enemy types appear. This creates a soft timer — the player must progress through the crafting tree fast enough to handle the escalating threat.
ENEMY_TYPES = {
"zombie": {health: 20, damage: 5, speed: 1.0, spawnAfterDay: 1},
"fast_zombie": {health: 15, damage: 8, speed: 2.0, spawnAfterDay: 4},
"brute": {health: 60, damage: 15, speed: 0.7, spawnAfterDay: 7}
} Why it matters: Without escalation, survival games stagnate. Once the player has food and shelter, there is no reason to keep playing. Escalation is why you need iron tools, not just stone ones.
Stretch Goals
- Biomes — Forest, desert, snow with unique resources and hazards.
- Temperature system — Cold at night, hot in desert, clothing provides insulation.
- Simple farming — Plant seeds, wait for crops, sustain food supply.
- Multiplayer — Two players share the same world.
MVP Spec
| Component | Minimum Viable Version |
|---|---|
| World | 32x32 tile grid with trees, rocks, bushes, ore veins |
| Gathering | Interact with objects to collect wood, stone, berries, iron |
| Crafting | 10 recipes across 3 tiers |
| Survival Stats | Health, hunger, thirst |
| Day/Night | 3-minute day, 2-minute night, visual darkness |
| Enemies | Spawn at night, pathfind toward player |
| Base Building | Walls, doors, campfires |
| Escalation | More enemies per night, tougher types after days 4 and 7 |
Deliverable
A playable survival game where the player gathers resources, crafts tools and structures through a tiered recipe system, manages survival stats, builds a base to defend against nightly enemy waves, and survives as long as possible against escalating threats.
Discussion Questions
- The Crafting Tree as Implicit Tutorial: Minecraft never tells you to make a pickaxe before mining stone — the crafting tree forces it. How does designing a dependency graph replace traditional tutorials?
- Balancing Scarcity: Don't Starve is punishing; Minecraft on easy mode is forgiving. How do you tune drain rates, enemy difficulty, and resource availability?
- Persistence and Consequence: How does the death penalty change how players engage with crafting and building?
- The Late-Game Problem: Most survival games become trivially easy once the player has the top crafting tier. How do you keep the game interesting?