ゲーム内の「村人のセリフ」をChatGPTで大量生成する方法(第2回)。データを大量に出力する

ゲーム内の「村人のセリフ」をChatGPTで大量生成する方法(第2回)。データを大量に出力する

他の写真を見る

生成AIをゲーム開発の現場で活用している筆者が、ゲーム内テキストの作成、中でもいわゆるRPGの村人たちのセリフの生成を一から行う流れを解説します。第2回は、データを大量に作るところから改善すべき点まで。

Google One特典にFitbit PremiumとNest Awareサブスク追加、英国で開始

第1回はこちらです。

大量に出力しよう

ここからは人物単位でチャットを開始してセリフを生成します。とはいえ各人物の設定は、まだ名前や家族関係、年齢と社会的地位しかありません。もう少し肉付けをしないと、セリフに一貫性が出ません。

試しに商人の妻ディアナを使って、まずは人物像を生成させ、続いてセリフを生成しましょう。

ディアナの場合

これまでの設定をまとめた入力に続いて「ではディアナについて、人物像を詳細に設定してください。人物像は現実的に、良し悪しを交えて。」と指示します。

ディアナは、ネビルの農村で商人サリクの妻として知られている30歳の女性です。彼女は村で最も魅力的な女性の一人として広く認知されており、その美貌は訪れる商人や旅行者にも評判です。しかし、彼女の美しさに目が行きがちですが、ディアナの本当の魅力はその知性と商才にあります。

ディアナは商人としての夫をサポートすることで、自身も経済的な洞察力と交渉スキルを磨いてきました。彼女は村の外での取引にも積極的に関わり、新しい取引のチャンスを見つけ出すことで家族の生計を支えています。そのため、彼女は村の経済活動において重要な役割を果たしています。

一方で、ディアナは時に自分の意見を強く主張する傾向があり、これが近隣の村人や他の商人との間で小さな摩擦を生むこともあります。彼女は自分のビジネスセンスに絶対の自信を持っており、他人の意見や提案を軽視しがちです。このため、一部の村人からは少し傲慢と見なされています。

ディアナはまた、家庭においても献身的な母親であり、8歳の娘ベリルに良い教育と価値観を伝えようと尽力しています。彼女は娘に対して非常に保護的であり、ネビルの農村という比較的安全な環境で育っているにもかかわらず、娘を過剰に心配することがあります。これは、ディアナ自身が若い頃に経験した困難から、娘にはより良い未来を望んでいるためです。

ディアナの人物像は、その美貌と知性、ビジネスでの成功と家庭での役割のバランスを示しながら、彼女の性格の複雑さと現実的な挑戦を描き出しています。彼女の物語は、ネビルの農村のコミュニティにおける彼女の重要性と、個人としての成長と挑戦を浮き彫りにします。

これぐらいの人物像があれば、セリフにも大きな間違いは起きにくいでしょう。

では姫の救出、ひいては魔王の討伐という無謀な冒険に出たばかりの主人公に対する、ディアナのセリフを生成してください。口調は人物像にしっかりと合わせ、主人公に対する反応も性格から最大限現実的に定めてください。 まずは何気ない挨拶や、村の日常的な話題に関するものを20件。」と入力してセリフを生成します。

10件の抜粋ですが、なかなか良さそうです。続いて「村の紹介や自身の情報に基づくセリフ」「打ち解けた後のセリフ」「主人公が村に破滅をもたらした場合のセリフ」「ほとんど知らない魔王や姫についてのセリフ」を各20件、合計100件分生成しました。

それぞれ5件の抜粋です。

▲ChatGPT上での実際の対話はこちら

用意した世界や村の設定を踏まえつつ、極端におかしな出力はなさそうです。生きた村人というにはあまりに硬いですが、ゲーム次第では十分使えるでしょう。

他の村人でも全く同じ手順でセリフを生成しました。

長老エルマリクの場合

農民アリアンの場合

鍛冶屋オリヴァンの場合

4人分400件のセリフ生成にかかった時間は15分程度でした。ゲーム最序盤のいわゆるモブキャラたちにはひとまず足りる品質でしょう。この内容でこの分量を書き起こすのに比べれば、生成時間はほとんど無視できる規模です。

生成したセリフはこのままゲームに使えるわけではありません。設定との矛盾を含むもの、文章としておかしなもの、単語の選択が不自然なものなどの除去や修正が必要です。そうした後処理を含めたとしても、なおかかる時間は圧倒的に短いでしょう。

改善しうる点

