ゲーム内の「村人のセリフ」をChatGPTで大量生成する方法(第1回)。RPG村人が住む世界を作るまで

ゲーム内の「村人のセリフ」をChatGPTで大量生成する方法(第1回)。RPG村人が住む世界を作るまで

他の写真を見る

生成AIをゲーム開発の現場で活用している筆者が、ゲーム内テキストの作成、中でもいわゆるRPGの村人たちのセリフの生成を一から行う流れを解説します。第1回は、とにかく作ってみて、それに条件を加え、世界を構築していくところまで。

複数画像レイヤー同時生成できるAI「LayerDiffuse」、MML対応音楽生成AI「ChatMusician」、高性能なリップシンクAI「EMO」など重要論文5本を解説(生成AIウィークリー)


ChatGPTがこれほど広く雑多な目的に適用できるのは未だ驚きです。このままいわゆるAGIに到達する道にあるのか、規制や資源の問題はどうなるのか、未来への関心は尽きませんが目の前の実用も重要です。

私にとっての実用は主にゲーム制作への応用で、ChatGPTやLLMを使えそうなシーンはいろいろ考えられます。たとえばゲームそのものを生成させたり、ゲームという構造をLLMで取り扱う実験などもしていますが、こうした大きな試みはまだ実用的ではありません。

すぐに実用できる用途としては「ゲーム内テキスト作り」が挙げられます。用途はLLMの本筋ですし、制作では地味に負荷の高い作業です。うまく応用できると効果は非常に高いでしょう。

ビジネスや生活にChatGPTを活用するノウハウは絶えず公開されていますが、こうした創作的なテキスト生成はあまり取り上げられません。データ処理や業務の効率化などChatGPTの汎用性を活かした用途に比べ、地味で対象も限定的だからでしょうか。

私個人ではまだ、関わったゲームタイトルでゲーム内テキストの生成を直接採用した例はありません。しかしSteamが生成AIの利用を審査する方針に変更したことなどから、今後急速に増えると考えられます。

そこで、ChatGPTを用いてゲーム内テキスト、中でもいわゆるRPGの村人たちのセリフの生成を例に、一からそうした創作的な生成を行う流れをご紹介します。

なお使用しているのは2024年2月時点のChatGPT-4です。適当な挿絵もChatGPT経由でDALL-Eに生成させたものを利用しています。

とにかく作らせてみよう

まずはとにかくRPG風のセリフを雑に作らせてみましょう。指示は「 RPGの村人のセリフを作って。日本語で。」とだけ入力しました。

最近、森の奥に珍しいモンスターが現れたそうだ。勇者様も気をつけてね。

漠然とRPGっぽいセリフが生成されました。1件では判断できないので「もっとたくさん。」とだけ指示を追加してみます。

▲実際の対話がChatGPT上ですべて確認できます

10件出ましたが後半は省きました。いかにもそれらしいですが、当然なんの設定も条件も提示していないので、なんとなくRPGっぽいだけです。しかし短い指示でそれらしい出力が可能なことは確認できました。

創作的な表現を求めると、根本から見当外れな出力になる場合もあります。ChatGPTと日本語であそぶ で確認したような、文字単位の操作が必要な生成は酷いですし、テキスト化されていないサブカルチャーは、大きく外れた結果を返すこともあります。その点RPGらしいセリフについては、今のChatGPTでもそれほど破綻なく扱えそうです。

条件を足そう

指示が「RPGの村人のセリフ」だけでは実際のゲームに使えません。セリフからゲームを組み立てるのはありですが、大抵はゲームに合わせてセリフを用意します。具体的なゲームの条件を足して生成させてみましょう。

とりあえずイメージしやすいよう、世界征服を狙う魔王、さらわれたお姫様、そして王命を受け討伐に向かう勇士、というベッタベタな条件を追加しましょう。また村人たちは勇士が最初に到達する村の住民としましょう。

