mcpField
S
survival-crafting

survival-crafting

github.com/gamedev-skills开发5.4k6.6k 次安装1 天前更新
代码仓库

关于 survival-crafting

面向生存 crafting 游戏设计者的组合式技能,规划采集、制作、建造与生存需求构成的循环。内容聚焦资源稀缺、科技进阶和威胁升级等设计压力。

主要功能

  1. 01设计采集到建造的核心循环
  2. 02规划饥饿、口渴与温度需求
  3. 03构建配方、制作站和科技树
  4. 04设计资源节点与工具门槛
  5. 05规划基地建设与威胁升级
  6. 06涵盖大型世界存档需求

适用场景

  1. 01设计生存沙盒的资源采集循环
  2. 02规划制作配方和科技进阶
  3. 03调整需求衰减与失败后果
  4. 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. 资源节点与采集——可采集的世界物件;工具需求/等级;重生机制。
  2. 背包——堆叠、容量(格数或重量)、丢弃/转移、快捷栏。
  3. 制作——配方(材料 → 产物)、制作站/科技门槛、科技树。
  4. 生存需求——饥饿、口渴、温度、耐力、生命值,以及数值衰减与相应后果。
  5. 基地建造——可放置的建筑、建造网格/吸附、储物、制作站。
  6. 世界与昼夜——生物群系/资源(通常由程序生成);推动威胁变化的时间循环。
  7. 威胁——不断升级的敌对生物/天气/事件;战斗或躲避。
  8. 保存/加载——世界状态、背包、基地、需求、进度;大型世界持久化。

设计参数

参数影响备注
需求衰减速率压力节奏速度要足够慢,让玩家可以探索;也要足够快,让需求切实产生影响。
需求未满足的后果风险持续受到伤害,而非立即死亡。
资源稀缺度/重生机制推动探索基地附近资源稀缺 → 前往更远处获取。
工具等级/解锁门槛进阶路线更好的工具 → 解锁新的节点类型。
配方复杂度/科技深度长期目标采用多步骤链式配方,而非平铺直叙的清单。
背包限制(格数/重量)物流压力促使玩家返回基地并存放物品。
威胁升级曲线随时间变化的难度随夜晚/季节/事件逐步升级。
白昼时长游戏节奏白天 = 采集,夜晚 = 防守。

模式

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