axiom-games について
axiom-games は、SpriteKit、SceneKit、RealityKit、入力処理、性能診断を扱う Apple ゲーム開発者向けのスキルルーターです。タスクに応じたガイドへ案内し、SpriteKit の自動監査にも対応します。
主な機能
- 01ゲームタスクに応じたガイド案内
- 02SpriteKit、SceneKit、RealityKit の解説
- 03タッチとゲームコントローラー入力の指針
- 04性能問題と不具合の診断手順
- 05SpriteKit コード自動監査への案内
活用シーン
- 012D SpriteKit ゲームの実装計画
- 02物理、フレームレート、メモリ問題の診断
- 03ゲームへのタッチまたはコントローラー入力の追加
- 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.mdspritekit-auditor.mdspritekit-diag.mdspritekit-ref.mdspritekit.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 を参照 |
コントローラーのホームボタン設定、空間アクセサリー OS27 | skills/game-input.md を参照 |
ゲームウィンドウのサイズ変更、画面の向きのロック、UIRequiresFullScreen OS27 | axiom-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)を参照 |
| ゲーム内コンテンツ、アセットパック、IAP | axiom-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"];
}
- 2D SpriteKit ゲームを構築/設計していますか? →
skills/spritekit.md - 特定の SpriteKit API の使い方を知りたいですか? →
skills/spritekit-ref.md - SpriteKit が動作しない、またはパフォーマンスが悪いですか? →
skills/spritekit-diag.md - タッチ操作を追加する、またはゲームコントローラーの入力を処理しますか? →
skills/game-input.md - 既存の SceneKit コードを保守していますか? → axiom-graphics を参照(skills/scenekit.md)
- SceneKit API リファレンスまたは移行マッピングを確認しますか? → axiom-graphics を参照(skills/scenekit-ref.md)
- 新しい 3D ゲームまたは体験を構築しますか? → axiom-graphics を参照(skills/realitykit.md)
- 特定の RealityKit API の使い方を知りたいですか? → axiom-graphics を参照(skills/realitykit-ref.md)
- RealityKit のエンティティが表示されない、ジェスチャーが動作しない、またはパフォーマンスに問題がありますか? → axiom-graphics を参照(skills/realitykit-diag.md)
- SceneKit から RealityKit に移行しますか? → axiom-graphics を参照(skills/scenekit.md)(移行ツリー)+ axiom-graphics を参照(skills/scenekit-ref.md)(マッピング表)
- AR ゲームを構築しますか? → axiom-graphics を参照(skills/realitykit.md)
- Mac/Windows ゲームを Apple プラットフォームに移植しますか? → axiom-graphics を参照(skills/metal-migration.md)
- ゲーム内コンテンツ(アセットパック、IAP)をアンロックしますか? → axiom-integration を参照(skills/background-assets.md、skills/in-app-purchases.md)
- ゲームでフルスクリーン/向きのロックが必要ですか? またはウィンドウのサイズ変更時に問題が発生しますか? → axiom-uikit を参照(skills/uikit-modernization.md)
- 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 エージェントを起動してください