永続的なセーブポイントの仕組みを理解する
永続的なチェックポイントは、戦略的な配置とロジック設定によってプレイヤーの進行状況を保存します。開始地点に戻される基本的なリスポーンとは異なり、永続システムは変数の保存を通じて、最後にアクティブ化されたチェックポイントを維持します。
20〜30秒間隔でチェックポイントが設置されたマップでは、完走率が60〜80%に達するのに対し、チェックポイントがない場合は20〜40%に留まります。また、チェックポイントなしのマップではクリアに8〜12回の試行が必要ですが、設置されている場合はわずか3〜5回で済みます。
ワークショップのリソースについては、BitTopupでエギーパーティーのエギーコインをチャージすることで、競争力のある価格と安全な取引でプレミアム機能を利用できるようになります。
セーブポイントを永続化させる要素
「永続性」とは、ミス(デス)が発生してもチェックポイントのデータを保持し続けることを意味します。これには以下の3つの要素が必要です。
- チェックポイントへの到達を識別する検知メカニズム
- 位置データを保存するための、エギーコード(Eggy Code)変数を用いたストレージシステム
- ミスした際に保存された位置を呼び出すリスポーンロジック
標準リスポーン vs 高度なチェックポイント
標準的なリスポーンは、一律に作動する固定の「リスポーン地点」を使用します。これには条件ロジックがなく、個々のプレイヤーの進行状況を区別することができません。
高度なシステムでは、サンドボックスモードの「チェックポイントボリューム」をトリガーゾーンとして活用し、プレイヤーごとのリスポーン位置を更新します。チェックポイントボリュームの矢印をプレハブに同期させることで、進行状況に応じて変化する動的なリスポーン地点を構築できます。
デフォルトのロジックが機能しない理由
デフォルトのメカニズムは、プレイヤーごとの状態を追跡せずにグローバルに動作します。チェックポイントデータを保存・取得するロジックが存在しないため、ミスをすると初期スポーン地点までハードリセットされてしまいます。
特に60秒を超えるマップでは、最初からのやり直しが繰り返されるとプレイヤーの離脱を招く原因となります。
コア・アーキテクチャの原則
3つの原則:イベント駆動型のアクティブ化、状態の永続化、条件付きリスポーン。
ワークショップの負荷制限(インテンシティ)を考慮する必要があります:基本18,000、職人ポイント1,000で21,000、職人ポイント10,000で25,000まで拡張されます。
必須のロジックコンポーネント
必要なコンポーネントのチェックリスト

- チェックポイントボリューム: 空間検知ゾーン
- イベントトリガーボリューム: プレイヤーのインタラクション監視
- エギーコード変数: データストレージ
- リスポーンデバイス: 30秒のクールダウン制限
- ゴール地点オブジェクト: ボリュームを狙って編集可能
円錐形トリガーは方向性のあるチェックポイントに適しており、半球形トリガーは180度の範囲をカバーします。検知範囲は「プレイヤー」エンティティタイプに設定してください。
変数システムの概要
6つの変数タイプ:
- 位置(Position): 座標データ
- 整数(Integer): チェックポイントの番号
- 浮動小数点(Float): 精密なタイミング
- ブーリアン(Boolean): 状態フラグ(真偽値)
- 文字列(String): 識別子
- ベクトル3(Vector3): 方向データ
グローバル変数はすべてのトリガーで利用可能です。基本的なシステムでは、チェックポイント番号を追跡する整数変数が最も効果的です。
イベントトリガーの種類
「進入検知イベント」はプレイヤーがトリガーボリュームに入った時に実行されます。「デス検知イベント」はプレイヤーが失敗した時にアクティブになります。
エギーコードへのアクセス:「詳細メニュー」>「ユニットを選択」>「エギーコードを編集」。進入イベントでチェックポイント変数を設定し、デスイベントでその変数を読み取ってスポーン位置を決定します。
条件ロジックの設定
条件によって、現在のチェックポイント変数としきい値を比較します。ブーリアン条件は真/偽の評価を行い、整数比較は複数のチェックポイントのシーケンス(順序)を可能にします。
「inputLocked」ブーリアン変数(デフォルトはfalse、0.5秒間trueに変更)を使用すると、チェックポイントのアクティブ化中に入力をロックできます。
最初の永続セーブポイントを作成する
フェーズ1:トリガーゾーンの作成

