全 NPC が ChatGPT ( GPTOSS ) の UNITY WebGL ゲームを作ってみました ( LLM )
生活感あふれるゲーム内のNPC達
ゲーム NPC を自由にしたい
LLM や AI の進化により本来のやり方では出せない NPC の会話の自由度を上げたい!
と思って、個人で POC (Proof of Concept) 的なゲームを作成してみました。
ゲーム内の NPC が全員 GPTOSS で、プロンプトを作成し、
各 NPC に違う設定と性格を与えてみました。
本来ゲームの NPC はスクリプトだったり、イベントシステムの構成で作るものですが、
自由度がかなり制限されたり、設定するのに労力に合わないものが多々あります。
LLM の力でそういう問題を解決できると思われます。
全 NPC が GPTOSS のゲームを作ってみた
あくまで個人作で無償提供していますので、文句やクレームなどは受け付けません。。。
ゲーム内で NPC と自由入力でやりとりできますので、よかったらお試しください。
ゲーム内で NPC と自由入力でやりとりできます。
技術スタック
使った技術スタックはこんな感じです。
LLM 自然言語とゲームシステムの紐付け
最近嬉しいことに、GPTOSS や Thinking 機能があるモデルを使えば、
事前会話を楽しめるだけではなく、ゲーム内イベントを発生させることもできます
下記のように会話でやりとりをして、ポーション屋である NPC からポーションを購入することができます。
NPC : いっらっしゃいませ、ポーション屋のモクランです。
プレイヤ : ポーションはなにがあります?
NPC : ヒーリングポーション100銀、マナーポーション500銀、解毒ポーション600銀です。
プレイヤ: ヒーリングポーション1個ください。
NPC : ありがとうございました! {command,purchase,{ヒーリングポーション1個},150}
プロンプトでは「ポーション購入希望があった場合、特殊コマンドを会話の後ろにつけろ」という設定しておけば、
実際のプロンプトはこんな感じです。
最後に上記のようなパラメータが出るため、Unity 側で処理し、ゲーム内の購入イベントを発生できます。
ポーション購入するような要望があった場合、
ありがとうございましたなどという感謝的な返事に加えて、
最後に {cmd:purchase:ポーションの種類x個:合計金額数字だけ} をつけて。
下記の画像はゲーム内で購入イベントを発生。持っている銀貨を減らし、アイテムが獲得しているポップアップを出すなどしています。
主な課題
今回 POC 的なゲームを作った結果、主な課題が見えました。
NPC の反応が遅い
これは主に GPTOSS の反応が遅くて、Geforce RTX5090 で処理しましたが SBV2 ( Style Bert Vits 2 ) の音声合成も含めて API のレスポンスは1-3秒ほどかかります。
ですが、将来的に、技術の進歩によって、あと3-4年もすれば改善されると期待できます。
NPC が望ましくない返答する
プロンプトがちゃんとしていないと望ましくない反応をすることがあります。
開発側がある程度テストして何回も繰り返しプロンプトを改良することによってある程度防げますが、
全てのケースには対応できないので、ドメイン外の会話を全否定するというな設定をしなければいけません。
GPU 利用料金は高い
Cloud GPU サービスなどを使うと高くなりますが、OnPremise のサーバを使えばある程度コストは削減できます。
コストは合わなければ API などを使うという選択肢もあります。
入力が面倒くさい
選択肢式の NPC と違って、手入力する必要があったため、かなり時間がかかります。
音声入力を使用できるようにしたり、場合によっては選択肢が出たりする工夫が必要だと思われます。
結論
技術は確かに既に確立していますが、いくつかの課題がまだ残っています。
ですが、やはり NPC と自由会話できるゲームの未来が近いと思います!
Discussion