マガジン

ゲームの難易度調整をAIに依頼するプロンプト例

遊びをつくる

執筆にClaudeを使用しています。

速さ、選択肢、ミスの許容を三つの異なる仕掛けで表したゲーム模型のイラスト。
記事のテーマをもとに制作したAI生成イラスト。

ゲームを作るとき、難易度の調整は「完成してから最後に直す」と後回しにしがちです。ところが、バランスが崩れたゲームはプレイヤーがすぐ離れてしまいます。簡単すぎれば30秒で飽き、難しすぎれば1回で諦める。この狭い「ちょうどよさ」を一人で見つけるのは時間がかかります。 AIにコードの修正を依頼する際、「難しすぎるので直してください」と書くだけでは期待通りの結果になりません。AIは指示の曖昧な部分を補完しながら出力するため、「何をどう変えるか」の軸を依頼側が示さないと、意図と違う方向へ調整されることがあります。この記事では、難易度調整という具体的な場面に絞り、AIから意図通りの変更コードを引き出すプロンプトの書き方を整理します。

この記事の目次
  1. 難易度調整の「何を変えるか」を先に決める
  2. 具体的なプロンプトの型
  3. 難易度スケーリングをAIに設計させるときの書き方
  4. 意図と違う変更が来たときの修正依頼
  5. 数値の微調整を繰り返すときに使えるパターン
  6. 次の行動

難易度調整の「何を変えるか」を先に決める

AIへの依頼を書く前に、自分のゲームの難易度を決めている変数や仕組みを言語化しておく必要があります。難易度とひとことで言っても、制御できる要素はゲームによって異なります。よく出てくる要素を整理すると次のようになります。

  • 数値パラメータ:敵のHP・移動速度・出現間隔・制限時間・スコア倍率など
  • 生成ロジック:障害物の密度・敵の出現パターン・アイテムの出現確率
  • プレイヤー側の制約:ライフ数・回避猶予フレーム数・操作の入力受付時間
  • 段階的な変化:経過時間やスコアに応じてパラメータが変わる「難易度スケーリング」

この中からどの要素が今の「難しすぎる・簡単すぎる」に直結しているかを特定してから、プロンプトを書きます。原因が分からないまま「全体を調整して」と依頼すると、AIが複数箇所を同時に変更し、どれが効いたのか分からなくなります。

具体的なプロンプトの型

難易度調整の依頼には、次の4要素をセットで伝えると変更の意図がAIに伝わりやすくなります。

  1. 現状の説明(どんな挙動になっているか)
  2. 目標の説明(どんな挙動にしたいか)
  3. 変えてよい場所の指定(変数名・関数名・行番号など)
  4. 変えてほしくない場所の明示(ゲームルールに直結する部分など)

たとえば「敵が速すぎる」という問題に対して、次のように書きます。

曖昧な依頼(避けたい例):

難しすぎるので敵を弱くしてください。

具体的な依頼(推奨例):

このコードでは enemySpeed という変数が敵の移動速度を決めています。現在は値が 5 で、テストプレイでは敵が速すぎてプレイヤーが最初の10秒以内に必ず死にます。最初の30秒は余裕を持って生き残れるよう、enemySpeed の初期値を下げてください。ゲーム開始から60秒後に enemySpeed が上がる既存のスケーリングロジックは変えないでください。

変えてほしくない場所を明示することは特に重要です。AIはコード全体を読んで「良さそうな改善」を加えようとする場合があり、頼んでいない部分も書き換えることがあります。守りたいロジックは「〇〇は変更しないでください」と明示的に書くことで、余計な変更を防げます。

難易度スケーリングをAIに設計させるときの書き方

「ゲームが最後まで単調」「序盤と終盤で難易度の差がない」という場合は、パラメータをひとつ変えるより、スケーリングのロジック自体をAIに提案させると効率的です。このときのプロンプトは「変更」ではなく「設計の相談」として書きます。

設計相談の例:

ブロック崩しゲームを作っています。現在はボールの速度が最初から最後まで一定(ballSpeed = 4)です。プレイが進むにつれてだんだん難しくなるよう、スコアや経過時間に応じてボール速度が上がる仕組みを追加したいです。上限速度は 8 としてください。どのようなロジックが考えられますか?コード例を2パターン示してください。

「2パターン示してください」と書くことで、選択肢を並べて比較できます。AIが1つしか示さない場合は「別の方法も教えてください」と続けて聞くと追加案が出てきます。パターンを受け取ったら、それぞれのトレードオフ(実装の複雑さ・プレイ感への影響)を確認してから採用を決めます。

意図と違う変更が来たときの修正依頼

AIが生成したコードを試してみたら「直しすぎた」「思っていた方向と違う」という場面はよくあります。このときは最初のプロンプトに戻って書き直すより、差分を指摘した続きの依頼として書くほうが速く解決します。

差分を伝える続き依頼の例:

先ほどの変更後、敵の初期速度は下がりましたが、スコア100点以降の速度増加が以前より急になっています。スコア100点以降のスケーリング部分だけ、変更前の挙動に戻してください。変更前のコードを参考として下に貼ります。

「変更前のコードを貼る」という手順は手間に見えますが、AIが前のコードを正確に記憶しているとは限りません。会話が長くなるほど参照精度が落ちるため、重要な状態のコードはこまめにコピーして手元に保管しておく習慣が安全です。

数値の微調整を繰り返すときに使えるパターン

スピードや確率の数値を少しずつ変えてテストしたい場面では、AIに「変数化」を依頼しておくと作業が楽になります。

変数化の依頼例:

難易度に関係するパラメータ(敵の速度・出現間隔・ライフ数)をファイルの先頭にまとめて定数として定義し直してください。それ以外のロジックは変えないでください。定数名は ENEMY_SPEED・SPAWN_INTERVAL・PLAYER_LIVES としてください。

こうしておくと、次回から「ENEMY_SPEED を 4 から 3 に変えてください」という短いプロンプトで済むようになります。難易度調整は一度で終わらないことが多いため、繰り返し変えやすいコード構造にしておくことが長期的に作業時間を短くします。

次の行動

手元のゲームコードを開いて、難易度に関係する変数が何かを書き出してみてください。変数名が分かったら、この記事のプロンプト例を参考にして「変えてよい場所」と「変えてほしくない場所」を両方含む依頼文を1つ書いてAIに投げてみます。調整したゲームが完成したら、HTMLファイルまたはZIPファイルでアソバース(https://aso-verse.com)に投稿して、実際にプレイしてもらいながら難易度の感想を集めるのが次のステップです。