「チェックポイントボリューム1」のエギーユニットを地面より少し上に配置します。地上設置型の場合は直径2〜3ユニット、壁設置型の場合は1.5〜2ユニットに設定します。トリガー間は最低2ユニットの間隔を空けてください。
矢印をプレハブに同期させて、チェックポイントを視覚的に表示します。
フェーズ2:プレイヤー検知イベント
検知範囲を「プレイヤー」エンティティタイプに設定します。進入イベントを作成し、チェックポイント追跡変数を更新してフィードバックを表示するようにします。
整数変数 CurrentCheckpoint を、このチェックポイントの位置を示す固有の識別子に設定します。
BitTopupでエギーコインを安く購入すれば、高度なワークショップコンポーネントを迅速に入手できます。
フェーズ3:変数の保存
デフォルト値0の整数変数 CurrentCheckpoint を作成します。各チェックポイントには異なる整数(1, 2, 3など)を割り当てます。
位置ベースのリスポーンを行う場合は、プレイヤーの座標を保存する位置変数 LastCheckpointPosition を作成します。
トリガーをまたいでアクセスできるよう、スコープを「グローバル」に設定してください。
フェーズ4:リスポーン位置のロジック

各チェックポイントに、チェックポイント番号と一致する固有の識別子を持つ「リスポーン地点」を配置します。
CurrentCheckpointを読み取り、対応するリスポーン地点をアクティブにするデス検知を作成します。CurrentCheckpointが1ならリスポーン地点1を、2ならリスポーン地点2をアクティブにします。
フェーズ5:テストと検証
実際にプレイして、様々な場所でわざとミスをしてテストします。マップの最初ではなく、最後にアクティブ化したチェックポイントでリスポーンすることを確認してください。
連続アクティブ化やマルチプレイヤー環境などの特殊なケースも確認します。チェックポイントが保存されたことを示す明確なフィードバック(視覚、音、UI)があることを確認しましょう。
高度な変数の設定
変数タイプの選択
整数変数: 進行順序が決まっている連続的なチェックポイントシステムに適しています。チェックポイントごとに値を増やしていきます。
位置変数: 複数のアプローチ方向がある非線形なマップに適しています。動的なリスポーン配置のために正確な座標を保存します。
ブーリアン変数: チェックポイントのアクティブ化フラグや完了状態の管理に使用します。
プレイヤー固有変数 vs グローバル変数
グローバル変数はすべてのプレイヤーに同時に影響します。チームで一緒に進む協力型マップに適しています。
プレイヤー固有の変数(プレイヤー識別子を用いた命名規則を使用)は、対戦型マップで個別の進行状況を管理することを可能にします。
「リンクマップ」機能を使えば、複数のマップにわたる冒険で進行状況を共有できます。
命名規則
チェックポイント変数には、接頭辞 CP_ と分かりやすい識別子を付けましょう:
- CP_MainPath_Current
- CP_SecretArea_Unlocked
- CP_BossRoom_Attempts
バージョン番号(CP_Current_v2)を付けると、開発中の更新がスムーズになります。
ミス後のデータ保持
ミスした際に変数をリセットするようなロジックを避け、チェックポイント変数が永続するようにします。変数の更新は、新しいチェックポイントをアクティブにした時のみ行われるようにしてください。
リスポーン後に変数の整合性を確認するバリデーションチェックを実装しましょう。無効な値が検出された場合は、安全なフォールバック地点に戻るようにします。
デス検知とリスポーンロジック
デスイベントの検知
体力がゼロになった時やプレイヤーがデスゾーンに入った時に、エギーコードを実行するデス・トリガーを設定します。チェックポイント変数を読み取り、リスポーンの挙動を決定するように構成します。
デスゾーンは足場の下、穴の底、または危険なエリアに配置します。通常のプレイエリアと重ならないように注意してください。
リスポーン位置の紐付け
チェックポイント変数を評価し、対応するリスポーン地点をアクティブにする条件チェーンを作成します:もし CurrentCheckpoint = 1 なら RespawnPoint_1 をアクティブにする。もし 2 なら RespawnPoint_2 をアクティブにする。
視覚的な確認のために、チェックポイントのプレハブをリスポーン地点に同期させます。
特殊なケースへの対応
チェックポイント変数に無効な値が入っている場合に備え、開始地点をアクティブにするデフォルトのフォールバックを実装します。
マルチプレイヤーでの競合を避けるため、プレイヤー固有の変数やアクティブ化のキュー(順番待ち)を使用します。
境界チェックを行い、有効な範囲外(例:10個のチェックポイントがあるマップで10以上や0以下)の値を拒否するようにします。
優先順位システム
順序優先により、到達した最も遠いチェックポイントでリスポーンするようにします。新しい値が現在の値を上回る場合のみ、チェックポイント変数を更新するように設定します。
非線形マップでは、意図した進行フローに基づいて優先順位の値を割り当てることで、空間的な優先順位の競合を解決します。



















