CONTENTS コンテンツ

架空のポケモンを作ろう!(5)

生成AIを使おう!

2024.05.05

 生成AIで架空のポケモンを作るシリーズ。前回は草御三家として「桜の木」「精霊」モチーフのポケモンのイラストを描いき、種族値を練っているところ。Cが高め、A、Sが低めの設定。

 前回、草御三家種の種族値を出力させようとしたらエラーを吐いたので、エラーを吐かないようにする必要がある。どうも全世代の種族値を同時に出させようと欲張ったのがエラーの原因らしく、1体ずつなら出してくれた。とはいえ数字の羅列だと扱いにくいのでGPTに良い感じに抽出してもらいたい。

入力:この中でSpecial Attackが相対的に高く、AttackとSpeedが相対的に低いポケモンを教えて下さい

出力:

「Special Attack」が相対的に高く、「Attack」と「Speed」が相対的に低い草御三家のポケモンを見ると、Treeckoがこの条件に最も適合しています。Treeckoのステータスは次のようになっています:

  • HP: 40
  • Attack: 45
  • Defense: 35
  • Special Attack: 65
  • Special Defense: 55
  • Speed: 70

Treeckoの「Special Attack」が65と高く、他の能力と比較しても顕著に高いことがわかります。また、「Attack」は45と低めですが、「Speed」が70と高いため、他の候補と比べて最もバランスが取れた能力を持っています。他のポケモンのステータスを比較しても、「Special Attack」が際立って高いポケモンはTreeckoが唯一です。

 素早さ高いじゃねーか。やり直し

入力:Treeckoはspeedが高いです。この中でspeedが低く、Special Attackが相対的に高いポケモンを教えてください。

出力:

「Speed」が低く、「Special Attack」が相対的に高い草御三家のポケモンを考慮すると、Snivyがこの条件に適合します。Snivyのステータスは次のようになっています:

  • HP: 45
  • Attack: 45
  • Defense: 55
  • Special Attack: 45
  • Special Defense: 55
  • Speed: 63

Snivyの「Special Attack」は45で、このリストの中では平均的ですが、「Speed」が63と比較的低いため、他の能力と比較して「Special Attack」が目立ちます。他のポケモンと比較して、「Speed」が最も低いわけではありませんが、「Special Attack」が高い部類に入ります。

 え、まじ?GPTって比較抽出できないの?なんとなく生成AIの得意分野と思ってたんだが。方法を変えよう。ソートならプログラミングっぽいしできるやろ。

入力:上に上げた10体の草御三家のHP、Attack、Defense、Special Attack、Special Defense、Speedそれぞれについて、数字が大きい順にソートしてください。

出力:

以下に、上述した10体の草御三家のポケモンを各ステータスごとに大きい順にソートしたリストを提供します:

HP

  1. Rowlet: 68
  2. Turtwig: 55
  3. Chespin: 56
  4. Grookey: 50
  5. Snivy: 45
  6. Chikorita: 45
  7. Bulbasaur: 45
  8. Treecko: 40
  9. Squirtle: 44

(以下略)

 よしよし。予想通りソートならうまくいった。要件をプログラミングで出来そうなことに落とし込んだり、分解したりすると使い勝手がよくなりそうだ。そうするとGPT運用するにはプログラミング知識があった方が捗る、という話になる。…と思ったが、間違えてるじゃねーか。それにソートが微妙に違うどころかデータが1つ欠落してやがる。プログラム書いてソートしたなら何でこんなことになるんだって話だし、ソートしたわけじゃないのか?うーん謎だ。

入力:これらの6つのパラメータの最小値、最大値、平均値、中央値を出してください

出力:

  • Values: [68, 55, 56, 50, 45, 45, 45, 40, 44, 39]
  • Min: 39
  • Max: 68
  • Mean: (68 + 55 + 56 + 50 + 45 + 45 + 45 + 40 + 44 + 39) / 10 = 48.7
  • Median: Middle values of sorted [39, 40, 44, 45, 45, 45, 50, 55, 56, 68] are 45 and 45; Median = (45 + 45) / 2 = 45

 エラー吐きながらHPだけは出してくれた。リストは正確、平均値と中央値も正確。こっちは信頼してよさそうだ。さっきのソートも明示的に「プログラムを書いて結果を出力してください」みたいなプロンプトにすべきであったか?ともあれこれらの数値をもとにHの種族値を提案させよう。

入力:過去の草御三家種ポケモンのHP種族値は最大68、最小39、平均49、中央値45です。これらを踏まえて、サクラットのHP種族値をいくつに設定しますか?理由とともに答えてください

出力:

「サクラット」のHP種族値を設定する際、過去の草御三家種ポケモンのデータを考慮に入れると、適切な数値を選ぶのに役立ちます。過去のデータを踏まえた上で、サクラットの性質とバランスを考慮し、HP種族値を 45 に設定することを提案します。以下がその理由です:

  1. 統計データの考慮:
    • 過去の草御三家種ポケモンの中央値が45であることから、この数値は種族値のバランスをとるのに一般的な基準となり得ます。中央値を採用することで、サクラットを他の草御三家のポケモンと比較して過度に強くも弱くもない、バランスの取れた状態に保つことができます。
  2. キャラクターの特性:
    • サクラットは精霊のモチーフを持つため、神秘的で繊細なイメージがあります。そのため、特に高いHPを持たせるとキャラクターの特性と矛盾する可能性があります。一方で、過度に低いHPは彼の生存能力を著しく制限するため、中庸を取るのが適切です。
  3. ゲームバランス:
    • サクラットの主要な強みは特殊攻撃にあります。そこにバランスを持たせるために、HPは平均的な値を保つことが理想的です。これにより、彼は強力な攻撃を放つことができる一方で、適切なリスクと対価が伴います。

以上の理由から、サクラットのHP種族値を45と設定することは、彼の特性とゲーム内での役割に適しており、他の御三家ポケモンとのバランスを保ちつつ、独自の個性を表現できる適切な選択となるでしょう。

 無難に中央値を提示してきた。まぁ妥当。こんな感じでデータベース参照しつつ種族値設定していきたいんだが、今のところ手動部分が多すぎるので、もっといい感じに自動化したい。どうしたものか。

次回に続く

この記事をシェアする