mcpField
G
godot-mechanic-revival

godot-mechanic-revival

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

关于 godot-mechanic-revival

面向 Godot 游戏开发的死亡与复活机制指南,涵盖检查点、灵魂墓穴、幽灵状态和死亡数据记录。通过进度索引与持久化世界状态,帮助构建死亡后仍保留部分进展的流程。

主要功能

  1. 01按进度索引选择检查点
  2. 02检查点与世界进度持久化
  3. 03复活后的生命恢复与无敌帧
  4. 04灵魂墓穴与幽灵模式
  5. 05死亡原因和位置记录

适用场景

  1. 01实现延迟复活与状态重置流程
  2. 02在死亡后保留已触发的世界进度
  3. 03记录死亡数据以分析难度峰值

安装

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

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

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

包含的文件

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

references/
migration-notes.md
scripts/
consequence_tracker.gd
corpse_run_dropper.gd
revival_async_restorer.gd
revival_auto_save_manager.gd
revival_checkpoint_persistence.gd
revival_checkpoint_validator.gd
revival_checkpoint_visuals.gd
revival_death_analytics.gd
revival_death_timer.gd
revival_ghost_mode.gd
revival_global_manager.gd
revival_health_restitution.gd
revival_manager.gd
revival_soul_grave.gd
revival_spectral_shader.gdshader
revival_state_reset_guard.gd

详细介绍

概述

超越 Game Over 的死亡机制:进度索引检查点、灵魂墓冢、幽灵/灵体碰撞层、无敌帧补偿、世界进度位掩码和死亡分析(Sekiro / Hades / Souls-like)。

黄金流程 — 死亡 → 淡出 → 恢复 → 无敌帧 → 持久化世界状态

强制脚本顺序(尝试自行实现前请先阅读):

  1. revival_global_manager.gd — Autoload 管理死亡 → 延迟 → 重生;通过组 Player 查找玩家。
  2. revival_death_timer.gd — 1–2s 淡出/死亡动画;绝不瞬间重生。
  3. revival_state_reset_guard.gd — 传送前将速度归零/清除锁定。
  4. revival_health_restitution.gd — 恢复生命值 + 无敌帧。
  5. revival_checkpoint_persistence.gd — 将世界进度位掩码写入 user://。 可选层:revival_soul_grave.gd、revival_ghost_mode.gd、revival_death_analytics.gd。

绝对不要做(专家级复苏规则)

生命周期与状态
  • 绝不要让玩家以现有速度重生 — 始终在 revival_state_reset_guard.gd 中将 velocity 和 angular_velocity 归零,否则玩家重生时会飞撞墙壁。
  • 绝不要仅按距离选择最近的检查点 — 始终使用“进度索引”(revival_checkpoint_validator.gd)。在非线性游戏中,玩家可能会绕回起始区域;不要降低其重生点的进度。
  • 绝不要跳过“无敌帧”(I-frames) — 在危险区域内或敌人附近重生,却没有 2s 无敌保护,会导致“死亡循环”并令玩家沮丧。
持久化与数据
  • 绝不要只在 RAM 中保存检查点 — 如果游戏崩溃,玩家会丢失进度。使用 revival_checkpoint_persistence.gd 立即写入 user://。
  • 绝不要硬编码检查点坐标 — 在场景中使用 Marker3D 或 Area3D 节点。关卡几何结构一旦变化,硬编码坐标就会失效。
  • 玩家死亡时绝不要删除玩家节点 — 对玩家调用 queue_free() 会破坏 UI 引用以及敌人持有的引用。应禁用处理、隐藏网格,并复苏现有实例。
用户体验与节奏
  • 绝不要让玩家瞬间重生 — 瞬间重生会让人不知所措。始终使用 1-2s 延迟,并配合屏幕淡出或死亡动画,让玩家有时间接受失败。
  • 玩家死亡时绝不要重置整个世界 — 现代游戏设计中,已打开的门和已收集的独特物品应保持持久化。使用检查点资源中的位掩码追踪“世界进度”。

可用脚本

强制要求:实现相应模式前,请先阅读对应脚本。

revival_global_manager.gd

用于全局重生循环的专家级单例。Autoload 启动:在关卡场景之前将其注册为 RevivalGlobalManager。通过 get_tree().get_first_node_in_group("Player") 查找存活的角色 — 将玩家加入组 Player(名称必须完全一致)。负责管理 player_died / player_respawned;关卡和 UI 不得对玩家调用 queue_free()。

revival_checkpoint_persistence.gd

基于资源的系统,用于将最近的检查点和世界状态保存到磁盘。

revival_health_restitution.gd

用于复苏后保持状态稳定的专业无敌帧和生命值补充逻辑。

revival_soul_grave.gd

用于在死亡坐标处生成墓冢的专家级“灵魂取回”机制。

revival_checkpoint_validator.gd

进度感知型神龛 / Area3D 门控。导出 progress_index 和 checkpoint_id;进入时,仅当 progress_index >= RevivalGlobalManager.get_progress() 时,才调用 RevivalGlobalManager.set_active_checkpoint(...)。将检测器 / 玩家交互区域添加到组中,防止玩家回头时降低当前激活神龛的进度。搭配 revival_checkpoint_persistence.gd 实现持久化写入。

revival_death_timer.gd

专业的重生延迟管理器,带有 UI 和动画钩子。

revival_ghost_mode.gd

涉及碰撞层切换的专家级“灵界”转换逻辑。

