大規模言語モデル(LLM)によるAIエージェントを用いた定期更新ゲームテストプレイの提案
※本記事は『アド"定期ゲ"ベントカレンダー 2024』の23日目の記事となります。
22日目→卜部卜伝様『うちよそを現実(リアル)にしよう 〜定期ゲから始める同人誌制作〜』
24日目→ゆう様『ゲーム制作の事件簿』
※本記事の制作過程では生成AIを使用しております。
(提案システム実装のためにOpenAI API、プログラミング補助にGithub copilotを使用)
(本記事の文章の推敲のためにChatGPT-4oを使用)
概要
定期更新ゲームは個人、あるいは少人数体制での開発が主流であり、時間がかかるデバッグ作業は大きな課題になります(筆者はPHPやサーバーサイドのプログラムに関してほぼ経験がないため、もしかしたらそれら独自の問題もあるかもしれません……)。またゲームバランスの面でもユーザーの方々が想定と異なるような印象を持った、というような報告はよく聞かれます。
本記事ではこうした課題の解決策として、ChatGPT等に代表される文章生成AI(大規模言語モデル: LLM)が活用できるのではないか、という提案をしたいと思います。LLMはプロンプト(指示)次第でさまざまな役割・性格になりきることができますが、これを利用して仮想のプレイヤーを作ることで、ゲーム公開前に実際のプレイヤーに遊んでもらうのに近いフィードバックが得られたり、実際にゲームが動いているログを見たり統計解析したりすることで課題を見つけるようなことができるのではないかと期待されます。
時間が足りず実験そのものは行えなかったため、今回は背景・先行研究と提案システム、及び現在開発過程で用いている生成AIの使い方について書き(大部分は既存研究の紹介になってしまっていますが……)、追って実際の実験の報告を行っていきたいと思います。
背景・先行研究など
大規模言語モデル: LLMとは
ユーザーの入力に対して文章を生成するAIモデルです。単に質問に答えるだけでなく小説や記事を書かせたり、興味がある分野の専門家や好きなキャラクターといった役割を指定してなりきらせるということもできます。
LLMは基本的に、「入力された文に続く単語としてもっともありえそうな(続く確率が高い)ものは何か?」を予測し、それを繰り返していって文章を作る、という形で動きます(※1)。つまり入力文を工夫することで「続きとしてありえそう」の範囲を、「ユーザーにとってこう答えてほしい」の範囲に近づけることができます。宝探しをする時に手がかりを集めてどんどん範囲を絞り込んでいくようなイメージをしてください。
(※1)ChatGPTについて、GPT-3以降のモデルは中身が公開されていませんが、GPT-2まではこの仕組みで動いていることがわかっています。
LLMを人間のように振る舞わせる
先述のように、LLMにはいろいろな性格のキャラクターになりきって答えてもらうことができます(図1)(※2)。