品質には改善点が色々ありますが、同じ設定で大量の村人の大量のセリフという要件は、どうしても個々の質を下げます。またLLMに限らず現状の生成AI全般が、その出力に8割以上の品質を求めるのが難しいという根本的な課題があります。主人公が重要なシーンで吐く珠玉の一言なら、今はまだ確実に、書き起こした方が早いでしょう。

それでも大量に一定の要件に収まる言語表現を短時間で用意できることの価値は大きく、また今回の例でも改善点はいろいろ考えられます。

関係の明示

たとえば不足していた主人公との関係。設定には主人公がどのように村や住民と関わるのか、情報がありませんでした。そのためセリフ中、住民が示す態度の一貫性がなく不自然です。

たとえば「主人公は姫の手がかりを求め村にやってきた。村でよそ者は警戒されるが、主人公の身なりや目的、経歴から、毛嫌いはされない」といった条件を加えれば改善するかもしれません。セリフの状況に幅を持たせ、教師のミランで試してみましょう。

▲ChatGPT上での実際の対話はこちら

なかなか良さそうです。セリフにおいては話者間の関係を規定する表現が含まれないと、結果が不安定になりやすいのでしょう。関係情報はひな形に含めるべきです。

村人の人物像

個々の村人はセリフ生成前に人物像を膨らませていますが、どうも薄っぺらさが気になります。世界や村の設定、そして職業など社会的位置がむき出しというか、人物の内的な世界の介在が見えません。

これは膨らませる段階で個人性につながる情報が不足していて、各人の人間性が背景設定頼みになっているからだと考えられます。個人を膨らませているのに、膨らませる元が少なすぎるため、情報量の多い背景に紛れてしまい、皆似通った観念で塗りつぶされてしまっているのです。

各人の膨らませる段階を、個々の新規チャットで行っているのも問題です。今のChatGPTでは同じコンテキストで異なる何かを描かせると、その結果はある程度の範囲に収束してしまう傾向が強く出ます。「美しい物語を」と別個に何度頼んでも、ベタベタした似た構成が表れ続けてしまいやすいです。

これを防ぐには、バリエーションを持たせたい対象の生成は一度にまとめて行う方法があります。つまり全村人の、名前や年齢、性別や社会的位置以外の情報を、ある程度一括して生成させます。これにより一括した人物間での似すぎた出力を防止できます。恐らくその方が文章として妥当だからでしょう。

世界や村の設定に続けて「以上が理解できたら、エルマリクの一家について、各人の性格、口調、セリフ例、世界観、美点欠点などを現実的且つ個性的に設定してください。」としてみました。

エルマリク (長老, 男性, 78歳)

性格: 知恵があり、落ち着いている。村の平和と繁栄を何よりも大切にする。過去の経験から多くを学び、若者に知識を伝えることに情熱を注ぐ。

口調: 落ち着いた口調で、話すときは常に考えながら話す。尊敬語を使い、他人を大切にする態度を示す。

セリフ例: 「我々の村は数多くの困難を乗り越えてきた。お互いを思いやり、協力し合うことが我々の力だ。」

美点: 深い知恵と経験、人々を導く能力。

欠点: 時に保守的で、新しい変化を受け入れるのが遅れがち。

サリア (長老の妻, 女性, 74歳)

性格: 慈悲深く、家族思い。村の若者たちにも母親のような愛情を注ぐ。料理と裁縫が得意。

口調: 優しく、温かみのある口調。誰に対しても丁寧で、慈愛に満ちた言葉遣い。

セリフ例: 「あなたが元気でいることが、私の一番の幸せよ。いつも健康に気をつけて。」

美点: 慈悲深さ、手作りの料理や衣服で人々を喜ばせること。

欠点: 心配性で、特に家族の安全について過保護なところがある。

カリム (息子, 男性, 45歳)

性格: 実直で勤勉。村のために一生懸命働き、家族を支えることに誇りを持っている。少し頑固な面も。

口調: 真面目で、直接的。家族や仕事に対する責任感が強く、その話題になると熱が入る。

セリフ例: 「一日一日を大切に、我々の手で村をより良い場所にしていこう。」

美点: 強い責任感、家族への深い愛情。

欠点: 時に頑固で、新しいアイデアに対して開かれていないことがある。

ナリア (カリムの妻, 女性, 43歳)

性格: 社交的で明るい。村の人々との交流を楽しみ、家族の団結を大切にする。

口調: 親しみやすく、時に冗談を交えながら会話する。誰とでもすぐに打ち解けることができる。

セリフ例: 「笑顔は最高の薬よ。困ったときこそ、お互いを助け合わなくちゃ。」