revival_state_reset_guard.gd

用于在玩家重生时清除速度和状态锁定的重要工具。

revival_checkpoint_visuals.gd

用于切换材质,为玩家提供清晰的“已激活”反馈。

revival_auto_save_manager.gd

自动保存触发逻辑,确保检查点持久化。

revival_spectral_shader.gdshader

为倒地玩家提供半透明、发光的“幽灵”效果。

revival_async_restorer.gd

使用 Tween 实现平滑的属性恢复,带来自然的恢复效果。

revival_death_analytics.gd

持久记录死亡遥测数据(原因、位置、时间),用于平衡游戏。


专家级复活模式

1. 灵体视觉反馈

不要只是隐藏玩家。使用 灵体着色器来传达“倒地”状态。

  • 实现方式:为玩家网格应用带有加法混合和脉冲式 ALPHA 的 ShaderMaterial。
  • 增强效果:结合灰度 ColorRect 后处理效果,营造“灵界”转换的氛围。
2. 死亡分析日志

使用死亡分析来找出“难度骤增点”。

  • 追踪:将 global_position 和 cause_of_death 记录到 JSON 文件。
  • 优化:将这些日志导出到热图工具,以识别玩家遇到困难的区域。

参考

渐进式披露:仅在研究特定 API 时打开官方文档链接;在路由到相关领域时加载关联技能——不要预先加载整个技能网络。

官方文档
  • 保存游戏 — 检查点和世界进度的持久化必须能够应对崩溃;将 Resource/FileAccess 存档与神龛激活时立即写入配合使用。
  • Godot 中的文件路径 — 使用 user:// 存储检查点和死亡分析文件,这样存档就能在项目文件夹外正常工作,并支持跨平台。
  • 资源 — 将检查点负载(last_checkpoint_id、位置、已触发事件)建模为 Resource 数据,并使用 ResourceSaver/ResourceLoader,而非临时全局变量。
  • 单例(Autoload) — 复活/重生管理器 Autoload 负责管理死亡 → 延迟 → 恢复流程,避免关卡和 UI 调用玩家的 queue_free()。
  • 使用信号 — 发出 player_died / player_respawned / true_death 信号,让 HUD、墓碑和分析系统订阅,而不与 Character 脚本耦合。
  • 组 — 通过 Player 组查找存活的玩家,以便重生传送和灵魂墓碑拾取,避免使用脆弱的节点路径。
  • 物理入门 — 幽灵/灵体模式需要切换碰撞层/掩码;不能只依赖 modulate 来阻止与危险物的重叠。
  • CharacterBody3D — 复活时将 velocity 归零(并清除角冲量),否则残余动量会把角色身体甩进墙里。
  • SceneTreeTimer — 死亡→重生延迟和无敌帧窗口使用 create_timer / 单次计时器,让淡出效果和 UI 在恢复前完成。
  • Tween — 平滑恢复生命值并闪烁无敌帧透明度;如果玩家在恢复过程中死亡,则终止并重新创建 Tween。
  • FileAccess — 在 user:// 下追加死亡遥测 JSON 行,供热力图和平衡器使用。
  • 空间着色器 — 使用空间着色器的 ALPHA/EMISSION 脉冲呈现幽灵般的倒下视觉效果,而不是隐藏网格。
相关技能
前置条件
  • godot-signal-architecture — 死亡、可复活和真正死亡事件需要明确的归属,确保 UI、墓碑和分析系统与玩家节点保持解耦。
  • godot-resource-data-patterns — 检查点状态和世界进度位掩码应放在类型化 Resource 中,并支持安全的存档/读档,而不能只依赖可变单例。
  • godot-save-load-systems — 激活检查点应触发可靠的自动存档流程(user://),确保进度在运行中途崩溃后仍能保留。
  • godot-composition — 将复活次数、无敌帧和墓碑投放器保留为组件,而不是把生死逻辑塞进臃肿的 Character 脚本中。
补充技能
  • godot-combat-system — 战斗中的 died / 生命值归零信号通常用于触发复活次数、真正死亡和尸体寻回掉落。
  • godot-rpg-stats — 复活后的生命值/法力值恢复和无敌标记应通过战斗读取的同一属性层写入。
  • godot-tweening — 异步恢复器和无敌帧调制循环需要可中断的 Tween 生命周期,而不是叠加并行闪烁。
  • godot-shaders-basics — 复活状态机建立后,幽灵/灵体材质和灵界后处理提示由着色器技能负责。
  • godot-economy-system — 尸体寻回时的货币损失和灵魂墓地回收必须与钱包/账本保持一致,避免拾取物重复增加资金。
  • godot-scene-management — 优先禁用/隐藏现有玩家实例,而不是重新加载整个关卡;墓地和世界进度必须在死亡过渡后继续保留。
下游/使用方
  • godot-monte-carlo-balancer — 将 revival_death_analytics 中的原因/位置日志输入蒙特卡洛运行,在发布前验证难度峰值和无敌帧 TTK 区间。
  • godot-genre-action-rpg — 类魂神龛、幽灵和灵魂寻回循环由此技能与战斗、属性和存档系统组合而成。
  • godot-genre-roguelike — 以单局结束为结果的死亡、元进度惩罚和后果追踪器会使用复活/真正死亡结果,支持永久死亡或宽容变体。
主技能
  • godot-master — 技能库路由器和镜像模块入口;用于查找同级技能,或在领域技能编辑后同步共享脚本镜像。

评论

支持 Markdown