【ChatGPT】物語を持つ環境と無限にインタラクションして遊べるゲームの構築と、unityroomでの公開

# はじめに
先日、ChatGPTを使用したあるゲームが公開されました。（現在は公開停止中）
名前は[「ドキドキAI尋問ゲーム」](https://automaton-media.com/articles/newsjp/20230329-242319/)

ChatGPTを使用して犯人を自白に追い込みむゲームなのですが、5日前にプレイして面白く、感動しました。
おお、短編ゲームとして綺麗に作られていると。
そこで、自分も何かゲームを作ってみたいなと思い、今まで作ろうと思いつつ作れていなかったゲームを作り、公開してみました。

題名は、「ChatGPTで遊ぼう！　ルーナの秘密王国：妖精たちの知られざる物語」
公開場所：https://unityroom.com/games/luna_33242352
![スクリーンショット 2023-04-01 211801.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/e53c245d-c8e3-11bd-014a-26ae23b7f0dd.png)

デモ動画：
<iframe width="560" height="315" src="https://www.youtube.com/embed/UZpT-AyyPmA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

公開場所はUnityroomで、APIの登録やダウンロードなどもいらず、ページを開くだけでプレイできます。
よければプレイしてみてください。
改善のために感想もいただけると嬉しいです。
スマホにはまだ対応できていないので、PCの人のみプレイ可能です。

試してみたかったコンセプトとしては、AIキャラクターと話しながらオープンワールドを探検する体験。
各地を巡ると妖精ルーナが過去の妖精の国について解説してくれるのですが、それに対して質問したりすることで世界への理解を深めたり、ルーナのことをより深く知れたり、ルーナの好感度が上がったりします。
プレイ時間は5~10分程度。

注：APIの使用額が一定値までいった場合、自身のAPI Keyを使用してもらう形式に変更になる予定です。それまではAPI keyの入力なしで使用可能です。

本記事ではこのゲームの簡単な紹介と、自分が作ってみたかった、「物語持つ環境と無限にインタラクションして遊ぶゲーム」というものがどういうものか、についての解説です。

# ゲームの紹介
「ChatGPTで遊ぼう！　ルーナの秘密王国：妖精たちの知られざる物語」は滅びた妖精の国を、ユニという少女になって妖精ルーナと一緒に探検する探索ゲームです。
ユニは妖精ルーナと一緒にその土地のことを色々話しながら、妖精の国を探検することになります。

以下の画像はゲームに出てくる妖精ルーナの姿。
![00429-2391754094.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/25326157-c0ba-22ef-581a-4b03659d8428.png)

特徴は以下の三つ。

* ルーナが妖精の国の各地を探検している時、各所の様々な解説をしてくれる
* 解説の内容に質問したり、ルーナ自身に質問すると、その世界のことを交えて無数の答えを返してくれる
* 会話するたびに好感度が増減していき、それによってルーナの態度が変わる

ゲームの目的は滅びた妖精の国にある色んなもの（城とか竜とか）を巡って、妖精の国のことを知りながら、ルーナと話しながら探検をすることです。
会話するたびに好感度が増減して、それによってルーナの態度が変わるので、好かれたり嫌われたりしてみると楽しいですよ！
30回話すと最終的なルーナの好感度を教えてくれるので、それを目安に色んな場所を巡ったり、ルーナにそれらの場所について聞いてみてください。
本当にその世界で生きているかのように話すゲームのキャラクターと、一緒に冒険をするという体験を味わえると思います。


以下は三つの特徴の具体的な説明です。

## ルーナが妖精の国の各地を探検している時、各所の解説をしてくれる
以下みたいに、ゲームにある様々なロケーション、門だったり城だったり竜だったり、に近づくとルーナがその場所について自動で解説してくれます。
これは定型の文章じゃなくって、近づくたびに説明の内容が変わります。基本設定は決まっているので、極端な矛盾は起きません（はず）。

![スクリーンショット 2023-04-01 211840.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/9a82d475-4800-123c-3f5b-1e019a1ba1c0.png)

## 解説の内容に質問したり、ルーナ自身に質問すると、その世界のことを交えて答えを返してくれる
各所の紹介だったり、あるいはルーナのことだったり、妖精の国のことだったり、そういった気になったことをルーナに質問すると、以下のように答えてくれます。
![スクリーンショット 2023-04-01 212009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/f1d99553-8068-1368-8940-2d725ec1375a.png)

こうやって話すことで、ルーナとこの滅びた妖精の国について、より深く知ることができます。
こうやって話してくれると、キャラクターが決められた設定だけを話すわけじゃない、生きている感じがしますね。
妖精の国という文脈を電子世界で物理的に用意することで、物語の設定の発散を防ぐことができます。

## 会話するたびに好感度が増減していき、それによってルーナの態度が変わる
ルーナは会話するたびに、好感度が蓄積していきます。
最初は普通の友人程度ですが、好感度が蓄積していくことで、「殺したいぐらい憎くて、嫌いな人」～「愛している人」にまで変動します。
そしてその好感度によって、ルーナのプレイヤーへの態度は変わります。

具体的に、例えば「愛している人」の状態で、門の前で「ルーナは昔はこの国で住んでいたの？」と聞くと、以下のように答える。
![スクリーンショット 2023-04-04 200849.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/5e79a47b-2338-0629-a401-ea7473a4ba22.png)

でも逆に、例えば「殺したいぐらい憎くて、嫌いな人」の状態で、門の前で「ルーナは昔はこの国で住んでいたの？」と聞くと、以下のように答える。
![スクリーンショット 2023-04-04 200751.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/dca6faa9-943b-8516-e00a-8b2a34f40851.png)

好感度が高いと、ユニと一緒なら国を再興できるかも、的なことを言ってくれるけど、好感度が低いとあなたに私の過去は関係ない、と切り捨てられる。
こんな感じで、本当に生きているかのように記憶と感情を持つキャラクターと一緒に冒険をすることができます。


# 「物語を持つ環境と無限にインタラクションして遊ぶゲーム」というものはどういうものか
このゲームを作った目的は、環境と無限にインタラクションして遊ぶゲームのデモを作りたかったからです。
ではこの「環境と無限にインタラクションして遊べるゲーム」とはどういうものでしょうか？
私はこれを、ユーザーの行動によって環境が意味と物語を持って変化し、現実の世界のように変化していくゲーム、と定義しています。

大事なのは物語を持っていることです。
例えばシムシティのようなシミュレーションゲームはユーザーの行動によって意味のある反応は返します。
しかし、その中に物語はありません。
ユーザーが頭の中で物語を作ることはできますが、それはユーザーの努力によるものです。


今までも一部を体現できているゲームは存在しました。
例えばゼルダの伝説　ブレスオブザワイルド。
物語を持った世界と、練りこんだAI、物理演算を再現した世界を用意することでユーザーの遊び心に対して、様々な反応を返してくれました。
しかし、その世界に存在する人物や怪物は決められたパターンしか行動できず、限界があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/15d6f213-ad75-b27a-34e8-dce55841f910.png)

