mcpField
G
godot-genre-survival

godot-genre-survival

github.com/thedivergentai开发907291 次安装2 周前更新
代码仓库

关于 godot-genre-survival

面向 Godot 生存游戏开发者的类型技能,涵盖需求值、采集、物品与制作、建造和世界生成。重点是数据驱动的资源设计,以及线程处理和 MultiMesh 等规模化实践。

主要功能

  1. 01按活动强度消耗饥饿与口渴值
  2. 02基于 Resource 的物品、配方和背包数据
  3. 03采集、制作与工具等级产出
  4. 04GridMap 基地放置与安全区生成规则
  5. 05线程化区块加载和程序化生成

适用场景

  1. 01实现饥饿、口渴及渐进生命值损失
  2. 02构建带堆叠限制和耐久度的物品系统
  3. 03制作工具升级与配方解锁流程
  4. 04生成生存世界的生物群系与区块

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-genre-survival

安装后在 Claude Code 中输入/godot-genre-survival确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
architecture-overview.md
common-pitfalls-extended.md
elite-technical-patterns.md
godot-tips.md
key-mechanics.md
migration-notes.md
scripts/
aipathing_system.gd
base_builder.gd
biome_generator.gd
crafting_recipe_processor.gd
interactable.gd
inventory_data.gd
inventory_slot_data.gd
inventory_slot_resource.gd
modular_inventory_controller.gd
status_depletion_manager.gd
survival_patterns.gd

详细介绍

绝对禁止事项(专家级反模式)

生理状态与需求
  • 绝对不要让“需求值”持续以固定速率衰减;必须根据活动严格调整速率(例如,冲刺时的饥饿值消耗速度是闲置时的 3 倍)。
  • 绝对不要因饥饿或脱水而立即死亡;必须改为逐步扣除 HP,并提供明显不同的视觉/音频警告。
  • 绝对不要用浮点计时器执行精确的生死攸关检查;必须使用 is_equal_approx() 或 <=,避免因精度问题漏判 0.0。
  • 绝对不要在 UI 脚本中表示世界时间/昼夜循环;必须使用 AutoLoad(单例),将状态与视觉表现解耦。
采集与库存
  • 绝对不要在没有成长机制的情况下,让采集变得枯燥;必须实现工具分级成长(例如,石斧每击采集 1 个木材,钢斧每击采集 5 个木材),以奖励技术进步。
  • 绝对不要允许库存无限堆叠;必须采用重量上限或严格的堆叠上限(例如,64 个物品),促使玩家策略性地管理资源。
  • 绝对不要强迫玩家“猜测”制作配方;必须采用发现系统,在获取材料后解锁配方。
  • 绝对不要忘记对共享的 Resource(如物品耐久度)执行 duplicate(true);否则,所有实例都会同时损坏。
  • 绝对不要将沉重的物品/制作定义存储在 Node 属性中;必须使用自定义 Resource 容器来存储轻量级数据。
世界与性能
  • 绝对不要在重生点生成威胁;必须设定安全区半径(床铺/出生点),禁止敌人在其中生成。
  • 绝对不要为植被实例化 10,000 个独立的 MeshInstance3D 节点;必须使用 MultiMeshInstance3D 来批量绘制。
  • 绝对不要同步加载大型世界区块;必须使用 ResourceLoader.load_threaded_request() 来避免卡顿。
  • 绝对不要将复杂字典保存到标准文本文件;必须使用二进制序列化,以提高速度并节省空间。
  • 绝对不要在主线程运行程序化地形/噪声算法;必须将其交给 WorkerThreadPool 处理。
  • 绝对不要在 GDScript 中硬编码大型制作表;必须使用 ConfigFile 或 JSON,以便轻松调整平衡并支持 Mod。

专家级组件(scripts/)

强制要求:优先使用这些脚本,而不是内联占位代码。不要将 pass 架构粘贴到场景中。

survival_patterns.gd

必须首先阅读 —— 活动缩放的生命值状态、填充 MultiMesh、多线程加载区块、WorkerThreadPool 噪声区块(generate_noise_chunk_async)、GridMap 网格对齐/放置、持久化收集、深度 duplicate(true)。

