build-game-monster-system について
ゲーム開発者向けに、ゲームで動作するモンスターアセットの構築と監査を支援するスキルです。データ、リグ、ランタイム、ビューを分離し、再現可能な戦闘タイムラインと適合性検査を定めます。
主な機能
- 01モンスターの4層アーキテクチャ
- 02セマンティックリグと安定したソケット
- 03状態駆動の戦闘連携
- 04シリアライズ可能なテスト用ムーブセット
- 05決定的な適合性テストフィクスチャ
- 06パフォーマンスとLODの検査
活用シーン
- 01ゲーム向けモンスターの追加
- 02戦闘と衝突動作の監査
- 03攻撃タイミングと中断のテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mengto/ skills --skill build-game-monster-systemインストール後、Claude Code で/build-game-monster-systemを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlreferences/monster-contract.md
詳細
ゲーム用モンスターシステムの構築
装飾用メッシュではなく、ゲームプレイに対応したランタイムアセットとしてモンスターを構築します。
契約を確立する
実装または監査の前に、references/monster-contract.md を読んでください。契約を拡張する前に、実際のゲームコンテンツモデル、戦闘イベント、敵のステートマシン、衝突 API、カメラとの距離、アセットローダーを確認してください。
該当する場合は、関連するスキルを使用してください。
- 画像を使ったプロシージャルな再構築と、段階的なビジュアルゲートには
img2threejsを使用します。 - プロシージャル表現とインポート表現の選択、および来歴や予算の記録には
build-hybrid-game-assetsを使用します。 - 知覚、意図、移動、行動遷移には
tune-enemy-aiを使用します。 - 始動・有効・硬直のタイミングと、権威ある接触判定には
design-action-combatを使用します。
4 つのレイヤーを分離する
MonsterDefinition:シリアライズ可能な作成済みデータ。タグ、スケール、ステータス、攻撃、移動、アセットの来歴、予算を含みます。MonsterRig:意味的なトランスフォーム階層、関節、ソケット、二次モーションのアンカー、マテリアル、LOD ビジュアル。MonsterRuntime:現在の状態、タイマー、ターゲットへの意図、体力/姿勢、クールダウン、権威ある戦闘イベント。MonsterViewAdapter:ランタイムの状態に基づいてリグのポーズ、VFX、オーディオ、可視性、LOD を制御します。描画されたポーズからヒットを判定してはいけません。
作成済みの戦闘値をリグや UI に重複して持たせないでください。
リグを構築する
- 上方向を
+Y、前方向を+Z、単位をメートルとし、接地するルートを使用します。 - すべてのモンスターと LOD で、
root -> motion -> bodyを一貫して維持します。 - 肩/腰の動きが肘/膝を経由して手首/足首まで伝わるように、四肢の各セグメントを実際の関節チェーンとして親子付けします。
- 人型以外のモンスターには、対応する意味的な名称を付けます。存在しない解剖学的構造をでっち上げてはいけません。
- 攻撃の発生位置、VFX、オーディオ、ターゲティング、接地、アタッチメント、死亡エフェクト用のソケットを用意します。
- デフォルトでは、ビジュアルメッシュを物理演算から分離します。単純なソリッド形状、ナビゲーション用形状、被ダメージ形状、攻撃形状、トリガー形状を個別に用意します。
- LOD の切り替え時にも、ルート、関節、ソケット、衝突判定、アニメーション状態を維持します。
行動と戦闘を接続する
少なくとも idle、investigate、pursue、reposition、windup、attack、recover、stagger、defeated に対応します。各攻撃定義には、始動、有効、硬直、クールダウン、接触形状/ソケット、ダメージ/姿勢への影響、向きのルール、中断/キャンセルのポリシーを宣言する必要があります。
権威あるアクション ID と衝突イベントに基づいて接触判定を行います。アニメーションで正規化フェーズを示してもかまいませんが、それ自体がダメージを発生させてはいけません。
テスト可能なムーブセットを構成する
- ムーブセットは、意図状態と攻撃 ID のシリアライズ可能なシーケンスとして作成します。攻撃タイミングは攻撃定義に保持し、ムーブセットではコピーせず参照します。
- 攻撃ステップを、始動、有効、硬直の各フェーズに明示的にコンパイルします。
(movesetId, elapsed)から、状態、攻撃、正規化フェーズ、有効フラグ、中断可能性、安定したアクション ID を返す純粋なサンプラーを用意します。- ループのサイクルごとに新しいアクション ID を割り当てます。一方、攻撃の始動、有効、硬直の各フェーズでは同じ ID を維持します。
- 各フェーズの中間点と境界を確認できるクエリ可能なフィクスチャ、またはシード付きフィクスチャを用意します。キャンペーンをプレイしなくても、レビュアーが状態を固定して再現できるようにしてください。
適合性を検証する
- 必須状態、各攻撃フェーズ、中断/ひるみ、死亡、LOD 切り替え、リセットについて、決定論的なフィクスチャを追加します。
- ムーブセットのタイムラインの連続性、アクティブウィンドウの厳密な境界、攻撃範囲の完全なカバー、アクションごとの ID の安定性、ループごとの ID の更新をテストします。
- 関節の伝播、ソケットの安定性、コライダーのカバー範囲、単一接触の冪等性、破棄処理をテストします。
- アプリ内ブラウザーで、実際の遭遇距離からモンスターをレンダリングします。
- トライアングル数、ドローコール数、テクスチャ、フレーム時間、モバイルのピクセル比の挙動を測定します。
- アタッチメントの浮き、必須状態の欠落、ポーズ由来のダメージ、LOD によるソケットのずれ、リソースコストの上限なしのいずれかがある場合、そのアセットを不合格とします。
モンスターが完全に適合しているか、例外を文書化したうえで適合しているか、または共有コントラクトに新しいアーキタイプ機能を追加する必要があるかを報告してください。