美点: 人懐っこい性格、困難な時もポジティブな姿勢。

欠点: 時におせっかいと感じられることがあり、プライバシーに対する配慮が足りないことも。

ジェノン (孫, 男性, 20歳)

性格: 好奇心旺盛で冒険心が強い。新しいことを学ぶことが好きで、村外の世界にも関心がある。

口調: 若々しく、情熱的。時には無邪気な発言が飛び出すことも。

セリフ例: 「世界は広いんだ。僕たちにはまだ見ぬものがたくさんある。夢を追いかけよう!」

美点: 高い好奇心と学ぶ意欲。

欠点: 時に現実感が欠け、理想と現実のギャップに苦しむこと。

レヴィア (孫, 女性, 18歳)

性格: 思慮深く、感受性が豊か。村の自然や人々の幸せに深い関心を持ち、詩や絵を描くことが趣味。

口調: 穏やかで、詩的な言い回しを好む。話す際には、感じたことや考えたことを丁寧に表現する。

セリフ例: 「この大地には、まだ見ぬ美しさが沢山隠れている。私たちはそれを見つけ出す旅人なのかもしれない。」

美点: 豊かな感受性、芸術への愛。

欠点: 現実の問題に対して消極的なところがあり、時に行動に移すのが遅れがち。

▲ChatGPT上での実際の対話はこちら

口調の情報など、セリフに直結する部分でバリエーションが出ています。入力段階で単語など簡単な個性の指示を加えれば、もっとばらけさせることも可能でしょう。こうした階層を挟んでいくことで、最終出力を要件に沿って豊かにできます。

その他の改善しうる点

たとえば今回のセリフでは、世界設定にある大筋しか物語が登場していません。しかしRPGではロールプレイによって編まれる物語が不可欠です。この村で生じるイベントを定義し、そのイベントに対し各人がどう反応するかはゲームとして必要でしょう。

村人間の関係の露出がセリフに少ないのも不足です。人物の詳細生成時に盛り込むことで、より関係が登場するようになり、社会を認識しやすくなるでしょう。

主人公の状態への反応、時間と季節、不和や問題、経済、資源や欲求など、盛り込んで改善できそうな点は他にも色々あります。コンテキストの大きさという制約もあって全ては盛り込めませんが、ゲームの要件に応じて設計し、収まる範囲なら十分投入可能なテキストを生成できると考えています。

まとめ

今回のように大量の創作的テキストを生成するのは、かなりゲーム的な要求です。小説でも漫画でも基本は入念に設計された物語を構成する文章が必要であって、読まれるかも分からない大量のテキストにあまり出番はありません。他に必要とするのは事典のような形式で世界を作る場合ぐらいかもしれません。

プレイヤーが掘り起こすことで世界を体験する濃度が変わる類のゲームでは、名文ではない無数の表現が必要です。これまでそうしたゲームを個人や小規模なチームが作ろうとすると、テキスト制作は厚い壁のひとつでした。ChatGPTに限らず、生成AIはそうした壁をかなり薄くしてくれる可能性を持っています。

なお今回はコストと分かりやすさ、手早さのためにChatGPTを利用しましたが、実際にゲーム制作で利用するには効率が悪すぎます。コンテキストに込める文章の生成はChatGPTで行っても、コンテキストを組み上げたりセリフのバリエーションを生成したりする部分には、APIを使いツールを作るべきでしょう。

私は今、Glimnoteという世界の設定や人物の関係を生成AIを使いながら構築するサービスの制作に関わっています。一方で個人の実験としてゆっくりですが、今回のような生成をもっと柔軟に行えるツール作りも進めてきました。ゲーム配信プラットフォーム最大手が生成AIの利用そのものは拒絶しなくなったことで、こうしたツールは今後たくさん登場するだろうと考えています。

生成AIに関する社会の衝突は起き続けていますが、多様で大量の既存の表現から柔軟に新たな表現が導出できるという技術そのものは、いずれゆっくりと全体に受容されていくのではないでしょうか。そうした日を意識しつつ、ゲーム制作や世界を作る遊びへの応用を試し続けていこうと思います。

Activision Blizzardの元CEOコティック氏、TikTokの買収を検討か。OpenAIのアルトマン氏に提携打診とも

4090でもLLMをゼロから事前学習できる手法「GaLore」、画面を見てトリプルAタイトルを完走できるAIなど重要論文5本を解説(生成AIウィークリー)

100均でも買える!770円以下で手に入るType-CのUSB充電器をチェックしてみました:#てくのじ何でも実験室

© TechnoEgde