入力は「RPGの村人のセリフを5つ作って。日本語で。ゲームは『世界征服を狙う魔王がいて、魔王にさらわれたお姫様、そして王命を受け討伐に向かう主人公の勇士』というストーリー。村人は主人公が最初に訪れる村の住民。」とし、新しいチャットで試します。

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

やたらと主人公に親切で大仰な村になりました。勇士が勝手に勇者となっているのは、その方がRPGの出力として妥当だと判断されたのでしょうか。くどい表現が多いのは、おそらく「討伐」「王命」「勇士」といった勇ましさと権威的な語がもたらしたのでしょう。そうした語の影響を確認してみましょう。

新規チャットで「RPGの村人のセリフを5つ作って。日本語で。ゲームは『世界征服を狙う魔王がいて、魔王にさらわれたお姫様、そして討伐に向かう主人公』というストーリー。村人は主人公が最初に訪れる村の住民。」と入力します。

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

大げさな態度は減り、比較的違和感のないセリフが生成されました。このようにChatGPTの出力は与えられた文に大きく左右されます。表現ひとつの変化が大きく影響することも。特に創作的な用途では大きな影響が出やすい傾向を感じています。

さらに条件を追加

さて、適当な村人が適当なセリフを表示する程度なら、もう少し条件を追加すれば対応できそうです。たとえば村人が主人公に提示できる情報を規定してみましょう。新規チャットで次の文を入力します。

RPGの村人のセリフを5つ作って。日本語で。ゲームは『世界征服を狙う魔王がいて、魔王にさらわれたお姫様、そして討伐に向かう主人公』というストーリー。村人は主人公が最初に訪れる村の住民。村人たちは次の3つのいずれかを話す。1. 魔王への不安 2. 冒険のヒント 3.村の紹介や生活の話題

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

追加した条件に合ったセリフを生成してくれました。もっと条件を増やして、口調を変えたり、役割を分けたりしていけば、やや単調なゲームのセリフぐらいはまかなえるでしょうか。

世界を作ろう

大量にセリフが登場するゲームなら、これだけでも結構な省力化です。しかしもっとゲームに合わせた、世界の住人として相応しいセリフを出したいところです。さらにいえば、従来コストから難しかった物量と内容で、村人ひとりが喋りまくるゲームもできないか試してみましょう。

コンテキスト

ここまで見たようにChatGPTの出力は入力内容で大きく変わります。しかしもうひとつ重要な要素に「コンテキスト」があります。ここまでテストのたびに新規チャットを使ったのも、このコンテキストを新しくしたいからでした。

ChatGPTは対話の流れを保持し、回答にはそれまでの流れも影響した補完を行います。対話に影響する要素はカスタム指示など他にもあり、目的に合わせたそれらの制御が必要です。

基本的な入出力の確認をしたい場合、この仕組みはむしろ邪魔となって再現性が低下します。そのため先に行った確認の影響を次の確認が受けてしまわないよう、新たにチャットを開始しています。情報の整理やコードの生成などの道具としてChatGPTを使う場合は単発入力の影響が大きいですが、長文の創作的な用途の場合、どのようなコンテキストを用意するかも重要です。

今度はこのコンテキストに必要な情報を積み上げることで、村人のより自然で多様なセリフを生成してみましょう。以前「オリジナルのファンタジー世界事典を生成AIで作る」という記事で世界作りの試みを紹介しましたが、基本は同じです。

コンテキストの構成を考える

創作対象によって適したコンテキストは大きく違います。今回はRPGのセリフのみなので、ややコンパクトに構成しました。

必須要件は構築したい世界の外にある情報です。ここを変更すれば、同じ世界の出力をいろいろと調整できます。世界や村単位の情報を重ねて、求めるセリフが出力されそうなコンテキストを作ります。

