mcpField
A
axiom-games

axiom-games

github.com/charleswiltgen開発1.2k1.1k 回インストール今日更新
リポジトリ

axiom-games について

axiom-games は、SpriteKit、SceneKit、RealityKit、入力処理、性能診断を扱う Apple ゲーム開発者向けのスキルルーターです。タスクに応じたガイドへ案内し、SpriteKit の自動監査にも対応します。

主な機能

  1. 01ゲームタスクに応じたガイド案内
  2. 02SpriteKit、SceneKit、RealityKit の解説
  3. 03タッチとゲームコントローラー入力の指針
  4. 04性能問題と不具合の診断手順
  5. 05SpriteKit コード自動監査への案内

活用シーン

  1. 012D SpriteKit ゲームの実装計画
  2. 02物理、フレームレート、メモリ問題の診断
  3. 03ゲームへのタッチまたはコントローラー入力の追加
  4. 04SceneKit の移行や RealityKit 開発の検討

MCP 対応

MCP の axiom_get_agent でエージェントの手順を取得し、関連する Axiom ツールでログ、シンボル、性能を分析できると説明されています。

インストール

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

$npx skills add https://github.com/charleswiltgen/axiom --skill axiom-games

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

skills/
game-input.md
spritekit-auditor.md
spritekit-diag.md
spritekit-ref.md
spritekit.md

詳細

ゲーム

ゲーム開発、SpriteKit、SceneKit、RealityKit、タッチ操作、ゲームコントローラー、インタラクティブなシミュレーションに関する作業では、必ずこのスキルを使用してください。

Axiom エージェントを起動できませんか? このルーターからエージェントに案内された場合は、その手順をインラインで実行してください。MCP 経由では、axiom_get_agent がエージェントを返します。それ以外の場合は、以下のファイルを読み取ってください。必要なのはファイルの検索と読み取りだけです。

ここで利用可能:skills/spritekit-auditor.md。

その他のエージェントについても、MCP 経由では axiom_get_agent がエージェントを返します。そのエージェントの xclog、xcsym、xcprof の手順を、axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_* ツールで実行してください。それ以外の場合は、Axiom のスキルから skills/<agent>.md を検索してください。該当ファイルがない場合は、このスイートのスキルと、PATH 上にある任意の Axiom ツールを使って、自分で作業してください。

クイックリファレンス

症状/タスクリファレンス
SpriteKit ゲームの構築skills/spritekit.md を参照
ゲームへのタッチ操作の追加(TouchController)skills/game-input.md を参照
ゲームコントローラー入力(GCController、ポーリングとハンドラー)skills/game-input.md を参照
コントローラーのホームボタン設定、空間アクセサリー OS27skills/game-input.md を参照
ゲームウィンドウのサイズ変更、画面の向きのロック、UIRequiresFullScreen OS27axiom-uikit(skills/uikit-modernization.md)を参照
SpriteKit API の検索skills/spritekit-ref.md を参照
物理演算の接触イベントが発生しないskills/spritekit-diag.md を参照
フレームレートの低下(SpriteKit)skills/spritekit-diag.md を参照
タッチが認識されないskills/spritekit-diag.md を参照
ゲームプレイ中のメモリ使用量の急増skills/spritekit-diag.md を参照
座標の混乱skills/spritekit-diag.md を参照
シーン遷移時のクラッシュskills/spritekit-diag.md を参照
オブジェクトが壁をすり抜けるskills/spritekit-diag.md を参照
SpriteKit のノード/アクションのリファレンスskills/spritekit-ref.md を参照
SceneKit の保守/移行axiom-graphics(skills/scenekit.md)を参照
SceneKit API/移行マッピングaxiom-graphics(skills/scenekit-ref.md)を参照
RealityKit(3D、ECS、AR)axiom-graphics(skills/realitykit.md)を参照
RealityKit API リファレンスaxiom-graphics(skills/realitykit-ref.md)を参照
RealityKit の診断axiom-graphics(skills/realitykit-diag.md)を参照
RealityKit 27 のゲーム機能(ナビゲーションメッシュ、LOD、スプラット)axiom-graphics(skills/realitykit-ref.md Part 10)を参照
長時間セッションにおけるゲームのパフォーマンス追跡(metalperftrace)axiom-graphics(skills/display-performance.md Part 12)を参照
Mac/Windows ゲームの Metal への移植axiom-graphics(skills/metal-migration.md)を参照
ゲーム内コンテンツ、アセットパック、IAPaxiom-integration(skills/background-assets.md、skills/in-app-purchases.md)を参照