status_depletion_manager.gd

需求系统必用 —— 在 _physics_process 中按活动缩放饥饿/口渴值(符合“绝对禁止”:不得固定速率衰减)。

inventory_data.gd

基于 Resource 的核心网格库存:堆叠上限、元数据、添加/移除。

inventory_slot_data.gd

轻量级 UI↔逻辑插槽 DTO。

inventory_slot_resource.gd

可序列化的插槽 Resource,支持耐久度追踪。

modular_inventory_controller.gd

将库存数据连接到 UI 信号的控制器。

interactable.gd

通用的采集/拾取/世界触发器接口。

crafting_recipe_processor.gd

检查材料 → 消耗材料 → 发放成品(便于发现配方)。

决策树 — 生存系统

需求路径
物品 / 配方 / 耐久度数据自定义 Resource + inventory_slot_resource.gd
背包 / 堆叠 / 重量inventory_data.gd + modular_inventory_controller.gd — 重量上限 / 拖放 UI → godot-inventory-system(此处不要重复讲解网格 UI)
饥饿 / 口渴status_depletion_manager.gd — 根据移动状态设置 sprinting
采集 / 打开 / 拾取interactable.gd
制作crafting_recipe_processor.gd
基地建造吸附survival_patterns.gd place_if_empty / GridMap
森林植被通过 populate_nature 使用 MultiMesh — 切勿创建 10k 个 MeshInstance3D
区块流式加载survival_patterns 中的 load_world_chunk 多线程路径
大规模程序化噪声 / 生物群系survival_patterns 中的 generate_noise_chunk_async — 或在地形超出区块辅助函数的处理范围时,必须使用 godot-procedural-generation
阶段配套技能用途
1. 数据godot-resource-data-patterns物品 / 配方 Resources
2. UIgodot-ui-containers, godot-inventory-system网格 + 拖放
3. 世界godot-procedural-generation, godot-3d-world-building噪声、GridMap
4. 逻辑godot-signal-architecture, godot-state-machine-advanced生存需求 + 交互
5. 存档godot-save-load-systems世界 + 背包 + 配方

核心机制(指引,不是教程)

生存需求(随活动调整)

将移动状态接入 StatusDepletionManager.sprinting。生命值等指标耗尽时,逐渐扣减 HP 并发出警告(绝不立即死亡)。参阅脚本 — 不要在 _process 中重新引入恒定的 decay_rate。

分级工具效果

石斧产量为 1 / 钢斧产量为 5 / 靠近时自动使用电锯 — 将其编码为物品 Resource 元数据,而不是硬编码到采集脚本中。

出生点安全区

启用威胁生成器之前,重新抽取出生点,确保其位于床 / player_beds 半径范围之外。

Godot 专属提示

  • TileMapLayer(Godot 4)用于 2D 世界 — 不要使用 Godot 3 的 TileMap API。
  • FastNoiseLite 用于生物群系 / 资源密度(大型地图应通过 WorkerThreadPool 在主线程之外处理)。
  • 大型背包和区块字典使用 ResourceSaver / 二进制序列化。
  • 使用 Y-Sort 处理俯视角 2D 场景中树木 / 道具的遮挡。

常见问题

  1. 枯燥乏味 — 根据工具等级提高采集产量。
  2. 背包杂乱 — 提供较大的堆叠上限 + 储物设施。
  3. 缺少目标 — 除了单纯求生,还应加入科技树 / Boss 压力。

精英级技术实现

开始处理基地建造吸附或生物群系 / 噪声时,必须先阅读 elite-technical-patterns.md。首次处理生存需求 / 背包 / 制作时不要加载 — 使用上方的脚本目录。

深入配方(按需)

主题参考资料 / 脚本
生存需求 / 制作 / 工具key-mechanics.md + 随附的生存脚本
基地建造网格吸附elite-technical-patterns.md + base_builder.gd
生物群系 / 出生点安全elite-technical-patterns.md + biome_generator.gd

