gamedev-skills/survival-crafting
> needs (hunger/thirst/temperature), and base building. Use for a survival or crafting/base-building game.
npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill survival-crafting
A playbook for survival-crafting games — the gather → craft → build loop, survival needs, the
crafting/tech progression, and base building. This is a compositional skill: it orchestrates
inventory data, world content, persistence, and threats. It does not re-teach those primitives;
it defines the loop and the pressure systems (needs, scarcity, escalation) that make survival
tense rather than tedious.
builds a base** against escalating threats: survival sandbox, crafting/base-building game.
or base placement/building.
When *not* to use: crafting as a minor RPG feature → rpg. Permadeath grid dungeon →
roguelike. For inventory/items as data assets, use godot-resources /
unity-scriptableobjects; for world generation, procedural-gen.
**Gather raw resources → craft tools/items → build and upgrade a base → manage survival needs
→ explore farther for better resources → survive escalating threats → repeat at a higher tier.**
Each loop should unlock the *next* loop (better tools → reach new biomes → new resources →
better crafts). When that ladder breaks, the game becomes a grind.
| Knob | Effect | Notes |
|------|--------|-------|
| Needs decay rates | pressure cadence | Slow enough to explore, fast enough to matter. |
| Need-failure consequence | stakes | Damage over time, not instant death. |
| Resource scarcity / respawn | exploration push | Scarce near base → travel for more. |
| Tool tiers / gating | progression ladder | Better tool → new node types. |
| Recipe complexity / tech depth | long-term goals | Multi-step chains, not flat lists. |
| Inventory limit (slots/weight) | logistics tension | Forces base trips and storage. |
| Threat escalation curve | difficulty over time | Night/seasonal/event ramps. |
| Day length | rhythm | Day = gather, night = defend. |
# Pseudocode in the per-frame/per-tick update. dt = seconds. Needs fall; failure bleeds HP.
def update_needs(p, dt):
p.hunger = max(0, p.hunger - HUNGER_RATE * dt)
p.thirst = max(0, p.thirst - THIRST_RATE * dt)
p.temp = approach(p.temp, ambient_temperature(p), TEMP_RATE * dt)
# Consequences are graded, not binary: warnings, then attrition — never instant death.
if p.hunger == 0 or p.thirst == 0:
p.hp -= STARVE_DAMAGE * dt # damage over time creates urgency with recovery room
if p.temp < COLD_THRESHOLD or p.temp > HEAT_THRESHOLD:
p.hp -= EXPOSURE_DAMAGE * dt
if p.hunger > 0 and p.thirst > 0 and not exposed(p):
p.hp = min(p.max_hp, p.hp + REGEN_RATE * dt) # safe + fed => heal
# Pseudocode. Recipes are data: inputs -> output, with an optional station/tech requirement.
recipe = {"id": "stone_axe",
"inputs": {"wood": 3, "stone": 2}, "output": ("stone_axe", 1),
"station": "workbench", "requires_tech": "basic_tools"}
def can_craft(recipe, inv, tech, station):
if recipe.get("requires_tech") and recipe["requires_tech"] not in tech: return False
if recipe.get("station") and recipe["station"] != station: return False
return all(inv.count(item) >= n for item, n in recipe["inputs"].items())
def craft(recipe, inv, tech, station):
if not can_craft(recipe, inv, tech, station): return False
for item, n in recipe["inputs"].items(): inv.remove(item, n) # consume all, then add
inv.add(*recipe["output"]) # atomic: no partial craft
return True
# Pseudocode. A node yields only if the held tool meets its required tier.
def harvest(node, tool):
if tool.tier < node.required_tier:
return notify("Need a better tool") # e.g. stone node needs a pickaxe, not fists
node.hp -= tool.power
if node.hp <= 0:
spawn_drops(node.drop_table) # weighted drops (see roguelike loot pattern)
node.start_respawn(node.respawn_time) # node returns later; world isn't depleted forever
with clear warnings and a recovery path (Pattern 1).
the next (better tool → new node → new resource → better craft).
first, then consume-and-add as one step (Pattern 2).
slots or weight.
regenerate resources over time.
dt → needs drain at different speeds on different hardware.Scale by dt.
incrementally; version it (see save-systems).
godot-resources / unity-scriptableobjects — items, recipes, tech tree, drop tables.procedural-gen for biomes/resource placement; level-design for authored areas.save-systems for large-world state, base, inventory, needs, and versioning.game-ai for creatures; the engine physics skill for melee/collision.godot-tilemap / unity-tilemap-2d (2D) or godot-3d-essentials (3D) plus UI snapping.game-ui-ux for inventory/crafting/HUD layout and scaling; godot-ui-control for the concrete inventory, crafting menu, needs HUD, and build mode.base-building grids, and threat escalation, read references/needs-and-crafting.md.
Take gamedev-skills/survival-crafting from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.