外部の参照先

これらのトピックは、より広いゲーム/3D 分野に含まれますが、別のスキルスイートにあります。

SceneKit(3D — iOS 26 でソフト非推奨):

  • メンテナンスと移行の計画 → axiom-graphics を参照(skills/scenekit.md)
  • API リファレンスと移行マッピング → axiom-graphics を参照(skills/scenekit-ref.md)

RealityKit(3D — モダン):

  • ECS アーキテクチャ、AR、SwiftUI 統合 → axiom-graphics を参照(skills/realitykit.md)
  • API リファレンス → axiom-graphics を参照(skills/realitykit-ref.md)
  • トラブルシューティング → axiom-graphics を参照(skills/realitykit-diag.md)
  • 27 サイクルのゲームエンジンレイヤー:ナビゲーションメッシュ+経路探索、ビヘイビアツリー、アニメーショングラフ、LOD、ガウシアンスプラット → axiom-graphics を参照(skills/realitykit-ref.md Part 10)

ゲームのパフォーマンスと移植:

  • 長時間セッションのゲームトレース、metalperftrace CLI、Game Performance Overview テンプレート → axiom-graphics を参照(skills/display-performance.md Part 12)
  • Metal の移行、シェーダー変換 → axiom-graphics を参照(skills/metal-migration.md)

ゲーム内コンテンツと収益化:

  • Apple-Hosted Background Assets、アセットパック、Steam デポ変換 → axiom-integration を参照(skills/background-assets.md)
  • アプリ内課金、StoreKit ビュー → axiom-integration を参照(skills/in-app-purchases.md)

ウィンドウと向き(OS27):

  • 27 では iPhone を含むすべてのアプリでサイズ変更が可能です。UIRequiresFullScreen はゲーム向けの個別スナップリサイズを意味するようになりました(フルスクリーンを無効にする設定ではありません)。向きのロックは設定であり、最小サイズは sizeRestrictions で指定します → axiom-uikit を参照(skills/uikit-modernization.md)
  • ゲームを iPhone ミラーリングで実行する場合:トラックパッド/マウス入力は間接イベントとしてカスタムジェスチャーに届き、シーンは常に縦向きを報告します → axiom-uikit を参照(skills/uikit-modernization.md)
  • ライブリサイズ中の Metal ドローアブルのサイズ設定、レンダーターゲットの再割り当て、品質のスロットリング → axiom-graphics を参照(skills/resizable-rendering.md)

判断ツリー

digraph games {
    start [label="Game development" shape=ellipse];
    what [label="Which framework?" shape=diamond];
    sprite_what [label="SpriteKit need?" shape=diamond];

    start -> what;
    what -> sprite_what [label="SpriteKit (2D)"];
    what -> "skills/game-input.md" [label="touch controls / game controllers"];
    what -> "axiom-graphics/scenekit" [label="SceneKit (3D legacy)"];
    what -> "axiom-graphics/realitykit" [label="RealityKit (3D modern)"];
    what -> "axiom-graphics/metal-migration" [label="porting (Metal)"];

    sprite_what -> "skills/spritekit.md" [label="architecture/patterns"];
    sprite_what -> "skills/spritekit-ref.md" [label="API lookup"];
    sprite_what -> "skills/spritekit-diag.md" [label="broken/slow"];
}
  1. 2D SpriteKit ゲームを構築/設計していますか? → skills/spritekit.md
  2. 特定の SpriteKit API の使い方を知りたいですか? → skills/spritekit-ref.md
  3. SpriteKit が動作しない、またはパフォーマンスが悪いですか? → skills/spritekit-diag.md
  4. タッチ操作を追加する、またはゲームコントローラーの入力を処理しますか? → skills/game-input.md
  5. 既存の SceneKit コードを保守していますか? → axiom-graphics を参照(skills/scenekit.md)
  6. SceneKit API リファレンスまたは移行マッピングを確認しますか? → axiom-graphics を参照(skills/scenekit-ref.md)
  7. 新しい 3D ゲームまたは体験を構築しますか? → axiom-graphics を参照(skills/realitykit.md)
  8. 特定の RealityKit API の使い方を知りたいですか? → axiom-graphics を参照(skills/realitykit-ref.md)
  9. RealityKit のエンティティが表示されない、ジェスチャーが動作しない、またはパフォーマンスに問題がありますか? → axiom-graphics を参照(skills/realitykit-diag.md)
  10. SceneKit から RealityKit に移行しますか? → axiom-graphics を参照(skills/scenekit.md)(移行ツリー)+ axiom-graphics を参照(skills/scenekit-ref.md)(マッピング表)
  11. AR ゲームを構築しますか? → axiom-graphics を参照(skills/realitykit.md)
  12. Mac/Windows ゲームを Apple プラットフォームに移植しますか? → axiom-graphics を参照(skills/metal-migration.md)
  13. ゲーム内コンテンツ(アセットパック、IAP)をアンロックしますか? → axiom-integration を参照(skills/background-assets.md、skills/in-app-purchases.md)
  14. ゲームでフルスクリーン/向きのロックが必要ですか? またはウィンドウのサイズ変更時に問題が発生しますか? → axiom-uikit を参照(skills/uikit-modernization.md)
  15. SpriteKit コードを自動スキャンしますか? → spritekit-auditor エージェント

