game-vfx について
game-vfxは、ゲームのビジュアルエフェクトを計画・レビューするスキルです。実装担当者向けに、ライフサイクル仕様、視認性、性能予算、フォールバックを扱います。
主な機能
- 01ゲームイベントに基づくエフェクト仕様
- 02ライフサイクルとレイヤーの計画
- 03機械検証可能なVFX仕様の検証
- 04性能予算とプロファイリングの確認
- 05モーション軽減と品質別フォールバック
活用シーン
- 01ゲームイベントを時間付きVFX計画に変換
- 02性能段階を含むエンジン引き継ぎ資料の作成
- 03高負荷または視認しにくいエフェクトの診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ akillness/ jeo-skills --skill game-vfxインストール後、Claude Code で/game-vfxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/vfx-spec.example.jsonupstream.mdeffect-recipes.mdscripts/validate_vfx_spec.py詳細
ゲームVFX
このスキルを使用する場面
- ゲームプレイのイベントを、レイヤー構成とタイミングを含むVFX仕様に落とし込みます。
- 煙、霧、パーティクル、炎、稲妻、衝撃、軌跡、ブルームを実装します。
- パーティクルの過剰、ぼかし、ドローコール、メモリ割り当て、オーバードロー、エフェクトの見づらさを診断します。
- パフォーマンスの段階別設定と、動きを抑えた場合の挙動を含む、エンジン向けの引き継ぎ資料を作成します。
FFXIV/Dalamud のアセット編集には dalamud-vfx-editor を使用してください。レンダラー固有の GLSL/ポストプロセッシングの実装には Three.js の各スキルを、API が主な課題となる場合は Unity/Godot のエンジン固有スキルを使用してください。
手順
ステップ 1:エフェクトパケットを 1 つ作成する
以下を記録します。
- ゲームプレイのイベントと伝達する目的。
- エンジン/レンダーパイプライン、対象プラットフォーム、カメラ、目標 FPS。
- ライフサイクルの各段階と全体の再生時間。
- レイヤーの一覧、ブレンドモード、アタッチメント空間、深度順。
- パーティクル、ドローコール、オーバードロー、テクスチャ、フレーム時間の各予算。
- オーディオ/画面揺れとの連携ポイント。
- 動きを抑えた場合や低品質設定時の代替処理。
- 受け入れ確認用のキャプチャ:代表的なゲームプレイ動画とプロファイラーの証拠。
プレイヤーに何を理解してほしいのかを明確にできない場合は、パーティクルから始めないでください。
ステップ 2:目的に合う最小限のエフェクト群を選ぶ
- 煙/霧/雲 — 制作済みの形状にはスプライト/フリップブックのエミッター、軽量な 2D オーバーレイにはノイズブロブ、正当な理由があるボリューメトリック表現に限ってレイマーチングを使用します。
- 稲妻/電気 — ギザギザした稲妻には中点変位、制御されたアークにはカーブを使用し、再帰的な分岐は控えめにします。
- パーティクル/炎/火花 — 生成、更新、衝突、再利用のルールを明示したプール済みエミッターを使用します。
- ブルーム/グロー — しきい値処理 → 分離可能なぼかし → 加算合成の順で処理し、ぼかしの対象をダウンサンプリングします。
- 呪文/アビリティ全体 — フェーズステートマシンとレイヤースタックを組み合わせ、視覚的な強さをゲームプレイのタイミングに合わせます。
実装の前に references/effect-recipes.md を読んでください。
ステップ 3:機械的に検証できる仕様を書く
references/vfx-spec.example.json を基に調整したうえで、次を実行します。
bash python3 .agent-skills/game-vfx/scripts/validate_vfx_spec.py path/to/vfx-spec.json
バリデーターは、フェーズとレイヤーの一意性、正のタイミング値、有効な予算、パーティクルとドローコールの合計、ぼかしの上限、動きを抑えた場合の対応状況を確認します。検証に合格しても、それは設計上の契約を確認したにすぎず、実行時のパフォーマンスを証明するものではありません。
ステップ 4:個別のエミッターではなく、ライフサイクルに沿って構築する
idle → charging → casting → impact → dissipating のように、フェーズを明示します。共有する正規化フェーズ時間と決定論的なイベントフックを使って、すべてのレイヤーを制御します。ゲームプレイ開始前に変更可能なインスタンスをプールし、フレームごとの割り当ては避けてください。テストやキャプチャで制御できるよう、ランダムシードを保持します。
ステップ 5:階層と見やすさを確保する
1 つのレイヤーを視覚上の主役とし、補助レイヤーはそれに従属させます。ゲームプレイ上のシルエット、予告表示、命中範囲、UI の見やすさを保ちます。パーティクルを増やす前に、コントラスト、動く方向、タイミング、スケールを活用してください。最も強い視覚的な山場を、ゲームプレイのイベントとオーディオのトランジェントに同期させます。
ステップ 6:プラットフォームの予算を適用する
プロジェクトで計測した値を基準にしてください。調査した Apple 対応の上流リファレンスに基づく、保守的な初期値は次のとおりです。
- 合計フレーム時間 16.67 ms 以内で 60 FPS を目標にします。
- 実用上可能であれば、VFX オーバーレイのドローコールを 10 未満に抑えます。
- CPU で更新するパーティクルがおよそ 500 を超える場合は、GPU/コンピュートによる方法のプロファイリングを検討します。
- モバイルのアクティブパーティクル数は、明示した段階別の上限以内に抑えます(上流リファレンスでは 500~2,000 を推奨しています)。
- 大きなぼかし/ブルームのパスはダウンサンプリングします。
- 計測せずに、モバイルでおよそ 20 ポイントを超えるぼかし半径を使用しないでください。
- リアルタイム向けの初期設定として、レイマーチングのサンプル数は 4~8 とします。ただし、普遍的な規則ではありません。
これらは、サポート対象のうち最も古い環境で検証する仮説であり、エンジンに依存しない保証値ではありません。
ステップ 7:動作とパフォーマンスを検証する
以下を記録します。
- フレーム時間、GPU 時間、パーティクルのピーク数、ドローコール数、オーバードロー、アロケーション数
- カメラ移動中およびエフェクトが重なる場面での視認性
- ヒット/衝撃イベントとのタイミング
- 低品質設定およびモーション低減時のフォールバック
- キャンセル、シーンのアンロード、一時停止、トリガーの繰り返し後のクリーンアップ
- 対象ハードウェアでの変更前後のキャプチャ
静的な仕様やデスクトップシミュレーターだけを根拠に、60 FPS を達成すると主張しないでください。
例
ファイアボールの引き継ぎを検証する
bash cp .agent-skills/game-vfx/references/vfx-spec.example.json ./fireball-vfx.json python3 .agent-skills/game-vfx/scripts/validate_vfx_spec.py ./fireball-vfx.json
FFXIV AVFX リクエストを振り分ける
dalamud-vfx-editor を使用します。このスキルでは階層、タイミング、パフォーマンスのレビューも行えますが、ファイル形式のワークフローは対象外です。
ベストプラクティス
- 見た目の派手さよりも、プレイヤーへの情報伝達を優先して設計します。
- 共通のライフサイクルを使用し、イベントのタイミングを決定論的にします。
- リソースをプールし、対象ハードウェアでプロファイリングします。
- 負荷の高いスクリーンスペースエフェクトはダウンサンプリングします。
- エフェクトには、モーション低減時および品質段階別のフォールバックを用意します。
- 数値による指針は初期予算として扱い、実測データに基づいて置き換えられるものとします。
参考資料
references/effect-recipes.md— エンジンに依存しないレシピとコンポジションのルール。references/vfx-spec.example.json— バリデーターに対応した引き継ぎ例。references/upstream.md— 出典と適用範囲。- lev-os/agents