目次

ゲーム NPC を自由にしたい
LLM や AI の進化により本来のやり方では出せない NPC の会話の自由度を上げたい!
と思って、個人で POC (Proof of Concept) 的なゲームを作成してみました。
ゲーム内の NPC が全員 GPTOSS で、プロンプトを作成し、各 NPC に違う設定と性格を与えてみました。
本来ゲームの NPC はスクリプトだったり、イベントシステムの構成で作るものですが、
自由度がかなり制限されたり、設定するのに労力に合わないものが多々あります。
LLM の力でそういう問題を解決できると思われます。
ゲームはこちらのブログのリンクで試せます。( WebGL )
あくまで個人作で無償提供していますので、文句やクレームなどは受け付けません。。。
ゲーム内で NPC と自由入力でやりとりできます。

技術スタック
使った技術スタックはこんな感じです。

LLM 自然言語とゲームシステムの紐付け
最近嬉しいことに、GPTOSS や Thinking 機能があるモデルを使えば、
事前会話を楽しめるだけではなく、ゲーム内イベントを発生させることもできるのでゲームとして成り立ちます。
下記のように会話でやりとりをして、ポーション屋である NPC からポーションを購入することができます。
NPC : いっらっしゃいませ、ポーション屋のモクランです。
プレイヤ : ポーションはなにがあります?
NPC : ヒーリングポーション100銀、マナーポーション200銀、解毒ポーション600銀です。
プレイヤ: ヒーリングポーション1個ください。
NPC : ありがとうございました! {command,purchase,{ヒーリングポーション,1},100}
プロンプトでは「ポーション購入希望があった場合、特殊コマンドを会話の後ろにつけろ」という設定しておけば、
最後に上記のようなパラメータが出るため、Unity 側で処理し、ゲーム内の購入イベントを発生できます。
下記の画像はゲーム内で購入イベントを発生。持っている銀貨を減らし、アイテムが獲得しているポップアップを出すなど

主な課題
今回 POC 的なゲームを作った結果、主な課題が見えました。
・NPC の反応が遅い
これは主に GPTOSS の反応が遅くて、Geforce RTX5090 で処理しましたが SBV2 ( Style Bert Vits 2 ) の音声合成も含めて API のレスポンスは1-3秒ほどかかります。
ですが、技術の進歩によって、あと3-4年もすれば改善されると期待できます。
・NPC が望ましくない返答する
プロンプトがちゃんとしていないと望ましくない反応をすることがあります。
開発側がある程度テストして何回も繰り返しプロンプトを改良することによってある程度防げますが、
全てのケースには対応できないので、ドメイン外の会話を全否定するというな設定をしなければいけません。
・GPU 利用料金は高い
Cloud GPU サービスなどを使うと高くなりますが、OnPremise のサーバを使えばある程度コストは削減できます。
コストは合わなければ API などを使うという選択肢もあります。
・入力が面倒くさい
選択肢式の NPC と違って、手入力する必要があったため、かなり時間がかかります。
音声入力を使用できるようにしたり、場合によっては選択肢が出たりする工夫が必要だと思われます。
結論
技術は確かに既に確立していますが、いくつかの課題がまだ残っています。
ですが、やはり NPC と自由会話できるゲームの未来が近いと思います!
本記事は、弊社エンジニアによる個人研究の一環として執筆された Zenn ブログ記事
「全 NPC が ChatGPT ( GPTOSS ) の UNITY WebGL ゲームを作ってみました ( LLM )」
をご紹介しています。記事の全文は Zenn にてご覧いただけます。
※ 本記事および Zenn 掲載内容は、著者個人の見解・研究活動に基づくものであり、grasys としての公式見解や製品提供を示すものではありません。
※ リンク先のゲームや外部サイトは著者個人の運営によるものであり、その内容・動作・安全性について当社は責任を負いかねます。