参考资料

渐进式披露:只有在研究特定 API 时才打开官方文档链接;只有在需要转向配套领域时才加载相关技能 — 不要预先加载整个技能网络。

官方文档
  • 资源 — 物品定义、配方表和库存槽位应作为资源保存,这样设计师无需更改代码即可调整重量、堆叠上限和耐久度。
  • 空闲与物理处理 — 饥饿度和口渴度的衰减必须在 _physics_process(或 _process)中乘以 delta,确保生命值消耗不受帧率影响。
  • 单例(Autoload) — 世界时间、昼夜变化和全局需求状态应由 Autoload 管理,这样 UI 脚本就不会掌管时钟。
  • 使用信号 — 库存和制作系统应发出变更信号,让 HUD 网格更新,而无需每帧轮询。
  • 保存游戏 — 在不同会话间保存库存、已解锁配方、基地 GridMap 单元格和玩家生命值。
  • 二进制序列化 API — 大型世界/区块字典应使用二进制包,而不是臃肿的文本转储。
  • 后台加载 — 使用 ResourceLoader.load_threaded_request() 流式加载世界区块,避免探索时出现卡顿。
  • 使用 GridMap — 基地建造的吸附和按八叉树分批处理的结构部件使用 GridMap.local_to_map / set_cell_item。
  • 使用 MultiMesh — 森林、岩石和可采集植被必须通过 MultiMesh 批量处理,而不是创建数千个 MeshInstance3D 节点。
  • 使用多线程 — 程序化噪声/地形生成应交由 WorkerThreadPool 处理,绝不能在主线程中执行。
  • FastNoiseLite — 生物群系和资源密度图通过采样 FastNoiseLite 渐变来生成自然的世界布局。
  • AStarGrid2D — 玩家放置结构时,应将对应单元格标记为实心,让 AI 立即绕开新建基地重新规划路径。
相关技能
前置要求
  • godot-gdscript-mastery — 在编写生命值和库存逻辑前,必须先掌握 is_equal_approx、Resource duplicate(true) 和按 delta 缩放的计时器。
  • godot-resource-data-patterns — 物品、配方和槽位数据必须优先使用 Resource,确保耐久度和堆叠元数据能够正确序列化。
  • godot-signal-architecture — 库存/制作事件总线应向 UI 和交互系统发送信号,避免节点之间紧密耦合。
  • godot-autoload-architecture — 按照 Autoload 所有权规则管理昼夜循环和可跨场景切换存续的全局需求管理器。
补充技能
  • godot-inventory-system — 网格堆叠、负重上限和拖放界面,让生存背包系统超越了类型游戏的概略设计。
  • godot-save-load-systems — 带版本管理的世界存档涵盖物品栏资源、基地单元格和已解锁配方列表。
  • godot-procedural-generation — 噪声生物群系和资源散布可与本技能中的 FastNoiseLite 模式配合使用。
  • godot-3d-world-building — GridMap 工具、碰撞和 LOD 实践为大型玩家建造基地提供支持。
  • godot-ai-navigation — 能够识别建造墙体的威胁 AI,需要在结构变化时更新 NavigationAgent / AStar。
  • godot-ui-containers — 制作菜单和物品栏网格属于 Control 布局问题,而非游戏玩法脚本问题。
  • godot-game-loop-harvest — 分级工具产出和采集循环与生存采集共享收割循环模式。
下游 / 使用方
  • godot-monte-carlo-balancer — 配方成本、工具等级和需求衰减率实现数据驱动后,可通过蒙特卡洛职业模拟,在发布平衡表前验证达到科技等级所需时长和饥饿风险区间。
  • godot-genre-open-world — 开放世界生存玩法会用到此处定义的区块流式加载、安全区生成和资源稀缺循环。
  • godot-economy-system — 贸易站和制作品消耗渠道将生存制作扩展到软货币经济体系。
主技能
  • godot-master — 技能库路由器和镜像模块入口;用于发现同级技能,或在编辑领域技能后同步共享脚本镜像。

评论

支持 Markdown