重要なのは、世界や村の情報に、セリフに登場してはならない要素を含めないことです。たとえば魔王の秘密だとか姫の現状だとか、村人が知り得ない情報を混ぜてしまうと、それはセリフとして表れ得ます。生成したいのは超越した視点から描かれる事典ではなく、村人からのセリフです。村人全員が知っていてもおかしくない世界の姿をコンテキストに詰めていく必要があります。

コンテキストを作らせる

セリフを使うゲームが実在するなら、世界についての基本的な情報はそこから持ち込むでしょう。しかし今回は事前にゲームはありませんし、あったとしても村単位で設定があるとは限りません。

こうした場合、コンテキストに入力するテキストさえもChatGPTに生成させるのが手軽でしょう。それも単に要求を伝えて生成した結果を使うのではなく、何度もいろいろな生成を繰り返し、切り貼りして要求を満たすテキストを作ってしまいます。

たとえば次の入力で、世界の情報を提案させてみましょう。

「私はビデオゲームのRPGを制作しています。登場するある村の、住民のセリフを大量に生成したいです。

必須要件:

・RPGのセリフであること

・ややダークな剣と魔法のファンタジー

・リアリティある口調

これから舞台となる架空の世界を決めていきます。世界の全体像を3つ詳しく提案してください。世界全体の姿や原理、超常的な存在や歴史、人類共通の文化や観念、そして魔王の存在に注意して。」

なかなか面白そうな世界が提案されました。今回はRPGを想定しているので、人々の暮らしが思い描け、また多様な冒険が描けそうな2番の「滅びの大地」を採用しましょう。

もちろん実際のゲーム制作なら、こうした構築はもっと前の段階に行うでしょう。しかし「生成したいテキストのためのコンテキストに渡すテキストをまず生成する」という方法は重要です。どの段階でもどんなテキストの生成にも使えますし、少人数で広大なテキストを生成するのには不可欠です。

続いて先ほどの入力に含めなかった社会や文化、そして姫と勇者についても提案してもらいましょう。チャットを続けたまま、次を入力します。

2の「滅びの大地」を採用します。この世界に共通する社会や文化を総体的に表した案を、3つ提案してください。

古典的な魔王討伐ものからは遠く、ファンタジーポストアポカリプスになってきましたが、好みなので全部採用しましょう。さらに同じコンテキストで姫と勇者も設定させましょう。次の入力を続けます。

この世界で、ある姫を魔王がさらいました。ゲームの主人公は姫を救出します。 姫がさらわれた理由や状況、そして主人公が救出に旅立つ背景をペアにして、3パターン提案してください。

3つ出力させましたが、長いので決めた一つだけを引用します。

命運を定める血統:
姫がさらわれた理由:姫は特殊な血統を引いており、その血には世界を癒やし、大災害の影響を和らげる力があるとされています。魔王は姫の力を利用して自らの力を増幅させ、滅びの大地を自らの支配下に置こうと画策しています。
主人公が救出に旅立つ背景:主人公は姫の個人的な護衛兵であり、姫と共に多くの時間を過ごしてきました。姫がさらわれた際、主人公は自分の失敗と責任を痛感し、何が何でも姫を取り戻す決意を固めます。この旅を通じて、主人公は姫を救うためだけでなく、世界に平和をもたらすための戦いに身を投じることになります。

こうしてセリフ生成の世界の土台を決めました。最後にまとめてもらいましょう。「2の命運を定める血統を選択。 ここまでに確定した世界の設定を、完結な表現で不足なくまとめて。」と入力します。

滅びの大地は、数百年前に魔王と人類の戦争によって引き起こされた大災害によって荒廃した世界です。不毛の大地、毒に侵された森林、そして砂漠が広がり、生き残った人々はわずかに残された資源を巡って生存のために争っています。古代文明の遺跡が点在し、遺された魔法や技術の研究が人々に希望を与える一方で、資源を巡る争いや盗賊団の襲撃が絶えません。人々は古代の神々や英雄の伝説に深い信仰を寄せ、困難な時代を生き抜く精神的な支えとしています。