ここで、LLMはただそれっぽい口調で話すというだけでなく、何かストーリー(文脈)を与えた時にその性格の人物がするであろう行動を模倣することも確かめられており、これを利用して何らかの社会現象を再現したりメカニズムを探る、というような研究も行われています。
Geらはウェブ上のテキストデータをもとにLLMにペルソナ(人格)を生成してもらう試みを行いました(Ge, 2024)。ここでは(1)あるテキストに対し「このテキストを好む/嫌う/書く/読む可能性の高い人は誰か?」という例をいくつか挙げてもらい、出てきた人の例をペルソナとする。(2)(1)でできたペルソナに対し、「この人と密接な関係にありそうな人の例は?」と問うことでさらに芋づる式にペルソナを増やしていく……という形で合計10億人分のペルソナデータを作ることに成功しました。こうしてできたペルソナをもとにして、特定のトピックについていろいろな人が言いそうな意見を集めてみたり、ゲームで使うキャラクターを作ったりすることも可能です。あらかじめLLMに世界観とプロットを渡しておけば自創作のキャラについて話を膨らませてくれそうな人物を考えてもらえるかもしれません。
こうして作られたLLM駆動のキャラクターを複数人用意し、交流させる試みも行われています。Microsoft製のPythonライブラリTinyTroupe(Paulo, 2024)では様々な性格や背景をもつ人間のエージェントを作り、環境の中で何かを見聞きする・思考する・他のエージェントと会話する、といった行動を取らせることができます。またGoogle deepmindのConcordiaというライブラリ(Vezhnevet, 2023)はテーブルトークRPGを参考にゲームマスター役のエージェントを設け、参加者のエージェントが提案した行動に対して物理的・社会的に可能かの判定や他者の行動とバッティングする場合はその解決をし行動に対する結果を伝えるというつくりをしています。Concordiaのエージェントに人間と同じような欲求の要素を与え、欲求不満を解消するために自らできる行動を探していくようにした試みもあります(Wang, 2024)。
(※2)先述の通り、ユーザーがしているのは「続きとしてありそうな話」を絞り込むことなのに、それでどうして性格まで変わったりするのか? ということについてですが、大手LLMサービスの一つであるClaudeシリーズを提供しているAnthropic社が興味深い研究を行っています(Bricken, 2022)。それによるとLLMはニューロン(LLMを構成する一番小さいパーツ)単位ではなく「特徴」(Feature)と名付けられた「何らかの物事に対応したニューロンのかたまり」を単位として動いているそうです。例として「ゴールデンゲートブリッジ」についてLLMに語って聞かせると、それに対応する「特徴」の部分が活動します。逆にゴールデンゲートブリッジの「特徴」部分がいつも強く働くようLLMをいじった上で話をさせると全く関係ない話題でも無理矢理ゴールデンゲートブリッジの話に持っていくようになります。「特徴」のなかには特定の事物だけでなく、例えば「お世辞」に対応したものもあり、実際に強めるとユーザーをやたらと褒めたたえるようになってしまいます。LLMがユーザー入力に対して性格を変えるのも、その性格に対応する「特徴」が活性化させられたためだと考えられます。
LLMにゲームをプレイさせる
LLMはあくまで文章を出力するものですが、使い方を教えればプログラミングの関数やメソッド、あるいはアプリケーションの機能を目標を達成する道具として使うこともできるので、ゲームを操作してプレイすることも可能です。実際にClaude Haikuというモデルを使いSlay the Spireをプレイするエージェントが作られた事例もあります(記事リンク)。Githubでコードも公開されており、LLMは自分・敵の能力値や手札などのパラメータを受け取ってから決められた形式で自分の判断を出力し、それに応じた関数を呼び出して戦闘を進行します。実際のプレイでは2番目のボスまで到達してみせたそうです(筆者は同作をきちんと遊んだことがなく、これがどれほどのレベルなのかはわからないのですが……)。
また先に述べたLLMエージェント同士の関わりについて、マインクラフトをプレイするエージェントを作った試みもあります(AL, 2024)。目標や記憶を保ったり社会的相互作用ができるように作られたエージェントたちが操作するプレイヤーキャラを一つの村に住まわせたところ、どのエージェントも時間を追うごとに自分自身の役割を見出し、村の維持に努めました。さらには本来ゲームシステムにはない税制を設ければそれを遵守したり投票を経て改正する、宗教やミームが村から村へ伝播する、といった現象も確かめられました。
こうした例から、定期更新ゲームのルールやスキル・敵に絡む情報をLLMに提示することでビルドや編成を考えてもらったりすることも可能なのではないかと期待されます。もし、いろいろな性格を持つプレイヤーを再現した結果「クリティカル連発でとんでもないダメージを出そうとする」「情報が出るまでAPを貯めて慎重に動く」「ソロでの攻略を目指す」みたいな行動までも現れてきたら……とは思います。わかりませんが……(※3)(※4)
(※3)先行研究だとLLMエージェントに対して大目標が定められていたり、欲求を実装したものにしてもあらかじめそれがどんなものであるかは人間が決めているため、過程で面白いことが起こるにしても目的そのものを自ら作りだすというレベルには達していないとは思います。……作れたら人間を超えちゃうかもしれませんが。
(※4)私はLLMエージェントの利用に関してはあくまで公開前のデバッグ・テストプレイを補助し、ゲームをより良い形で世に出せるようにするためのものであることを企図しており、実際のゲームプレイにおいてそれらを用いることについては慎重になるべきだと考えております。定期ゲーは各々の創作や表現を共有しともに楽しめる場としての側面もありますので……
ただ、RPやイラスト描きなどを優先したくて攻略面を考えるのに割く時間があまりない、という方向けにビルド・育成などをある程度代行してくれるシステムくらいはあってもいい、とも思っています(私自身がそういうプレイヤーであるというのが少なからず理由ではあります。せっかく作ったゲームなのだから余さず楽しんでほしい、と言われてしまったら申し訳ないのですが……)。
再三になりますが現状のAIはユーザーの入力に対して「もっともらしそうな返し」を出す(バラツキはありますが)ものであり、それゆえに役立てるには「どこで何をしてほしいのか」を定める知識が必要で、また面白いものを作らせようとしても「確率的にもっともらしそうなもの」が出る以上は尖った個性を出すことは難しくなります。そのような中でAIと上手く付き合っていくには「自分が本当にこだわりたい(楽しみたい)部分に至るための、それ以外の部分への手間を減らすための道具としてAIを頼る」というのが大切なのではないか、というのが今の自分の考え方です。
開発過程でのAIの使い所
本当はこの場で実験結果まで示せればよかったのですが……
現在はPythonにて、LLMエージェントにプレイさせるための定期ゲーのシステム(栗鼠ゲライクの全自動ターン制RPG)を設計しているところになりますが、ここでも開発にGitHub Copilotと呼ばれるAIサービスを利用しております。Visual Studio Code経由でGPTやClaudeなどの大手LLMサービスにアクセスできるというもので、コード内に「ここはこういう機能があります」とコメントすると自動的にそのコードを追加してくれたり、コードの一部を選択して「この部分がどう動いているのか説明してほしい」「こういう風に直して欲しい」と伝えるとその通りにしてくれたりします。ChatGPTと同様にチャット形式での質問もできますが、この時開いているファイル以外も見て答えてくれたり、質問内容に応じて自動的にファイルを書き換えてくれたりする機能もあります!(図2)

