survival-crafting
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSurvival 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 → . Permadeath grid dungeon →
. For inventory/items as data assets, use /
; for world generation, .
rpgroguelikegodot-resourcesunity-scriptableobjectsprocedural-gen- 当玩家需要收集资源、制作物品/建筑、管理生存需求并建造基地以应对不断升级的威胁时使用:适用于生存沙盒、制作/基地建造类游戏。
- 当设计生存需求(饥饿/口渴/温度)、制作科技树、收集循环或基地选址/建造系统时使用。
**不适用于以下场景:**制作仅作为RPG次要功能时→使用技能。永久死亡类网格地牢游戏→使用技能。若将物品栏/物品作为数据资产处理,请使用 / ;若涉及世界生成,请使用技能。
rpgroguelikegodot-resourcesunity-scriptableobjectsprocedural-genCore 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
必备系统
- Resource nodes + gathering — harvestable world objects; tool requirements/tiers; respawn.
- Inventory — stacks, capacity (slots or weight), drop/transfer, hotbar.
- Crafting — recipes (inputs → output), a crafting station/tech gate, a tech tree.
- Survival needs — hunger, thirst, temperature, stamina, health, with decay + consequences.
- Base building — placeable structures, a build grid/snapping, storage, crafting stations.
- World + day/night — biomes/resources (often procedural); a time cycle driving threats.
- Threats — hostile creatures/weather/events that escalate; combat or avoidance.
- Save/load — world state, inventory, base, needs, progression; large-world persistence.
- 资源节点与收集系统 — 可采集的世界对象;工具需求/等级;资源重生机制。
- 物品栏系统 — 物品堆叠、容量限制(格子数或重量)、丢弃/转移功能、快捷栏。
- 制作系统 — 配方(输入→输出)、制作台/科技解锁门槛、科技树。
- 生存需求系统 — 饥饿、口渴、温度、耐力、生命值,包含数值衰减机制与对应后果。
- 基地建造系统 — 可放置的建筑、建造网格/对齐功能、存储设施、制作台。
- 世界与昼夜循环系统 — 生物群系/资源分布(通常为 procedural 生成);驱动威胁的时间循环。
- 威胁系统 — 不断升级的敌对生物/天气/事件;战斗或躲避机制。
- 存档/读档系统 — 世界状态、物品栏、基地、生存需求、进度的保存;大型世界的持久化存储。
Design knobs
设计调节项
| 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. |
| 调节项 | 效果 | 说明 |
|---|---|---|
| 需求衰减速率 | 压力节奏 | 慢到足够玩家探索,快到让需求产生实际影响。 |
| 需求未满足的后果 | 风险程度 | 造成持续伤害,而非直接死亡。 |
| 资源稀缺性/重生机制 | 探索驱动力 | 基地附近资源稀缺→促使玩家外出寻找更多资源。 |
| 工具等级/解锁门槛 | 进阶阶梯 | 更高级工具→可采集新类型资源节点。 |
| 配方复杂度/科技深度 | 长期目标 | 多步骤制作链,而非扁平化列表。 |
| 物品栏限制(格子数/重量) | 后勤压力 | 迫使玩家返回基地存放物品。 |
| 威胁升级曲线 | 随时间变化的难度 | 夜晚/季节/事件驱动的难度提升。 |
| 昼夜长度 | 游戏节奏 | 白天=收集资源,夜晚=防御基地。 |
Patterns
设计模式
1. Needs decay with graded consequences
1. 生存需求逐步衰减并带有分级后果
python
undefinedpython
undefinedPseudocode 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 => healundefineddef 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 => healundefined2. Crafting: validate, then atomically consume inputs
2. 制作系统:先验证条件,再原子性消耗材料
python
undefinedpython
undefinedPseudocode. 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
undefinedrecipe = {"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
undefined3. Gathering gated by tool tier
3. 资源收集受工具等级限制
python
undefinedpython
undefinedPseudocode. 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
undefineddef 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
undefinedPitfalls / 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 → needs drain at different speeds on different hardware. Scale by
dt.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— items, recipes, tech tree, drop tables.unity-scriptableobjects - World: for biomes/resource placement;
procedural-genfor authored areas.level-design - Persistence: for large-world state, base, inventory, needs, and versioning.
save-systems - Threats: for creatures; the engine physics skill for melee/collision.
game-ai - Building/placement: /
godot-tilemap(2D) orunity-tilemap-2d(3D) plus UI snapping.godot-3d-essentials - UI: for inventory/crafting/HUD layout and scaling;
game-ui-uxfor the concrete inventory, crafting menu, needs HUD, and build mode.godot-ui-control
- 物品/配方作为数据:/
godot-resources——用于处理物品、配方、科技树、掉落表。unity-scriptableobjects - **世界系统:**使用生成生物群系/资源分布;使用
procedural-gen制作人工设计区域。level-design - **存档机制:**使用处理大型世界状态、基地、物品栏、生存需求以及版本控制。
save-systems - **威胁系统:**使用实现生物AI;使用引擎物理技能处理近战/碰撞。
game-ai - **建造/放置系统:**2D游戏使用/
godot-tilemap,3D游戏使用unity-tilemap-2d并搭配UI对齐功能。godot-3d-essentials - **UI系统:**使用设计物品栏/制作界面/HUD布局与缩放;使用
game-ui-ux实现具体的物品栏、制作菜单、生存需求HUD以及建造模式。godot-ui-control
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