自動スキャン

SpriteKit の監査 → spritekit-auditor エージェントを起動するか、/axiom:audit spritekit を実行します

アンチパターンとアーキテクチャ上の不足の両方を検出します:

  • 物理演算のビットマスクの問題(デフォルトの 0xFFFFFFFF、contactTestBitMask の未設定、マジックナンバー)
  • 描画呼び出しの無駄(ゲームプレイ中の SKShapeNode、テクスチャアトラスの未使用)
  • ノードの蓄積と、クリーンアップを伴わない update() 内での際限のないスポーン
  • アクションによるメモリーリーク(self の強参照、withKey: のない .repeatForever)
  • 座標の混同(in: self ではなく touch.location(in: self.view) を使用)
  • 反応しない入力領域(isUserInteractionEnabled を設定せずに独自の touchesBegan を実装)
  • 頻繁に生成されるオブジェクトに対するオブジェクトプーリングの未使用
  • デバッグオーバーレイの未設定、または表示制御の欠如
  • シーンのリーク(removeAllActions() と子ノードのクリーンアップを行わずに遷移)
  • 時間ステップのクランプ不足 → スパイラル・オブ・デスにより、ボディが壁をすり抜けて移動
  • HUD がカメラではなくシーンのルートにアタッチされ、スクロールに合わせてずれる
  • usesPreciseCollisionDetection が設定されていない高速なボディ(すり抜け)

スコア:PERFORMANT / DEGRADED / UNPLAYABLE

重要なパターン

SpriteKit(skills/spritekit.md):

  • ビットマスクを明示的に指定する PhysicsCategory 構造体(デフォルトの 0xFFFFFFFF は幽霊衝突の原因になります)
  • ビューポートと HUD を分離するカメラノードパターン
  • SKShapeNode を事前にテクスチャへレンダリングする変換
  • すべての SKAction.run クロージャーで [weak self] を使用
  • スパイラル・オブ・デスを防ぐクランプを備えたデルタタイム

SpriteKit の診断(skills/spritekit-diag.md):

  • 5 ステップのビットマスクチェックリスト(推測に 30~120 分かける代わりに 2 分で確認)
  • 最初に必ず実施する診断手順としてのデバッグオーバーレイ
  • すり抜け防止のフローチャート
  • showsNodeCount の推移によるメモリー増加の診断

ゲーム入力(skills/game-input.md):

  • GCController のパイプラインを 1 つに統一 — タッチ操作を GCController として表現し、既存のロジックは変更しません
  • TCTouchController.isSupported によるゲートと、接続・描画・タッチのルーティング設定
  • 移動とカメラ用に画面の半分を占めるコライダー形状を使用(小さな円は使用しません)
  • 全画面ゲーム向けにセーフエリアを考慮してアンカーのオフセットを調整
  • 視点操作・照準操作には GCMouse のデルタ、キー状態には GCKeyboard を使用(iPad のポインター、iPhone ミラーリング)
  • コントローラーの Home ボタン設定と visionOS の空間アクセサリー OS27

合理化への対策

