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詳細
概要
ゲームオーバーを超えた死:進行インデックスチェックポイント、ソウルグレイブ、ゴースト/スピリット衝突レイヤー、無敵時間(Iフレーム)の回復、ワールド進行ビットマスク、死亡分析(Sekiro/Hades/Souls-like)。
基本フロー — 死亡 → フェード → 復元 → Iフレーム → ワールドの永続化
必須のスクリプト順序(独自に進める前に読んでください):
- revival_global_manager.gd — オートロードで死亡 → 遅延 → リスポーンを管理します。グループ
Playerを使ってプレイヤーを特定します。 - revival_death_timer.gd — 1~2秒のフェード/死亡アニメーションを行います。即座にリスポーンさせてはいけません。
- revival_state_reset_guard.gd — テレポート前に速度をゼロにし、ロックを解除します。
- revival_health_restitution.gd — 体力を回復し、Iフレームを付与します。
- 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フレーム)を省略してはいけません — 2秒間の無敵時間がない状態で、危険地帯の中や敵の近くにリスポーンすると、「死亡ループ」が発生し、プレイヤーを苛立たせます。
永続化とデータ
- チェックポイントをRAMだけに保存してはいけません — ゲームがクラッシュすると、プレイヤーは進行状況を失います。
revival_checkpoint_persistence.gdを使って、直ちにuser://に書き込んでください。 - チェックポイントの座標をハードコードしてはいけません — シーン内の
Marker3DまたはArea3Dノードを使ってください。ハードコードされた座標は、レベルのジオメトリが変更されるとすぐに使えなくなります。 - 死亡時にプレイヤーノードを削除してはいけません — プレイヤーに
queue_free()を呼び出すと、UIや敵からの参照が壊れます。既存のインスタンスを無効化してメッシュを非表示にし、代わりに「リバイブ」してください。
UXと進行ペース
- 即座にリスポーンさせてはいけません — 瞬時の復帰は混乱を招きます。プレイヤーが失敗を受け止められるよう、画面のフェードまたは死亡アニメーションを使って、必ず1~2秒の遅延を設けてください。
- プレイヤーの死亡時にワールド全体をリセットしてはいけません — 現代的な設計では、開いたドアや一意のアイテムの取得状態を保持する必要があります。チェックポイントのリソースでビットマスクを使い、「ワールドの進行状況」を追跡してください。
利用可能なスクリプト
必須:対応するパターンを実装する前に、適切なスクリプトを読んでください。
revival_global_manager.gd
グローバルなリスポーンループを管理する上級者向けシングルトンです。オートロードの起動:レベルシーンより前に 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
リバイブ後の安定性を高める、プロフェッショナルなIフレームと体力回復のロジックです。
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 行として追記してください。 - Spatial シェーダー — 霊体のダウン状態のビジュアルには、メッシュを隠すのではなく、spatial の
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 — ライブラリのルーターであり、ミラー化されたモジュールのエントリです。関連スキルの確認や、ドメインスキルの編集後に共有スクリプトのミラーを同期する際に使用します。