例えばSkyrim。
自分が人生で最もはまったゲームで、一つの地方とそこで実際に生活する何百人もの人々と怪物たち。それら一人一人が固有の設定とキャラクターの個性を持っていて、プレイヤーはそこで様々な人物になった遊べるという、まさしく物語を持つ環境とインタラクションして遊べるゲームでした。
しかし人が作るものであるから、どうしてもそれらの物語には限界があります。
NPCの一人一人は決められたセリフしか話せないし、その行動もAIで決められた行動しかできません。
あくまで、有限の箱庭でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/a150c476-0919-92dc-1f71-705d41547a9a.png)

しかし、ChatGPTなどのLLM(大規模言語モデル)が生まれたことで、この有限という問題を解決できる可能性が生まれてきました。
今回自分が作成したゲームでは、ルーナは意味のある、物語性のある無限のリアクションを返してくれます。
しかも、基本的な設定は決められたうえで、それに付随したエピソードだったり、フレーバーテキストを考えて返してくれます。
その世界で生きているかのように振る舞うAIキャラクターを作れているんです。

もちろん、問題は山積みです。
例えば決められている設定以外でルーナが語ることは、時々によって矛盾が発生するし、整合性も完全にとれるようには作れていません。
ローカルでは動かないため、一回一回話すたびにAPIを使用しているのでこれでゲームをきちんと構築すると費用が莫大なものになるなどの問題はあります。

しかし、これらは解決可能な問題です。
大事なことは、本当に人間のように話せるNPCや、物語を持ち、それらを創作しながらインタラクションできる環境を作ることができた、ということです。
これは本当に現実のように変化するゲームを作ることがいずれ可能になる、ということを意味していると思っています。





# おわりに
今日東大からも[生成AIについての所感](https://utelecon.adm.u-tokyo.ac.jp/docs/20230403-generative-ai)が同じように語られていましたが、大規模言語モデルとそれの延長線上の技術は世界を良くも悪くも大きく変える技術です。
場合によっては雇用を減らしたり貧富の格差をより大きくするという可能性もあるでしょう。
しかし、同時に本記事で語ったように、今までの技術ではできなかった世界を創ることができる技術でもあります。
自分は、この技術はとても大きな可能性を持つ技術だと思っています。