思考実態
「SpriteKit はシンプルだから、スキルは必要ない」物理演算のビットマスクはデフォルトで 0xFFFFFFFF に設定され、存在しない衝突を引き起こします。ビットマスクのチェックリストを使えば、2 分で見つけられます。
「SKShapeNode を使えばいい。手っ取り早い」SKShapeNode はそれぞれ個別の描画呼び出しになります。50 個使えば、描画呼び出しは 50 回です。spritekit.md に、テクスチャへ事前レンダリングするパターンがあります。
「座標系は自分で把握できる」SpriteKit の原点は左下です(UIKit とは逆です)。アンカーポイントがさらに加わります。spritekit-diag.md の症状 6 を使えば、5 分で解決できます。
「物理演算は簡単だ」ビットマスクのプロパティは 3 種類あり、コールバック内の変更ルールやトンネリングのエッジケースもあります。spritekit.md のセクション 3 では、こうした落とし穴をすべて解説しています。
「自分のデバイスではパフォーマンスに問題はない」パフォーマンスはデバイスによって大きく異なります。spritekit.md のセクション 6 に、デバッグオーバーレイのチェックリストがあります。
「新しいプロジェクトでも SceneKit で問題ない」SceneKit は iOS 26 で段階的に非推奨となりました。新機能は追加されず、セキュリティパッチのみが提供されます。axiom-graphics (skills/scenekit.md) に移行の判断フローがあります。
「シンプルな 3D アプリに ECS は大げさだ」すでに ECS を使っています。Entity と ModelComponent がそれに当たります。axiom-graphics (skills/realitykit.md) では、シンプルな構成から複雑な構成へ拡張する方法を説明しています。
「タップには衝突形状は必要ない」RealityKit のジェスチャーには CollisionComponent が必要です。axiom-graphics (skills/realitykit-diag.md) を使えば、推測に 30 分かける代わりに 2 分で原因を特定できます。
「タッチ操作には UIButton を重ねればいい」TouchController は Metal の描画パスでレンダリングされ、GCController として公開されるため、既存のコントローラーロジックがそのまま機能します。UIButton を重ねると、入力経路が二重になり、フレームごとに UIKit の負荷が発生します。game-input.md のセクション 2 を参照してください。
「タッチ操作なら、コントローラーのボタンをすべて画面に表示すればいい」ボタンを 1 対 1 で対応させるとプレイエリアが煩雑になり、3 本以上の指が必要になります。game-input.md のセクション 5 に、再設計のパターン(状況に応じたアイコン、未使用ボタンの非表示、コンボの折りたたみ)があります。
「ゲームは全画面表示だから、サイズ変更への対応は不要だ」27 では iPhone を含むすべてのアプリでサイズ変更が可能です。UIRequiresFullScreen を設定しても、ゲームを離散的なスナップサイズに変更できるだけで、キャンバスを固定できるわけではありません。axiom-uikit (skills/uikit-modernization.md) に、シーンのジオメトリと最小サイズのパターンがあります。

呼び出し例

ユーザー:「SpriteKit のゲームを作っています」 → skills/spritekit.md を参照してください

ユーザー:「物理演算の接触イベントが発生しません」 → skills/spritekit-diag.md を参照してください

ユーザー:「テクスチャから物理ボディを作るにはどうすればよいですか?」 → skills/spritekit-ref.md を参照してください

ユーザー:「ゲームのフレームレートが低下しています」 → skills/spritekit-diag.md を参照してください

ユーザー:「利用できるアクションの種類は何ですか?」 → skills/spritekit-ref.md を参照してください

ユーザー:「オブジェクトが壁をすり抜けます」 → skills/spritekit-diag.md を参照してください

ユーザー:「コントローラーゲームを iPhone に移植して、タッチ操作を追加する必要があります」 → skills/game-input.md を参照してください

ユーザー:「ゲームコントローラーの入力はどのように処理しますか?」 → skills/game-input.md を参照してください

ユーザー:「visionOS で空間アクセサリの入力を読み取るにはどうすればよいですか?」 → skills/game-input.md を参照してください

ユーザー:「ウィンドウのサイズを変更すると、ゲームのレイアウトが崩れます」 → axiom-uikit (skills/uikit-modernization.md) を参照してください

ユーザー:「3D ゲームを作る必要があります」 → 呼び出し:axiom-graphics (skills/realitykit.md) を参照してください

ユーザー:「SceneKit から RealityKit に移行しています」 → 呼び出し:axiom-graphics (skills/scenekit.md) を参照してください + axiom-graphics (skills/scenekit-ref.md) を参照してください

ユーザー:「SpriteKit のコードをスキャンして、よくある問題を確認してもらえますか?」 → spritekit-auditor エージェントを起動してください

コメント