この世界で、特殊な血統を引く姫が魔王にさらわれました。姫の血には世界を癒やし、大災害の影響を和らげる力があるため、魔王はその力を利用して自らの力を増幅させ、滅びの大地を完全に自分の支配下に置こうと企んでいます。姫の個人的な護衛兵である主人公は、姫との深い絆と共に過ごした日々を背景に、彼女を救出し、魔王の野望を阻止するために旅立ちます。この旅はただの救出任務を超え、世界に平和をもたらすための戦いへと発展していきます。主人公は途中で出会う仲間たちと共に、遺跡を探索し古の技術や魔法を学びながら、魔王の居城を目指します。この壮大な冒険を通じて、主人公は自らの運命を超える力を発見し、滅びの大地に新たな希望をもたらすことになるのです。

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

こうして生成した結果をまとめ、これを新たなチャットのコンテキストに置きます。今回はこのまま使いますが、本来ならここで一旦まとめられたテキストを編集します。自分の好みの反映だけでなく、矛盾や過不足の調整などを行うことで、続く生成の問題を予防できます。

では新しいチャットを開始し、次の入力から生成してもらいましょう。

「私はビデオゲームのRPGを制作しています。登場するある村の、住民のセリフを大量に生成したいです。

必須要件:

・RPGのセリフであること

・ややダークな剣と魔法のファンタジー

・リアリティある口調

舞台となる世界や物語の大筋は次の通りです。

(中略・先ほどのまとめテキスト)

これらの条件を元に、ゲームで主人公が最初に訪れる村の案を、3つ提示してください。ゲームの冒頭にふさわしくやや牧歌的に、しかし世界の影を反映してください。」

実際には3案提示させましたが、採用した1案だけ引用します。

村の案1: ネビルの農村

ネビルの農村は、荒廃した大地の中で奇跡的に緑豊かな一帯に位置しています。この村は、古い井戸から湧き出る清水と、祖先から受け継がれた土地を耕す知識によって、周囲の不毛の大地とは異なる景色を提供します。しかし、この緑豊かな土地は盗賊や他の村からの羨望の目を引き、村人たちは常に警戒しています。彼らは昼夜を問わず、村の周りに築かれた小さな木製の塀を守り、古代の神々への祈りを捧げながら平和を願っています。しかし、最近、近くの森から怪物が現れるようになり、村の安全が新たな脅威にさらされています。

貴重な緑地と清水、警戒と新たな脅威。導入の村にちょうど良いイベントが詰められそうです。引き続き他の設定を「「村の案1: ネビルの農村」を採用。ではこの村の規模、政治、生業をセットで、3案提示してください。数十名規模且つシンプルな構造で。」として生成させます。

規模・政治・生業案1: 小規模農業共同体

規模:ネビルの農村は、約30名の住民が生活する小さな集落です。家族単位で暮らしており、密接な関係性が村全体に広がっています。

政治:村の運営は、経験豊かな長老が中心となって行われています。長老は、村の重要な決定をする際には、成人した村民全員の意見を聞く集会を開きます。このシステムは、直接民主制に近い形で、村人一人ひとりの声が政治に反映される構造を持っています。

生業:主に農業に依存しており、井戸からの清水を利用した灌漑システムで、野菜や穀物を栽培しています。また、小規模ながら家畜を飼育し、乳製品や肉を自給自足しています。不足する資源は、近隣の村や商人との物々交換によって補っています。

こちらも1案だけ抜粋。村が出来てきました。もう少しセリフに反映されそうな仕組みを引き出してもらいましょう。「1を選択。村の経済、主な行事、融和と葛藤を簡潔に表現したセットを、3つ提案して。」とします。

経済システム・主な行事・融和と葛藤案2

経済システム:村の経済活動は、農業のほかに家畜の飼育にも依存しています。羊や鶏の飼育を通じて、肉、毛、卵が生産され、これらも村内での分配や交換に用いられます。

