survival-crafting

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

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.
这是一份生存制作类游戏的设计手册——涵盖收集→制作→建造的核心循环、生存需求、制作/科技进阶以及基地建造内容。这是一项组合式技能:它统筹物品栏数据、世界内容、存档机制以及威胁系统。本手册不会重新讲解这些基础概念,而是定义让生存体验充满紧张感而非乏味感的循环机制与压力系统(需求、资源稀缺性、难度升级)。

When to use

适用场景

  • Use when the player gathers resources, crafts items/structures, manages survival needs, and builds a base against escalating threats: survival sandbox, crafting/base-building game.
  • Use when designing needs (hunger/thirst/temperature), a crafting tech tree, gathering loops, 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
.
  • 当玩家需要收集资源、制作物品/建筑、管理生存需求并建造基地以应对不断升级的威胁时使用:适用于生存沙盒、制作/基地建造类游戏。
  • 当设计生存需求(饥饿/口渴/温度)、制作科技树、收集循环或基地选址/建造系统时使用。
**不适用于以下场景:**制作仅作为RPG次要功能时→使用
rpg
技能。永久死亡类网格地牢游戏→使用
roguelike
技能。若将物品栏/物品作为数据资产处理,请使用
godot-resources
/
unity-scriptableobjects
;若涉及世界生成,请使用
procedural-gen
技能。

Core loop

核心循环

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.
**收集原始资源→制作工具/物品→建造并升级基地→管理生存需求→前往更远区域探索获取更优质资源→应对不断升级的威胁→进入更高阶段循环。**每个循环都应解锁下一个循环(更高级工具→抵达新生物群系→获取新资源→制作更高级物品)。一旦这个进阶阶梯断裂,游戏就会沦为乏味的刷资源行为。

Must-have systems

必备系统

  1. Resource nodes + gathering — harvestable world objects; tool requirements/tiers; respawn.
  2. Inventory — stacks, capacity (slots or weight), drop/transfer, hotbar.
  3. Crafting — recipes (inputs → output), a crafting station/tech gate, a tech tree.
  4. Survival needs — hunger, thirst, temperature, stamina, health, with decay + consequences.
  5. Base building — placeable structures, a build grid/snapping, storage, crafting stations.
  6. World + day/night — biomes/resources (often procedural); a time cycle driving threats.
  7. Threats — hostile creatures/weather/events that escalate; combat or avoidance.
  8. Save/load — world state, inventory, base, needs, progression; large-world persistence.
  1. 资源节点与收集系统 — 可采集的世界对象;工具需求/等级;资源重生机制。
  2. 物品栏系统 — 物品堆叠、容量限制(格子数或重量)、丢弃/转移功能、快捷栏。
  3. 制作系统 — 配方(输入→输出)、制作台/科技解锁门槛、科技树。
  4. 生存需求系统 — 饥饿、口渴、温度、耐力、生命值,包含数值衰减机制与对应后果。
  5. 基地建造系统 — 可放置的建筑、建造网格/对齐功能、存储设施、制作台。
  6. 世界与昼夜循环系统 — 生物群系/资源分布(通常为 procedural 生成);驱动威胁的时间循环。
  7. 威胁系统 — 不断升级的敌对生物/天气/事件;战斗或躲避机制。
  8. 存档/读档系统 — 世界状态、物品栏、基地、生存需求、进度的保存;大型世界的持久化存储。

Design knobs

设计调节项

KnobEffectNotes
Needs decay ratespressure cadenceSlow enough to explore, fast enough to matter.
Need-failure consequencestakesDamage over time, not instant death.
Resource scarcity / respawnexploration pushScarce near base → travel for more.
Tool tiers / gatingprogression ladderBetter tool → new node types.
Recipe complexity / tech depthlong-term goalsMulti-step chains, not flat lists.
Inventory limit (slots/weight)logistics tensionForces base trips and storage.
Threat escalation curvedifficulty over timeNight/seasonal/event ramps.
Day lengthrhythmDay = gather, night = defend.
调节项效果说明
需求衰减速率压力节奏慢到足够玩家探索,快到让需求产生实际影响。
需求未满足的后果风险程度造成持续伤害,而非直接死亡。
资源稀缺性/重生机制探索驱动力基地附近资源稀缺→促使玩家外出寻找更多资源。
工具等级/解锁门槛进阶阶梯更高级工具→可采集新类型资源节点。
配方复杂度/科技深度长期目标多步骤制作链,而非扁平化列表。
物品栏限制(格子数/重量)后勤压力迫使玩家返回基地存放物品。
威胁升级曲线随时间变化的难度夜晚/季节/事件驱动的难度提升。
昼夜长度游戏节奏白天=收集资源,夜晚=防御基地。

Patterns

设计模式

1. Needs decay with graded consequences

1. 生存需求逐步衰减并带有分级后果

python
undefined
python
undefined