おわりに
中途半端な形になってしまい申し訳ございませんが、AI・LLMの定期更新ゲームデバッグ・バランス調整への利用可能性、ならびにコーディングでの利用例について述べさせていただきました。今後実際にLLMエージェントで定期ゲーっぽいものをプレイできるところまで行けたら改めて報告したいと思います。
(なお本記事は字ばっかりなので今後ちょっと図を加えたりして読みやすくすると思います。時間があれば……)
参考文献
AL, A., Ahn, A., Becker, N., Carroll, S., Christie, N., Cortes, M., ... & Yang, G. R. (2024). Project Sid: Many-agent simulations toward AI civilization. arXiv preprint arXiv:2411.00114.
Bricken, T., Templeton, A., Batson, J., Chen, B., Jermyn, A., Conerly, T., ... & Olah, C. (2023). Towards monosemanticity: Decomposing language models with dictionary learning. Transformer Circuits Thread, 2.(https://transformer-circuits.pub/2023/monosemantic-features/index.html)
Ge, T., Chan, X., Wang, X., Yu, D., Mi, H., & Yu, D. (2024). Scaling synthetic data creation with 1,000,000,000 personas. arXiv preprint arXiv:2406.20094.
Paulo Salem, Christopher Olsen, Paulo Freire, Yi Ding, Prerit Saxena (2024). TinyTroupe: LLM-powered multiagent persona simulation for imagination enhancement and business insights. [Computer software]. GitHub repository. https://github.com/microsoft/tinytroupe
Vezhnevets, A. S., Agapiou, J. P., Aharon, A., Ziv, R., Matyas, J., Duéñez-Guzmán, E. A., ... & Leibo, J. Z. (2023). Generative agent-based modeling with actions grounded in physical, social, or digital space using Concordia. arXiv preprint arXiv:2312.03664.
GitHub - Google deepmind - concordia(https://github.com/google-deepmind/concordia)(2024年12月19日閲覧)
Wang, Y., Chen, Y., Zhong, F., Ma, L., & Wang, Y. (2024). Simulating Human-like Daily Activities with Desire-driven Autonomy. arXiv preprint arXiv:2412.06435.
Community.aws - Banjo Obayomi - I Built an LLM Bot in 3 hours to Conquer Slay the Spire(https://community.aws/content/2esiarYrF0xRNOMPj0god4ikRzw/i-built-an-llm-bot-in-3-hours-to-conquer-slay-the-spire)(2024年12月18日閲覧)