improve-game について
improve-gameは、現在のゲームプロジェクトを監査・改善するスキルです。複数分野を評価して優先案を提示し、選択後に実装してビルドとテストを確認します。
主な機能
- 01ゲームコードとプレイヤー体験の監査
- 02複数分野の採点と診断
- 03改善案を順位付けして承認を待機
- 04変更後にビルドとテストを実行
- 05ゲームプレイ、ビジュアル、モバイルに焦点
活用シーン
- 01ゲームを評価して修正項目を優先付けする
- 02モバイル対応や性能を詳しく点検する
- 03選択した変更を実装しビルドとテストを検証する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ playableintelligence/ game-creator --skill improve-gameインストール後、Claude Code で/improve-gameを入力して読み込まれたか確認します。
詳細
パフォーマンスに関する注意事項
- 時間をかけて、徹底的に作業してください
- 速度よりも品質を重視してください
- 検証手順を省略しないでください
ゲームを改善する
ゲームをより良くしましょう。このコマンドでは、ゲームプレイ、ビジュアル、コード品質、パフォーマンス、プレイヤー体験を徹底的に監査し、最も効果の高い改善を実装します。何度でも実行できます。実行するたびに、次に最も効果の高い修正箇所が見つかります。
手順
現在のディレクトリにあるゲームを改善してください。$ARGUMENTS で重点領域(例:「ゲームプレイ」、「ビジュアル」、「パフォーマンス」、「仕上げ」、「ゲームオーバー」)が指定されている場合は、その領域を優先しつつ、すべての領域を監査してください。
ステップ 1:徹底的な監査
ゲーム全体を把握するため、コードベース全体を読み込んでください。
package.json— エンジン、依存関係、スクリプトsrc/core/Constants.js— すべての設定値src/core/EventBus.js— すべてのイベントとその使用箇所src/core/GameState.js— 状態の構造とリセット処理src/core/Game.js(またはGameConfig.js)— オーケストレーターとゲームループsrc/scenes/またはsrc/systems/内のすべてのファイル — ゲームプレイのロジックsrc/entities/内のすべてのファイル — ゲームオブジェクトsrc/ui/内のすべてのファイル — ゲームオーバー画面、オーバーレイsrc/audio/内のすべてのファイル — 音楽と効果音index.html— マークアップ、オーバーレイ、スタイル、ビューポートメタタグsrc/systems/InputSystem.js— 入力処理、モバイル対応(ジャイロ、ジョイスティック、タッチ)tests/— テストのカバレッジと品質
ざっと目を通すだけにしないでください。改善案を提示する前に、全体像を把握できるよう、すべてのファイルを最後まで読んでください。
ステップ 2:評価と診断
各領域を 1〜5 の尺度で評価してください(1 = 動作しない/未実装、3 = 基本的に機能する、5 = 洗練され、完成している)。診断テーブルを提示してください。
| 領域 | スコア | 診断 |
|---|---|---|
| ゲームプレイの手応え | 中心となるゲームループは楽しいですか?操作は反応よく動きますか?難易度は段階的に上がりますか? | |
| ビジュアルの仕上がり | 背景、色、パーティクル、アニメーション、画面エフェクト | |
| ゲームオーバーと UI | ゲームオーバー画面、トランジション、再開の流れ、ボタン | |
| オーディオ | 状態ごとの BGM、アクションごとの効果音、音量バランス、ミュート切り替え | |
| コードアーキテクチャ | EventBus、GameState、Constants、循環依存がないこと | |
| 再起動時の安全性 | GameState.reset() ですべてが適切にクリーンアップされますか?3 回再起動しても同じ状態ですか?古いリスナーやタイマーが残っていませんか? | |
| パフォーマンス | デルタ値の上限設定、オブジェクトプーリング、破棄処理、メモリリークがないこと | |
| プレイヤー体験 | オンボーディング、フィードバック、難易度曲線、リプレイ性 | |
| モバイル対応 | タッチ入力、レスポンシブレイアウト、ジャイロ/ジョイスティック、44px のタッチターゲット | |
| Play.fun セーフゾーン | すべての UI 要素が SAFE_ZONE.TOP(約 8%/75px)より下にありますか?Play.fun ウィジェットの背後に隠れているものはありませんか? | |
| ゲームプレイの不変条件 | プレイヤーはスコアを獲得できますか?プレイヤーは倒されますか?ゲームオーバー時のボタンにはテキストが表示されますか?render_game_to_text() は有効な JSON を返しますか? | |
| エンティティのサイズ | キャラクターは認識しやすい大きさですか?キャラクターが主役のゲームでは、GAME.WIDTH の 12〜15% のサイズが必要です。固定ピクセルではなく、比例したサイズ(GAME.WIDTH * ratio)になっていますか? | |
| テストカバレッジ | 起動、ゲームプレイ、スコア、再起動、ビジュアル、パフォーマンスのテスト |
総合スコア:X / 65
ステップ 3:改善計画
監査結果をもとに、プレイヤーへの影響が大きい順に上位 5〜8 件の改善案を特定してください。それぞれについて、次の項目を記載してください。
- タイトル — 短い名前(例:「難易度の段階的な上昇を追加」)
- 領域 — 改善するカテゴリ
- 効果 — プレイヤーにとって重要な理由
- 実施内容 — 変更内容を平易な言葉で説明
- 変更するファイル — 新規作成または変更するファイル
番号付きリストで示してください。最も効果の高い項目を先にしてください。
計画をユーザーに提示し、どの改善を実装するか尋ねてください。選択肢:
- 「すべて」 — すべて実装
- 番号を指定 — 選択した項目を実装
- 「上位 3 件」 — 最も効果の高い項目だけ実装
実装を始める前に、ユーザーの選択を待ってください。
Step 4: 実装
選択した各改善について、次のルールに従ってください。
- 定数を最初に — 新しい設定値はすべて
Constants.jsに追加します。ハードコードされた値は使用しません。 - 次にイベント — 新しいイベントがあれば、
domain:action形式の命名規則を使ってEventBus.jsに追加します。 - 必要に応じて状態を追加 — 新しい状態フィールドは、適切なリセット処理とともに
GameState.jsに追加します。 - 新しいファイルは適切なディレクトリに — エンティティは
entities/、システムはsystems/、UI はui/に配置します。 - オーケストレーターを通じて接続 — 適切なライフサイクルで、新しいシステムを
Game.jsに登録します。 - 通信には EventBus を使用 — モジュール同士を直接インポートしてはいけません。
- 既存のコードスタイルに合わせる — プロジェクト内のほかのコードと同じパターン、命名、フォーマットを使います。
- 動作している機能を壊さない — 改善の対象である場合を除き、既存のゲームプレイ、操作、スコア計算がこれまでどおり動作するようにします。
改善を実装するたびに npm run build を実行し、エラーがないかすぐに確認します。次の改善に進む前に、ビルドエラーを修正してください。
Step 5: 検証
すべての改善を実装した後、次の手順を実行します。
npm run buildを実行し、エラーのないクリーンなビルドであることを確認します- テストがある場合は
npm testを実行し、すべてのテストが引き続きパスすることを確認します - 意図的な変更(新しいシーンや要素の変更)が原因でテストが失敗した場合は、新しい動作に合わせてテストを修正します
- ゲームにビジュアルリグレッションテストがある場合は、スナップショットを更新します:
npm run test:update-snapshots
Step 6: 報告
変更内容をユーザーに伝えます。
改善レポート
スコア:X/65 → Y/65(+Z ポイント)
実装内容:
- [タイトル] — [変更内容を1文で要約]
- [タイトル] — [変更内容を1文で要約] ...
作成したファイル: [新しいファイルの一覧] 変更したファイル: [変更したファイルの一覧]
テスト方法:
npm run devを実行して、次の項目を確認します。
- [具体的な確認項目]
- [具体的な確認項目]
次の改善:
/game-creator:improve-gameを再度実行して、次の改善候補を見つけます。
注力分野
$ARGUMENTS に注力分野のキーワードが含まれている場合は、以下のチェック項目を重点的に確認します。
"gameplay" — コアループ、操作方法、難易度の進行、敵の種類、パワーアップ、リスクとリターン、テンポ、レベルデザイン
"visuals" — game-designer スキルを読み込み、デザイン全体を監査します(背景、カラーパレット、アニメーション、パーティクル、トランジション、タイポグラフィ、演出)
"performance" — デルタ値の上限設定、オブジェクトプーリング、ジオメトリ/マテリアルの破棄、イベントリスナーのクリーンアップ、requestAnimationFrame の使用、描画コール数、テクスチャアトラスの使用
"polish" — 画面の揺れ、ヒットポーズ、スクワッシュ/ストレッチ、イージングカーブ、サウンドのタイミング、ボタンのフィードバック、スコアポップアップ、死亡アニメーション、トランジションの滑らかさ
"game-over" — ゲームオーバー画面の魅力、リスタートの流れ、ボタンのスタイル、スコア表示、ベストスコア表示、アニメーション。ボタンのテキストは見える必要があります — createButton() パターンで Container + Graphics + Text を使用していることを確認してください(Graphics が先、Text が後、Container はインタラクティブ)。ボタンのラベルが見えない場合、このパターンは正しく動作していません。注:ゲームにはデフォルトでタイトル画面やメニュー画面はありません(Play.fun が画面周辺の UI を処理します)。ユーザーが明示的にリクエストした場合にのみタイトル画面を追加してください。スコア HUD は Play.fun ウィジェットが処理するため、ゲーム内に別途スコア表示を追加しないでください。ゲームオーバー UI はすべて SAFE_ZONE.TOP より下に配置してください。
"audio" — game-audio スキルを読み込みます。BGM の網羅性(すべてのゲーム状態に音楽があるか)、SFX の網羅性(プレイヤーのすべてのアクションにフィードバックがあるか)、音量ミキシング、トラック間のトランジションの滑らかさを確認してください。
"mobile" — タッチ入力が実装されているか(タップゾーン、仮想ジョイスティック、ジャイロスコープ)、キャンバスがレスポンシブか(Phaser.Scale.FIT または CSS の width:100%)、最小タッチターゲットサイズが 44px か、移動用の仮想ジョイスティックまたはタップゾーンがあるか、傾き操作のゲームでジャイロスコープに対応しているか、ホバー時のみの操作がないか、モバイルのビューポート(Pixel 5 エミュレーション)でテストされているかを確認してください。タッチターゲットサイズを確認するため、InputSystem.js、各シーン/システムの update() メソッド、index.html の viewport meta、Constants.js を読んでください。
"ux" — オンボーディング(プレイヤーは何をすればよいか分かるか?)、フィードバック(すべてのアクションに反応があるか?)、難易度曲線(難しすぎないか、簡単すぎないか?)、リプレイ性(もう一度プレイする理由があるか?)
使用例
全般的な改善
/improve-game
結果:詳細に監査 → スコア 38/65 → 主な改善点を 6 つ特定(難易度の進行、画面の揺れ、より良いゲームオーバー、パーティクルエフェクト、モバイルタッチ、リスタートの安全性) → どれを実装するかを質問 → 選択された項目を実装 → スコアが 52/65 に上昇。
注力分野を絞った改善
/improve-game gameplay
結果:ゲームプレイのチェックを重点的に確認 → 敵の種類が少なく難易度が一定であることを発見 → 異なる行動をする敵を 3 種類追加し、速度を段階的に上げ、スコアに基づく難易度段階を実装。
トラブルシューティング
改善によって既存のゲームプレイが壊れる
原因: 共有システム(物理演算、スコア)への変更が連鎖的な影響を及ぼしています。 対処法: 改善を 1 つずつテストしてください。変更のたびに既存のテストを実行してください。変更によってコアとなるゲームプレイが壊れた場合は、元に戻してください。
一度に変更しすぎる
原因: 監査で 10 件以上の問題が特定され、すべて同時に実装されました。 対処法: 優先度の高い改善を 3~5 件に絞ってください。段階的にリリースし、変更のたびに確認してください。
ヒント
このコマンドは、反復的に改善するよう設計されています。複数回実行してください:
- 1 回目:最も大きな不足を解消する(機能不足、UX の問題)
- 2 回目:仕上げを加える(パーティクル、トランジション、演出)
- 3 回目:微調整する(難易度曲線、タイミング、バランス)
実行するたびに前回の続きから始まります。以前に修正した分野はスコアが上がり、新たな優先項目が見つかります。
対象を絞って作業するには、注力分野を指定してください:
/game-creator:improve-game gameplayまたは/game-creator:improve-game visuals