SuperAPI AI 工具集

godot-game-loop-harvest

编程与开发

查看项目

更新于 10-16 10:37

技能介绍

用途

该技能用于在 Godot 4 中实现数据驱动的资源采集循环,涵盖挖矿、伐木、采集等玩法。核心目标是把采集逻辑与数值配置解耦:工具类型、等级、产出范围、掉落场景等均由 Resource(.tres)承载,脚本只负责执行命中校验、产出结算、耗尽表现与重生持久化。

主要能力

  • 命中与产出校验:玩家射线/交互后调用 apply_hit(tool_data: HarvestToolData),由工具枚举与等级决定是否可采集,失败时给出 "wrong_tool" / "low_tier" 反馈。
  • 数据驱动配置:使用 HarvestResourceData / HarvestToolData 作为可共享的 .tres 资产,配置工具枚举与等级、产出范围、可选掉落场景,便于设计师在不改动采集脚本的情况下调参。
  • 采集节点表现:harvestable_node.gd 挂载于 StaticBody3D,支持 mesh 摇晃、耗尽后切换碰撞层。
  • 世界持久化:harvest_respawn_manager.gd 作为 Autoload(HarvestRespawnManager)记录已耗尽节点,实现跨场景的重生与持久化。
  • 离线进度与自动保存:基于 Time.get_unix_time_from_system() 持久化时间戳以计算离线收益;通过 harvest_autosave_manager.gd 以间隔写入 user:// 自动保存,使采集进度在非手动保存时也能留存。
  • 矿脉程序化生成:使用 FastNoiseLite 阈值在 noise.get_noise_2dv(pos) > threshold 处生成 HarvestableNode,形成有机簇状分布,并通过重生管理器持久化已耗尽 ID。
  • 工具耐久:耐久度保存在 HarvestToolData(Resource)而非玩家节点上,命中成功后由工具 Resource 发出耐久/损坏信号。

使用方式

  1. 创建 HarvestResourceData / HarvestToolData 的 .tres 资产(工具枚举 + 等级、产出范围、可选掉落场景)。
  2. 将 harvestable_node.gd 挂载到 StaticBody3D,指定数据与 mesh_to_shake,交互保持在 Layer 1。
  3. 需要世界持久化时,将 harvest_respawn_manager.gd 注册为 Autoload,名为 HarvestRespawnManager。
  4. 命中路径示例:
if collider is HarvestableNode:
    collider.apply_hit(player_tool)
  1. 信号接线:
Signal Payload Wire to
harvested (data, amount) Inventory / harvest_inventory_manager
took_damage (curr, max) HUD bar / popup pool
interaction_failed (reason: StringName) "wrong_tool" / "low_tier" 反馈

关键约束

  • 累计采集数量必须使用 int,不要用 float。
  • 连续采集速率必须在 _process / _physics_process 中乘以 delta,避免经济随帧率变化。
  • 离线进度必须使用 Time.get_unix_time_from_system(),不要用 OS.get_ticks_msec()。
  • 工具类型判断需使用 HarvestToolData.ToolType / StringName 枚举,不要用自由字符串。
  • 运行时修改耐久/生命前需 duplicate(true),避免改写共享 Resource 模板。
  • 不要在 VFX/SFX 播放完成前 queue_free();应先隐藏 mesh、切换碰撞层,播完再释放。
  • 退出时必须保存 UNIX 时间戳,否则离线收益无法计算。
  • 采集逻辑不要与 UI 计数器耦合,只通过信号通信。
  • 不要非均匀缩放碰撞形状,应直接编辑形状资源尺寸。

适用场景

适合需要资源采集核心循环的 Godot 4 项目,例如生存类、采集/拾荒类玩法,可作为采集、库存、经济等系统的底层模块,并可与程序化生成、蒙特卡洛数值平衡等后续环节衔接。

限制与暂未提供

该资料未说明适用的 Godot 具体小版本范围、授权方式、安装命令与收费信息,这些内容暂未提供。