game-development について
ゲーム開発プロジェクト向けのオーケストレーションスキルです。プラットフォーム、次元、専門分野に応じてサブスキルへ案内し、ゲームループ、設計パターン、入力抽象化、性能、AI選択の原則を扱います。
主な機能
- 01プラットフォームや種類別のサブスキル案内
- 02ゲームループと固定タイムステップ
- 03一般的な設計パターンの選択
- 04入力抽象化の原則
- 05性能予算と最適化の順序
- 06複雑さに応じたゲームAI選択
活用シーン
- 01ブラウザー、モバイル、PC向けの方針決定
- 022Dまたは3Dプロジェクトのパターン選択
- 03マルチプレイヤー、音声、美術の作業計画
- 04性能ボトルネックと最適化策の検討
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill game-developmentインストール後、Claude Code で/game-developmentを入力して読み込まれたか確認します。
詳細
ゲーム開発
中核となる原則を提供し、専門のサブスキルへ振り分けるオーケストレーター スキルです。
このスキルを使用するタイミング
ゲーム開発プロジェクトに取り組んでいるときに使用します。このスキルではゲーム開発の原則を解説し、状況に応じて適切なサブスキルへ案内します。
サブスキルのルーティング
プラットフォームの選択
| ゲームの対象は… | 使用するサブスキル |
|---|---|
| Web ブラウザ (HTML5, WebGL) | game-development/web-games |
| モバイル (iOS, Android) | game-development/mobile-games |
| PC (Steam, デスクトップ) | game-development/pc-games |
| VR/AR ヘッドセット | game-development/vr-ar |
次元の選択
| ゲームの種類は… | 使用するサブスキル |
|---|---|
| 2D (スプライト, タイルマップ) | game-development/2d-games |
| 3D (メッシュ, シェーダー) | game-development/3d-games |
専門分野
| 必要なものは… | 使用するサブスキル |
|---|---|
| GDD, バランス調整, プレイヤー心理 | game-development/game-design |
| マルチプレイヤー, ネットワーキング | game-development/multiplayer |
| ビジュアルスタイル, アセットパイプライン, アニメーション | game-development/game-art |
| サウンドデザイン, 音楽, アダプティブオーディオ | game-development/game-audio |
中核となる原則 (全プラットフォーム共通)
1. ゲームループ
プラットフォームに関係なく、すべてのゲームは次のパターンに従います:
INPUT → Read player actions
UPDATE → Process game logic (fixed timestep)
RENDER → Draw the frame (interpolated)
固定タイムステップのルール:
- 物理/ロジック: 固定レート (例: 50Hz)
- レンダリング: できるだけ高速に
- 滑らかな映像のために、状態間を補間します
2. パターン選択マトリクス
| パターン | 使用する場合 | 例 |
|---|---|---|
| ステートマシン | 3〜5 個の離散的な状態 | プレイヤー: Idle→Walk→Jump |
| オブジェクトプーリング | 頻繁な生成/破棄 | 弾丸, パーティクル |
| Observer/イベント | システム間通信 | Health→UI 更新 |
| ECS | 数千の類似エンティティ | RTS ユニット, パーティクル |
| Command | Undo, リプレイ, ネットワーキング | 入力の記録 |
| ビヘイビアツリー | 複雑な AI の判断 | 敵 AI |
判断ルール: まずはステートマシンから始めます。パフォーマンスが求められる場合にのみ ECS を追加します。
3. 入力の抽象化
入力は生のキーではなく、アクションとして抽象化します:
"jump" → Space, Gamepad A, Touch tap
"move" → WASD, Left stick, Virtual joystick
理由: マルチプラットフォーム対応と、キー割り当ての変更が可能になります。
4. パフォーマンス予算 (60 FPS = 16.67ms)
| システム | 予算 |
|---|---|
| 入力 | 1ms |
| 物理 | 3ms |
| AI | 2ms |
| ゲームロジック | 4ms |
| レンダリング | 5ms |
| バッファ | 1.67ms |
最適化の優先順位:
- アルゴリズム (O(n²) → O(n log n))
- バッチ処理 (描画呼び出しの削減)
- プーリング (GC スパイクの回避)
- LOD (距離に応じた詳細度)
- カリング (見えないものをスキップ)
5. 複雑さによる AI の選択
| AI の種類 | 複雑さ | 使用する場合 |
|---|---|---|
| FSM | 単純 | 3〜5 個の状態, 予測可能な動作 |
| ビヘイビアツリー | 中程度 | モジュール化されており, デザイナーにとって扱いやすい |
| GOAP | 高 | 創発的, プランニングベース |
| ユーティリティ AI | 高 | スコアリングに基づく判断 |
6. 衝突判定の戦略
| 種類 | 最適な用途 |
|---|---|
| AABB | 矩形, 高速なチェック |
| 円 | 丸い物体, 低コスト |
| 空間ハッシュ | 同程度のサイズの多数のオブジェクト |
| 四分木 | 大きなワールド, サイズがばらつく場合 |
アンチパターン (汎用)
| してはいけないこと | 代わりに行うこと |
|---|---|
| 毎フレーム、すべてを更新する | イベントやダーティフラグを使用する |
| ホットループ内でオブジェクトを生成する | オブジェクトプーリング |
| 何もキャッシュしない | 参照をキャッシュする |
| プロファイリングなしで最適化する | 先にプロファイリングする |
| 入力とロジックを混在させる | 入力レイヤーを抽象化する |
ルーティングの例
例 1: 「ブラウザで動く 2D プラットフォーマーを作りたい」
→ フレームワークの選定については game-development/web-games から始めます
→ スプライトやタイルマップのパターンについては game-development/2d-games を参照します
→ レベルデザインについては game-development/game-design を参照します
例 2: 「iOS と Android 向けのモバイルパズルゲーム」
→ タッチ入力とストアについては game-development/mobile-games から始めます
→ パズルのバランス調整には game-development/game-design を使用します
例 3: 「マルチプレイヤー VR シューティング」
→ game-development/vr-ar:快適性と没入感のため
→ game-development/3d-games:レンダリングのため
→ game-development/multiplayer:ネットワーキングのため
覚えておいてください: 優れたゲームは完璧さではなく反復から生まれます。素早くプロトタイプを作り、そのあと磨き上げましょう。