mcpField
G
game-developer

game-developer

github.com/404kidwiz開発223 回インストール
リポジトリ

game-developer について

game-developerは、UnityやUnreal Engineを使う開発チーム向けのゲーム開発スキルです。ゲームプレイ、グラフィックス、マルチプレイヤー、エンジン設計を扱い、2D/3DやVR/ARの開発フローを示します。

主な機能

  1. 01UnityとUnreal Engineの開発指針
  2. 02ゲームプレイとキャラクター機能の試作
  3. 03グラフィックスとレンダリングの最適化
  4. 04マルチプレイヤーネットワークのパターン
  5. 05VR/ARとエディターツールのワークフロー

活用シーン

  1. 01戦闘やキャラクターコントローラーの試作
  2. 02ゲームのグラフィックス性能改善
  3. 03マルチプレイヤーのネットワーク方式の検討
  4. 04VR/ARのゲームプレイと操作の開発

インストール

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

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill game-developer

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

詳細

ゲーム開発者

目的

Unity(C#)と Unreal Engine(C++)を専門とする、インタラクティブエンターテインメント開発の専門知識を提供します。ゲームプレイのプログラミング、グラフィックスの最適化、マルチプレイヤーのネットワーク通信、エンジンアーキテクチャを通じて、没入感のあるゲーム体験を実現する 2D/3D ゲームを開発します。

使用するタイミング

  • ゲームメカニクスのプロトタイピング(キャラクターコントローラー、戦闘システム)
  • グラフィックス性能の最適化(シェーダー、LOD、オクルージョンカリング)
  • マルチプレイヤーのネットワーク通信の実装(Netcode for GameObjects、Mirror、Unreal Replication)
  • レベルアーキテクチャとストリーミングシステムの設計
  • VR/AR 体験の開発(OpenXR、ARKit)
  • カスタムエディターツールとパイプラインの作成


2. 判断フレームワーク

エンジンの選定
Which engine fits the project?
│
├─ **Unity**
│  ├─ Mobile/2D/VR? → **Yes** (Best ecosystem, smaller build size)
│  ├─ Team knows C#? → **Yes**
│  └─ Stylized graphics? → **Yes** (URP is flexible)
│
├─ **Unreal Engine 5**
│  ├─ Photorealism? → **Yes** (Nanite + Lumen out of box)
│  ├─ Open World? → **Yes** (World Partition system)
│  └─ Team knows C++? → **Yes** (Or Blueprints visual scripting)
│
└─ **Godot**
   ├─ Open Source requirement? → **Yes** (MIT License)
   ├─ Lightweight 2D? → **Yes** (Dedicated 2D engine)
   └─ Linux native dev? → **Yes** (Excellent Linux support)
マルチプレイヤーアーキテクチャ
モデル説明最適な用途
クライアントホスト型(P2P)1 人のプレイヤーがホストになります。協力プレイゲーム、格闘ゲーム(ロールバック対応)。低コストです。
専用サーバークラウド上の権威サーバーです。競技性の高いシューティングゲーム、MMO。不正行為を防止します。
リレーサーバーリレーサービス(例:Unity Relay)です。NAT の問題を回避できる、セッションベースのゲーム。
グラフィックスパイプライン(Unity)
パイプライン対象メリット
URP(Universal)モバイル、VR、Switch、PC高性能でカスタマイズ可能。大規模なアセットストアにも対応します。
HDRP(High Def)PC、PS5、Xbox Series X写実的な表現、ボリューメトリックライティング、コンピュートシェーダー。
Built-inレガシー新規プロジェクトでは使用しないでください。

要注意事項 → graphics-engineer(スペシャリスト)にエスカレーション:

  • カスタムレンダリングバックエンド(Vulkan/DirectX/Metal)を一から作成する
  • ドライバーレベルの GPU クラッシュをデバッグする
  • 新しい GI(グローバルイルミネーション)アルゴリズムを実装する


ワークフロー 2:Unreal Engine のマルチプレイヤー設定

目標: サーバーからクライアントに変数(Health)を複製します。

手順:

  1. ヘッダー(Character.h)

    UPROPERTY(ReplicatedUsing=OnRep_Health)
    float Health;
    
    UFUNCTION()
    void OnRep_Health();
    
    void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
    
  2. 実装(Character.cpp)

    void AMyCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const {
        Super::GetLifetimeReplicatedProps(OutLifetimeProps);
        DOREPLIFETIME(AMyCharacter, Health);
    }
    
    void AMyCharacter::TakeDamage(float DamageAmount) {
        if (HasAuthority()) {
            Health -= DamageAmount;
            // OnRep_Health() called automatically on clients
            // Must call manually on Server if needed
            OnRep_Health(); 
        }
    }
    
  3. Blueprint との統合

    • UI のプログレスバーを Health 変数にバインドします。
    • 「Play as Client」(NetMode)でテストします。


ワークフロー 4:VFX Graph と Shader Graph(視覚効果)

目標: 魔法の呪文用に GPU アクセラレーション対応のパーティクルシステムを作成します。

手順:

  1. Shader Graph(見た目)

    • Unlit Shader Graph を作成します。
    • Time でスクロールする Voronoi Noise ノードを追加します。
    • Color プロパティ(HDR)と乗算します。
    • Base Color と Alpha に接続します。
    • Surface Type を Transparent / Additive に設定します。
  2. VFX Graph(動き)

    • Visual Effect Graph アセットを作成します。
    • Spawn コンテキスト: Constant Rate(1000/sec)。
    • Initialize: Lifetime(0.5s - 1s)と Velocity(Random Direction)を設定します。
    • Update: Turbulence(Noise Field)を追加し、風を再現します。
    • Output: Quad Output に、上で作成した Shader Graph を使用するよう設定します。
  3. 最適化

    • パーティクルでゲームプレイロジック(例:ダメージ)を発生させる必要がある場合は、GPU Events を使用します。
    • カリングの問題を避けるため、Bounds を正しく設定します。


5. アンチパターンと注意点

❌ アンチパターン 1:Update() 内の重い処理

例:

  • 毎フレーム FindObjectOfType、GetComponent、または負荷の高い計算を実行する。

問題点:

  • CPU のパフォーマンスが大幅に低下します。
  • モバイル端末のバッテリーを消耗します。

正しい方法:

  • Start() または Awake() で参照をキャッシュします。
  • 毎フレーム実行する必要のない処理(例:AI の経路探索を 0.5 秒ごとに更新する)には、コルーチンまたは InvokeRepeating を使います。
❌ アンチパターン 2:クライアントを信頼する

例:

  • クライアントがサーバーに「プレイヤー X を撃った」と送信する。
  • サーバーがただちにダメージを適用する。

問題点:

  • 不正行為をするプレイヤーが偽のパケットを送信できてしまいます。

正しい方法:

  • 権威サーバー: クライアントは「発砲した」と送信します。サーバーが命中を計算し、クライアントに「命中した」と伝えます。
  • ローカルプレイヤーの遅延を軽減するために、予測と再調整を使います。
❌ アンチパターン 3:巨大なクラス

例:

  • PlayerController.cs が 2000 行にわたり、移動、戦闘、インベントリ、UI、オーディオを処理する。

問題点:

  • スパゲッティコードになります。
  • デバッグが困難になります。

正しい方法:

  • コンポジション: PlayerMovement、PlayerCombat、PlayerInventory に分割します。
  • コンポーネントを使って責務を分割します。


7. 品質チェックリスト

パフォーマンス:

  • フレームレート: 対象ハードウェアで安定した 60fps を維持します。
  • GC 割り当て: メインのゲームプレイループで、フレームごとの割り当てを 0 バイトにします。
  • ドローコール: 適切にバッチ処理します(Frame Debugger で確認してください)。
  • 読み込み時間: シーンやアセットの読み込みには非同期読み込みを使います。

コードアーキテクチャ:

  • 疎結合: システム間の通信にはイベントやインターフェースを使い、強い依存関係を避けます。
  • クリーン: 500 行を超える「巨大なクラス」がないことを確認します。
  • バージョン管理: 大容量バイナリ(テクスチャ、オーディオ)は Git LFS で管理します。

UX/仕上げ:

  • 操作: 入力の再割り当てに対応します。
  • UI: さまざまなアスペクト比(16:9、21:9、モバイルのノッチ)に合わせて正しく拡大縮小します。
  • フィードバック: すべてのプレイヤー操作に音声/視覚的な合図(演出)を用意します。

例

例 1:2D プラットフォーマーゲームの開発

シナリオ: 物理ベースのゲームプレイを採用した、商用 2D プラットフォーマーを開発します。

実装:

  1. 物理演算:操作性の高いプラットフォーマー向けにカスタム物理エンジンを用意します
  2. アニメーション:ステートマシンを使ったスプライトベースのアニメーション
  3. レベルデザイン:プロシージャル要素を含むタイルマップベースのレベル
  4. オーディオ:アダプティブミュージックを備えた空間オーディオシステム

技術的なアプローチ:

# Character controller pattern
class PlayerCharacter:
    def update(self, dt):
        input = self.input_system.get_player_input()
        velocity = self.physics.apply_gravity(velocity, dt)
        velocity = self.handle_movement(input, velocity)
        displacement = self.physics.integrate(velocity, dt)
        self.handle_collisions(displacement)
        self.animation.update_state(velocity, input)
例 2:VR 体験の開発

シナリオ: Oculus/Meta Quest 向けに没入感のある VR 体験を制作します。

VR の実装:

  1. 移動方式:テレポートとスムーズな移動の選択肢
  2. インタラクション:ジェスチャー認識に対応したハンドトラッキング
  3. 最適化:シングルパスステレオレンダリング
  4. 快適性:敏感なユーザー向けの快適モードの選択肢

主な検討事項:

  • 快適性を保つため、最低 72Hz のフレームレートを確保します
  • 設計時に乗り物酔いを避けます
  • リアルなインタラクションを実現するハンド物理演算
  • スタンドアロンヘッドセットのバッテリーを最適化します
例 3:マルチプレイヤーのバトルロイヤル

シナリオ: 100 人のプレイヤーが参加する、競技性の高いマルチプレイヤーゲームを開発します。

マルチプレイヤーアーキテクチャ:

  1. ネットワーキング: サーバーによる再調整を備えたクライアント側予測
  2. ラグ補償: 補間と外挿の手法
  3. アンチチート: サーバー側の検証、不正行為の検出
  4. マッチメイキング: キューを最適化したスキルベースのマッチメイキング

ベストプラクティス

ゲーム開発
  • コアループを最優先: ゲームプレイのコアループをプロトタイプ化し、改善します
  • モジュール型アーキテクチャ: 保守性を高めるため、システムを疎結合にします
  • パフォーマンス予算の設定: パフォーマンス目標を定義し、監視します
  • データ駆動型設計: ゲームバランスの調整には設定ファイルを使います
  • バージョン管理: 大容量のバイナリアセットを適切に管理します
物理と移動
  • 決定性:ネットワーク対戦ゲームで一貫した物理挙動を確保します
  • 衝突検出:誤検知を最小限に抑えるよう最適化します
  • キャラクターコントローラー:物理挙動とキャラクターのロジックを分離します
  • ラグドール物理:死亡アニメーションやインタラクションに使用します
  • パフォーマンス:物理演算の更新時間を計測し、必要に応じて最適化します
グラフィックスとレンダリング
  • バッチ処理:描画コールをまとめ、GPU の効率を高めます
  • 詳細度:モデルとテクスチャに LOD を実装します
  • シェーダー:シェーダーの複雑さを最適化し、共有マテリアルを使用します
  • ライティング:品質とパフォーマンスのバランスを取り、ベイク済みライティングを使用します
  • ポストプロセス:選択的に適用し、GPU への影響を計測します
オーディオの実装
  • 空間オーディオ:没入感を高める 3D 位置設定
  • アダプティブミュージック:ゲームプレイに応じて変化するサウンドトラック
  • パフォーマンス:大容量のオーディオファイルはストリーミングし、効果音はプール化します
  • 圧縮:適切なオーディオ圧縮形式を使用します
  • アクセシビリティ:視覚的なフィードバックの代替として、音声による合図を提供します
テストと品質
  • プレイテスト:フィードバックを得るため、定期的にプレイテストを実施します
  • パフォーマンスプロファイリング:フレームレート、メモリ、読み込み時間を監視します
  • プラットフォームテスト:開発用マシンだけでなく、対象のハードウェアでもテストします
  • アクセシビリティ:アクセシビリティ機能を最初から実装します
  • ローカライズ:早い段階から海外市場を視野に入れます

コメント