关于 godot-mechanic-revival
面向 Godot 游戏开发的死亡与复活机制指南,涵盖检查点、灵魂墓穴、幽灵状态和死亡数据记录。通过进度索引与持久化世界状态,帮助构建死亡后仍保留部分进展的流程。
主要功能
- 01按进度索引选择检查点
- 02检查点与世界进度持久化
- 03复活后的生命恢复与无敌帧
- 04灵魂墓穴与幽灵模式
- 05死亡原因和位置记录
适用场景
- 01实现延迟复活与状态重置流程
- 02在死亡后保留已触发的世界进度
- 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.mdscripts/consequence_tracker.gdcorpse_run_dropper.gdrevival_async_restorer.gdrevival_auto_save_manager.gdrevival_checkpoint_persistence.gdrevival_checkpoint_validator.gdrevival_checkpoint_visuals.gdrevival_death_analytics.gdrevival_death_timer.gdrevival_ghost_mode.gdrevival_global_manager.gdrevival_health_restitution.gdrevival_manager.gdrevival_soul_grave.gdrevival_spectral_shader.gdshaderrevival_state_reset_guard.gd详细介绍
概述
超越 Game Over 的死亡机制:进度索引检查点、灵魂墓冢、幽灵/灵体碰撞层、无敌帧补偿、世界进度位掩码和死亡分析(Sekiro / Hades / Souls-like)。
黄金流程 — 死亡 → 淡出 → 恢复 → 无敌帧 → 持久化世界状态
强制脚本顺序(尝试自行实现前请先阅读):
- revival_global_manager.gd — Autoload 管理死亡 → 延迟 → 重生;通过组
Player查找玩家。 - revival_death_timer.gd — 1–2s 淡出/死亡动画;绝不瞬间重生。
- revival_state_reset_guard.gd — 传送前将速度归零/清除锁定。
- revival_health_restitution.gd — 恢复生命值 + 无敌帧。
- 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 — 技能库路由器和镜像模块入口;用于查找同级技能,或在领域技能编辑后同步共享脚本镜像。