mcpField
G
game-transform-systems

game-transform-systems

github.com/lvtd-llc開発159 回インストール8 週間前に更新
リポジトリ

game-transform-systems について

game-transform-systems は、ゲームプレイ、レンダリング、物理、ツールの変換コードを明確かつテスト可能にするスキルです。変換の合成、逆変換、検証のための規約と確認方法を示します。

主な機能

  1. 01座標空間と規約の整理
  2. 02方向を示す変換名と合成
  3. 03クエリへの逆変換の適用
  4. 04カメラと投影の確認
  5. 05往復テストと軸のデバッグ

活用シーン

  1. 01ゲームプレイとレンダリングの変換統一
  2. 02衝突やフィールドのクエリをオブジェクト空間へ移動
  3. 03カメラの投影と逆投影の確認
  4. 04行列順序や座標空間の誤りの調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lvtd-llc/skills --skill game-transform-systems

インストール後、Claude Code で/game-transform-systemsを入力して読み込まれたか確認します。

詳細

ゲームの変換システム

このスキルを使うと、ゲームプレイ、レンダリング、物理演算、ツール全体で、変換コードを明示的で組み合わせ可能かつテスト可能な、一貫性のあるものにできます。

主な参考資料:Oleksandr Kaleniuk 著『Geometry for Programmers』 (https://www.manning.com/books/geometry-for-programmers)。特に第 4 章を参考に、内容を再構成し、言い換えています。補足資料:Khronos glTF 2.0 仕様の変換および座標系の規約 (https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html)。

基本的なワークフロー

  1. 関連するすべての座標空間を列挙します。モデル、ローカル、親、ワールド、ビュー、クリップ、スクリーン、テクスチャ、グリッド、フィールド空間などです。
  2. 規約を一度だけ定義します。右手系・左手系、上方向の軸、単位、行ベクトル・列ベクトル、行列のメモリレイアウト、乗算順序、角度の単位、クォータニオンの順序などです。
  3. local_to_world や world_to_view のように、変換の方向がわかる名前を付けます。
  4. 変換の合成は一箇所で行い、再利用する合成済み行列はキャッシュします。
  5. クエリをより単純な空間に移すために逆変換を使います。特に、ピッキング、SDF、フィールド、オブジェクトローカルな衝突判定で役立ちます。
  6. カメラの構築に必要な項目を明示します。位置、ターゲットまたは前方ベクトル、上方向ベクトル、視野角、アスペクト比、ニア・ファー平面などです。
  7. ゲームプレイの挙動を調整する前に、往復テストとデバッグ軸で検証します。

設計ルール

  • 変換はヘルパーメソッドに隠れた副作用ではなく、第一級のデータとして扱います。
  • レンダリングとゲームプレイで、一貫した変換チェーンを使うことを優先します。エンジンやアセットとの境界にはアダプターを追加します。
  • 平行移動、投影、行列の合成を一つのパイプラインで扱う必要がある場合は、同次座標を使います。
  • 通常の回転、平行移動、スケール、せん断にはアフィン変換を使います。
  • 透視投影、射影、または平面ワーピングが問題に含まれる場合は、射影変換を使います。
  • オブジェクトの変換ごとにフィールドの式を書き換えるのではなく、SDF またはフィールドの入力に逆変換を適用します。
  • 非一様スケールまたはせん断が起こり得る場合は、法線に逆転置行列を適用します。

カメラと投影の確認

  • カメラの向きを定義するには、十分な制約が必要です。位置とターゲットだけでは、上・右・下方向のベクトル、またはそれに相当する情報がない限り、ロールは決まりません。
  • ニア・ファー平面はプレイ可能な範囲に合わせます。値が適切でないと、深度精度が低下します。
  • 既知のスクリーン中央、ビューポートの四隅、ニア平面、ファー平面上の点を使って、投影と逆投影をテストします。
  • ピッキングや UI・ゲーム内の操作に備えて、スクリーン空間における y 軸の方向とピクセル中心の規約を文書化します。

変換のデバッグチェックリスト

  • 選択したオブジェクトのローカル軸を描画します。
  • カメラの視錐台とニア・ファー平面を描画します。
  • 変数名で変換の方向がわかるようにします。
  • レンダリングや物理演算に渡す前に、行列が有限値であることをアサートします。
  • 単位行列、平行移動のみ、回転のみ、スケールのみ、親子関係、逆変換との往復をテストします。
  • 法線、衝突判定、子の変換に影響する場合は、非一様スケールをテストします。

よくある間違い

  • 行優先のメモリレイアウトと、行ベクトルの計算規約を混同する。
  • 一見もっともらしいものの、誤った順序で変換を乗算する。
  • 点ごとの処理が密なループ内で逆行列を再計算する。
  • 同次座標では w = 0 が方向、w = 1 が点を表すことを忘れる。
  • クエリ点を逆変換せず、オブジェクトの変換を SDF の出力に適用する。
  • カメラの制約ではなくアセットの向きを変えて、カメラのロールのバグを修正する。

コメント