Pseudocode in the per-frame/per-tick update. dt = seconds. Needs fall; failure bleeds HP.

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
undefined
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
undefined

2. Crafting: validate, then atomically consume inputs

2. 制作系统:先验证条件,再原子性消耗材料

python
undefined
python
undefined

Pseudocode. Recipes are data: inputs -> output, with an optional station/tech requirement.

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
undefined
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
undefined

3. Gathering gated by tool tier

3. 资源收集受工具等级限制

python
undefined
python
undefined

Pseudocode. A node yields only if the held tool meets its required tier.

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
undefined
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
undefined

Pitfalls / failure modes

常见陷阱/失败模式

  • Needs that kill instantly → frustration and save-scumming. Make failure damage over time, with clear warnings and a recovery path (Pattern 1).
  • Grind without a ladder → gathering that never unlocks new gathering. Each tier must open the next (better tool → new node → new resource → better craft).
  • Non-atomic crafting → inputs consumed but output not granted on an edge case. Validate first, then consume-and-add as one step (Pattern 2).
  • Inventory with no limits → no logistics tension and no reason for a base/storage. Cap by slots or weight.
  • Permanently depleting the world → players strip the map and quit. Respawn nodes or regenerate resources over time.
  • Per-frame decay unscaled by
    dt
    → needs drain at different speeds on different hardware. Scale by
    dt
    .
  • No save / fragile save of a large world → a crash wipes hours. Persist world+base+needs incrementally; version it (see
    save-systems
    ).
  • Flat threat curve → no late-game pressure. Escalate via night/season/event tiers.
  • 生存需求直接导致死亡→引发玩家挫败感与反复读档行为。应让需求未满足时造成持续伤害,并提供明确警告与恢复途径(参考模式1)。
  • 无进阶阶梯的刷资源行为→收集资源却无法解锁新的收集能力。每个等级必须能开启下一个等级(更高级工具→新资源节点→新资源→更高级制作物)。
  • 非原子性制作→极端情况下消耗了材料却未获得成品。先验证条件,再执行消耗材料并添加成品的原子性操作(参考模式2)。
  • 无限制的物品栏→无后勤压力,玩家无需建造基地/存储设施。需通过格子数或重量限制物品栏容量。
  • 世界资源永久耗尽→玩家搜刮完地图后就会退出游戏。应设置资源节点重生或资源随时间再生机制。
  • 未按
    dt
    缩放的帧级需求衰减
    →不同硬件上需求消耗速度不同。需按
    dt
    缩放衰减速率。
  • 无存档机制/大型世界存档不稳定→崩溃会导致数小时游戏进度丢失。需增量持久化存储世界+基地+需求数据,并进行版本控制(参考
    save-systems
    技能)。
  • 扁平化的威胁曲线→后期游戏无压力。需通过夜晚/季节/事件等级提升难度。

Composition (build it from these skills)

技能组合(基于以下技能构建)

  • Items/recipes as data:
    godot-resources
    /
    unity-scriptableobjects
    — items, recipes, tech tree, drop tables.
  • World:
    procedural-gen
    for biomes/resource placement;
    level-design
    for authored areas.
  • Persistence:
    save-systems
    for large-world state, base, inventory, needs, and versioning.
  • Threats:
    game-ai
    for creatures; the engine physics skill for melee/collision.
  • Building/placement:
    godot-tilemap
    /
    unity-tilemap-2d
    (2D) or
    godot-3d-essentials
    (3D) plus UI snapping.
  • UI:
    game-ui-ux
    for inventory/crafting/HUD layout and scaling;
    godot-ui-control
    for the concrete inventory, crafting menu, needs HUD, and build mode.
  • 物品/配方作为数据:
    godot-resources
    /
    unity-scriptableobjects
    ——用于处理物品、配方、科技树、掉落表。
  • **世界系统:**使用
    procedural-gen
    生成生物群系/资源分布;使用
    level-design
    制作人工设计区域。
  • **存档机制:**使用
    save-systems
    处理大型世界状态、基地、物品栏、生存需求以及版本控制。
  • **威胁系统:**使用
    game-ai
    实现生物AI;使用引擎物理技能处理近战/碰撞。
  • **建造/放置系统:**2D游戏使用
    godot-tilemap
    /
    unity-tilemap-2d
    ,3D游戏使用
    godot-3d-essentials
    并搭配UI对齐功能。
  • **UI系统:**使用
    game-ui-ux
    设计物品栏/制作界面/HUD布局与缩放;使用
    godot-ui-control
    实现具体的物品栏、制作菜单、生存需求HUD以及建造模式。

References

参考资料

  • For the full needs model and thresholds, the crafting tech-tree graph, gather/respawn tuning, base-building grids, and threat escalation, read
    references/needs-and-crafting.md
    .
  • 如需了解完整的生存需求模型与阈值、制作科技树图谱、收集/资源重生参数调整、基地建造网格以及威胁升级机制,请阅读
    references/needs-and-crafting.md