game-developer について
Unity と Unreal を使う開発者向けのゲーム開発スキルです。設計、実装、プロファイリング、テストを支援し、性能確認の手順とトピック別の資料を備えています。
主な機能
- 01Unity と Unreal の開発ガイド
- 02ECS とゲーム設計パターン
- 03プロファイリングと性能最適化
- 04マルチプレイヤーネットワークのガイド
- 05クロスプラットフォームと負荷テスト
活用シーン
- 01新規ゲームのアーキテクチャ設計
- 02CPU、GPU、メモリ、フレーム時間の最適化
- 03マルチプレイヤー機能の実装
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill game-developerインストール後、Claude Code で/game-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/ecs-patterns.mdmultiplayer-networking.mdperformance-optimization.mdunity-patterns.mdunreal-cpp.md詳細
ゲーム開発者
コアワークフロー
- 要件を分析する — ジャンル、プラットフォーム、パフォーマンス目標、マルチプレイヤーの要件を特定します
- アーキテクチャを設計する — ECS/コンポーネントシステムを計画し、対象プラットフォーム向けに最適化します
- 実装する — コアメカニクス、グラフィックス、物理演算、AI、ネットワーク機能を構築します
- 最適化する — 60 FPS 以上を実現できるようプロファイリングと最適化を行い、メモリ/バッテリーの使用量を最小限に抑えます
- ✅ 検証チェックポイント: Unity Profiler または Unreal Insights を実行し、次に進む前にフレーム時間が 16 ms 以下(60 FPS)であることを確認します。CPU/GPU のボトルネックを特定し、反復的に解消します。
- テストする — クロスプラットフォームテスト、パフォーマンス検証、マルチプレイヤーの負荷テストを実施します
- ✅ 検証チェックポイント: 高負荷時にフレームレートが安定していることを確認します。リリース前にマルチプレイヤーのレイテンシ/同期ずれテストを実行します。
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| Unity 開発 | references/unity-patterns.md | Unity C#、MonoBehaviour、Scriptable Objects |
| Unreal 開発 | references/unreal-cpp.md | Unreal C++、Blueprints、Actor コンポーネント |
| ECS とパターン | references/ecs-patterns.md | Entity Component System、ゲームパターン |
| パフォーマンス | references/performance-optimization.md | FPS 最適化、プロファイリング、メモリ |
| ネットワーク | references/multiplayer-networking.md | マルチプレイヤー、クライアントサーバー、ラグ補償 |
制約事項
必ず行うこと
- すべてのプラットフォームで 60 FPS 以上を目標にする
- 頻繁なインスタンス生成にはオブジェクトプーリングを使用する
- 最適化のために LOD システムを実装する
- パフォーマンス(CPU、GPU、メモリ)を定期的にプロファイリングする
- リソースの非同期読み込みを使用する
- ゲームロジックに適切なステートマシンを実装する
- コンポーネントの参照をキャッシュする(Update で GetComponent を使用しない)
- フレームレートに依存しない移動には delta time を使用する
絶対に行わないこと
- 高頻度ループや Update() 内で Instantiate/Destroy を使用する
- プロファイリングやパフォーマンステストを省略する
- タグの文字列比較を使用する(CompareTag を使用する)
- Update/FixedUpdate のループ内でメモリを割り当てる
- プラットフォーム固有の制約(モバイル、コンソール)を無視する
- Update ループ内で Find 系メソッドを使用する
- ゲーム内の値をハードコードする(ScriptableObjects/データファイルを使用する)
出力テンプレート
ゲーム機能を実装する際は、以下を提示します:
- コアシステムの実装(ECS コンポーネント、MonoBehaviour、または Actor)
- 関連するデータ構造(ScriptableObjects、struct、設定)
- パフォーマンスに関する考慮事項と最適化
- アーキテクチャ上の判断についての簡潔な説明
主要なコードパターン
オブジェクトプーリング(Unity C#)
public class ObjectPool<T> where T : Component
{
private readonly Queue<T> _pool = new();
private readonly T _prefab;
private readonly Transform _parent;
public ObjectPool(T prefab, int initialSize, Transform parent = null)
{
_prefab = prefab;
_parent = parent;
for (int i = 0; i < initialSize; i++)
Release(Create());
}
public T Get()
{
T obj = _pool.Count > 0 ? _pool.Dequeue() : Create();
obj.gameObject.SetActive(true);
return obj;
}
public void Release(T obj)
{
obj.gameObject.SetActive(false);
_pool.Enqueue(obj);
}
private T Create() => Object.Instantiate(_prefab, _parent);
}
コンポーネントのキャッシュ(Unity C#)
public class PlayerController : MonoBehaviour
{
// Cache all component references in Awake — never call GetComponent in Update
private Rigidbody _rb;
private Animator _animator;
private PlayerInput _input;
private void Awake()
{
_rb = GetComponent<Rigidbody>();
_animator = GetComponent<Animator>();
_input = GetComponent<PlayerInput>();
}
private void FixedUpdate()
{
// Use cached references; use deltaTime for frame-independence
Vector3 move = _input.MoveDirection * (speed * Time.fixedDeltaTime);
_rb.MovePosition(_rb.position + move);
}
}
ステートマシン(Unity C#)
public abstract class State
{
public abstract void Enter();
public abstract void Tick(float deltaTime);
public abstract void Exit();
}
public class StateMachine
{
private State _current;
public void TransitionTo(State next)
{
_current?.Exit();
_current = next;
_current.Enter();
}
public void Tick(float deltaTime) => _current?.Tick(deltaTime);
}
// Usage example
public class IdleState : State
{
private readonly Animator _animator;
public IdleState(Animator animator) => _animator = animator;
public override void Enter() => _animator.SetTrigger("Idle");
public override void Tick(float deltaTime) { /* poll transitions */ }
public override void Exit() { }
}
@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)が管理しています
コメント
Markdown 対応