关于 survival-crafting
面向生存 crafting 游戏设计者的组合式技能,规划采集、制作、建造与生存需求构成的循环。内容聚焦资源稀缺、科技进阶和威胁升级等设计压力。
主要功能
- 01设计采集到建造的核心循环
- 02规划饥饿、口渴与温度需求
- 03构建配方、制作站和科技树
- 04设计资源节点与工具门槛
- 05规划基地建设与威胁升级
- 06涵盖大型世界存档需求
适用场景
- 01设计生存沙盒的资源采集循环
- 02规划制作配方和科技进阶
- 03调整需求衰减与失败后果
- 04设计基地防御和逐步升级的威胁
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill survival-crafting安装后在 Claude Code 中输入/survival-crafting确认已加载。
附带文件references/needs-and-crafting.md
详细介绍
生存制作
一份面向生存制作类游戏的指南——采集 → 制作 → 建造循环、生存需求、制作与科技进阶,以及基地建造。这是一项组合式技能:它会统筹背包数据、世界内容、持久化与威胁。它不会重新讲解这些基础要素,而是定义循环及压力系统(需求、稀缺性、升级),让生存充满紧张感,而非令人厌倦。
适用场景
- 当玩家需要采集资源、制作物品或建筑、管理生存需求,并建造基地以应对不断升级的威胁时使用:生存沙盒、制作/基地建造类游戏。
- 设计需求(饥饿/口渴/温度)、制作科技树、采集循环,或基地选址与建造时使用。
不适用场景: 制作只是 RPG 中的次要功能 → rpg。永久死亡的网格地牢 → roguelike。如需将背包/物品用作数据资源,请使用 godot-resources/unity-scriptableobjects;如需生成世界,请使用 procedural-gen。
核心循环
采集原始资源 → 制作工具/物品 → 建造并升级基地 → 管理生存需求 → 前往更远处探索以获取更好的资源 → 在不断升级的威胁中生存 → 提升等级后重复循环。 每一轮循环都应解锁下一轮(更好的工具 → 前往新的生物群系 → 获取新资源 → 制作更好的物品)。当这条进阶路线断裂时,游戏就会变成枯燥的重复劳动。
必备系统
- 资源节点与采集——可采集的世界物件;工具需求/等级;重生机制。
- 背包——堆叠、容量(格数或重量)、丢弃/转移、快捷栏。
- 制作——配方(材料 → 产物)、制作站/科技门槛、科技树。
- 生存需求——饥饿、口渴、温度、耐力、生命值,以及数值衰减与相应后果。
- 基地建造——可放置的建筑、建造网格/吸附、储物、制作站。
- 世界与昼夜——生物群系/资源(通常由程序生成);推动威胁变化的时间循环。
- 威胁——不断升级的敌对生物/天气/事件;战斗或躲避。
- 保存/加载——世界状态、背包、基地、需求、进度;大型世界持久化。
设计参数
| 参数 | 影响 | 备注 |
|---|---|---|
| 需求衰减速率 | 压力节奏 | 速度要足够慢,让玩家可以探索;也要足够快,让需求切实产生影响。 |
| 需求未满足的后果 | 风险 | 持续受到伤害,而非立即死亡。 |
| 资源稀缺度/重生机制 | 推动探索 | 基地附近资源稀缺 → 前往更远处获取。 |
| 工具等级/解锁门槛 | 进阶路线 | 更好的工具 → 解锁新的节点类型。 |
| 配方复杂度/科技深度 | 长期目标 | 采用多步骤链式配方,而非平铺直叙的清单。 |
| 背包限制(格数/重量) | 物流压力 | 促使玩家返回基地并存放物品。 |
| 威胁升级曲线 | 随时间变化的难度 | 随夜晚/季节/事件逐步升级。 |
| 白昼时长 | 游戏节奏 | 白天 = 采集,夜晚 = 防守。 |
模式
1. 需求衰减与分级后果
# 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
2. 制作:先验证,再原子性地消耗材料
# 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
3. 采集受工具等级限制
# 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
陷阱 / 失败模式
- 需求一旦耗尽就立刻致命 → 令人沮丧,还会让玩家反复读档。让失败伤害随时间累积,并提供明确警告和恢复途径(模式 1)。
- 没有阶梯的重复劳动 → 采集永远无法解锁新的采集内容。每个阶段都必须开启下一阶段(更好的工具 → 新节点 → 新资源 → 更好的制作物品)。
- 非原子化制作 → 在边缘情况下消耗了输入材料,却没有发放产出。先验证,再一步完成消耗和添加(模式 2)。
- 没有容量上限的库存 → 缺少物流方面的紧张感,也没有建造基地或储物设施的理由。按栏位或重量设定上限。
- 世界资源永久耗尽 → 玩家会搜刮整张地图后退出。让节点重生,或让资源随时间再生。
- 未按
dt缩放的逐帧衰减 → 不同硬件上的需求消耗速度不同。按dt缩放。 - 没有存档 / 大型世界的存档不稳定 → 一次崩溃就会抹去数小时进度。增量持久化世界、基地、需求数据,并为存档添加版本号(参见
save-systems)。 - 威胁曲线平缓 → 后期缺乏压力。通过夜晚 / 季节 / 事件阶段逐步提升威胁。
组合(使用以下技能构建)
- 将物品 / 配方作为数据:
godot-resources/unity-scriptableobjects— 物品、配方、科技树、掉落表。 - 世界: 使用
procedural-gen生成生物群系 / 资源分布;使用level-design设计固定区域。 - 持久化: 使用
save-systems保存大型世界状态、基地、库存、需求数据,并管理版本。 - 威胁: 使用
game-ai处理生物;使用引擎物理技能处理近战 / 碰撞。 - 建造 / 放置: 2D 使用
godot-tilemap/unity-tilemap-2d,3D 使用godot-3d-essentials,并配合 UI 吸附功能。 - UI: 使用
game-ui-ux设计库存 / 制作 / HUD 的布局和缩放;使用godot-ui-control实现具体的库存、制作菜单、需求 HUD 和建造模式。
参考资料
- 有关完整的需求模型和阈值、制作科技树图、采集 / 重生调校、基地建造网格和威胁升级,请阅读
references/needs-and-crafting.md。
评论
支持 Markdown