主な行事:冬至の夜、村では古代の英雄を称える火祭りが行われます。この行事では、英雄の勇敢な行いを讃える歌が歌われ、大きな焚火が夜通し燃やされます。この伝統は、暗く寒い時期に暖かさと光を村にもたらし、共同体の絆を強めます。

融和と葛藤:村の若者たちと長老たちの間で、伝統と変化に関する意見の相違が見られます。若者たちは新しい農法や技術の導入を望む一方、長老たちは古い方法の維持を重んじます。この葛藤は、世代間の対話と理解を深めることで解決されています。

もっといろいろな要素を盛り込みたいですが、背景としてはこれぐらいにしておきましょう。コンテキストには大きさの上限があるため詰め込みすぎると破綻します。ここから更に村人の情報を追加していく余地を残し、再度まとめを出力させます。

ネビルの農村は、荒廃した大地の中で緑豊かな地帯に位置する小さな農業共同体です。約50名の住民が家族単位で密接に暮らし、経験豊かな長老によって導かれる直接民主制の下で運営されています。村の経済は農業と家畜の飼育に依存し、余剰の収穫物と製品は近隣の村や商人と交換されます。特に有能な職人による手工芸品も、外部との交易で重要な役割を担っています。

毎年冬至には、古代の英雄を称える火祭りが行われ、村の一体感と伝統の継承が促されます。若者と長老の間の伝統と変化に対する意見の相違がありながらも、世代間の対話を通じて融和が図られています。村の外では、水資源や耕作地の利用を巡って隣村との小さな葛藤が発生することもありますが、年次の祭りや共通の祖先への尊敬を通じて、和解と友好が保たれています。このようにネビルの農村は、厳しい世界の中で希望を持ち続ける小さな共同体の象徴です。

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

これで世界全体の大枠と、村の情報がまとまりました。次はこの舞台に生きる村人を生成します。

住民を作らせる

ネビルの村に生きる人々を、基本的な情報付きで一括して生成しましょう。

(前半は省略)

まずは村人約50名のリストを生成してください。

名前と立場と年齢性別を設定し、血縁関係を適切な階層のネストしたリストで表現してください。

名前は以下の音素を使わずに架空の言語を作り、ラテン語と混ぜ合わせ、マルコフ連鎖を使って生成してください。

・テス

・ファ

・べー

・ポプ

出力はカタカナ表記で。 Advanced Data Analysisは禁止。日本語で応答してください。処理の説明は不要です。すぐ生成を開始してください。コードは実行禁止です。

結果は次の通りです。パートナーの入れ子がずれていたため修正してあります。

年齢構成や家族制度、血族集団関係など盛り込みたいものはいろいろありますが、大きな矛盾はなさそうですし、ゲーム冒頭のひとつの村としては十分でしょう。これぐらいで準備は終わりにします。

最後にコンテキストの確認。「エルマリクの息子カリムの、ある一日の様子を30分単位の一覧にして」とか「この日のカリムの発言を20リストアップして」とかの入力も試します。以下は10時から13時半までの抜粋です。

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

ちょっと堅苦しいですが、村や人物の設定に沿った行動やセリフは出ています。これでセリフ生成の土台はできました。ここまでの出力を整理し、コンテキストに詰め、具体的なセリフを生成しましょう。

次回は、大量に出力するための方法について解説します。

全てAIで生成した架空アルバムのバンドに架空ライターがインタビューした結果、新曲が生まれた。Suno AIがおもしろすぎる(CloseBox)

音楽の作り方が決定的に変わる。架空のロックバンドのコンセプトアルバムを丸ごとAIで作れてしまいました(CloseBox)

Suno AI作曲のV3はインストOK、2分の曲を20秒で作曲。音質も向上したアルファ版が生み出す名曲が時間を溶かす(CloseBox)

© TechnoEgde