「LLM for Unity」の使い方!生成AIを組み込んだゲームの開発にチャレンジしよう

LLM for Unity 導入方法・使い方 ゲーム開発

今回はUnityに生成AIを組み込むための便利パッケージに関する話題で

Unity上でLLM(=大規模言語モデル)を動かせる「LLM for Unity」の導入方法・使い方

をわかりやすく解説するという内容になっております。

まず、「生成AIをゲームに組み込む」という試みはChatGPTが登場してから広く行われるようになってきました。しかし最初のころはゲームに組み込めるレベルの大規模言語モデル(=LLM)がほとんどなく、それゆえにChatGPTの有料APIなどを使ったものが大半で買い切り型のゲームとして作るのは難しいという問題がありました。

ただ最近では

  • 軽量
  • 比較的高性能
  • ローカル環境で動かせる

という3要素を満たすLLMが登場しており、Unityで開発したゲームにローカルで動くAIを組み込み、買い切り型のゲームとして販売することもだいぶ現実的となってきました。

このような中UnityにLLMを組み込むためのアセットがいくつか登場しているのですが、その中でも「LLM for Unity」という無料アセットがかなり使い勝手が良かったのでぜひご紹介しておこうと思いました。

ここではこのLLM for Unityについて導入方法や使い方を解説していきますね。

はじめに:LLM(大規模言語モデル)とは?

まずLLM for Unityの説明に入る前に、前提知識としてLLMについて簡単に解説しておきます。

LLMとは大規模言語モデル(Large Language Model)のことで、膨大なテキストデータを学習して人間のような自然な文章理解・文章生成を行うAIを指します。有名なところではChatGPTやGeminiなどの対話型AIはこのLLMの技術を活用したサービスとなっています。

LLMのゲームへの活用例

LLMをゲームに使うことで例えば下記のようなことが可能になります。

  • NPCとの自然な会話:
    AIがキャラクターになりきってプレイヤーと自然な会話をする
  • ストーリーやクエストの動的な生成:
    プレイヤーの行動や選択を元にAIがストーリー等を自動生成して変化のある物語を楽しめる
  • プレイヤーが入力した文章を評価:
    プレイヤーが考えた技名を評価して新しいスキルを作る

今までは開発者が予め用意した会話やストーリーに沿ったゲームしか作れませんでしたが、LLMをゲームに導入することでより自由で柔軟なロールプレイを楽しめるゲームを作ることができるようになります。

「LLM for Unity」について

公式リポジトリ

LLM for Unityとは?

LLM for UnityはUndreamAIが提供するUnity用の無料アセットです。このアセットを使うとLLMをUnity上で簡単に扱えるようになります。

LLM for Unityの導入方法

LLM for UnityはアセットストアまたはGitHubから入手することができます。ただアセットストア版は私が試したところエラーが出たので、ここではパッケージマネージャからプロジェクトに導入する方法をご紹介しますね。主な手順は次のとおり。

  1. パッケージマネージャからLLM for Unityをインストールする
  2. 空のゲームオブジェクトに「LLM」コンポーネントをアタッチする
  3. 好きなLLMを選んでダウンロードする

手順1:パッケージマネージャからLLM for Unityをインストール

まず、UnityのパッケージマネージャからLLM for Unityをインストールします。

パッケージマネージャ経由でインストールを行う場合は予め「Git」と呼ばれるバージョン管理ツールをPCにインストールしておく必要があります。…まさかこのブログをご覧の方でまだGitを導入していない方はいないとは思いますが、「いやまだ導入してねーぜ!」という方は最初に下記ページからインストーラをダウンロードしてGitを導入しておきましょう。

Gitの導入が済んだらパッケージマネージャを開き、左上の「+」マークをクリック→「Git URLからパッケージをインストール」を選択して…

Git URLからパッケージをインストールする方法

下記のURLを入力しLLM for Unityのインストールを行いましょう。

https://github.com/undreamai/LLMUnity.git

手順2:空のゲームオブジェクトに「LLM」コンポーネントをアタッチする

導入が済んだら次に空のゲームオブジェクトを作成してそこにLLMコンポーネントをアタッチします。

LLMコンポーネント

手順3:好きなLLMを選んでダウンロードする

そうしたら好きなLLMを選んでダウンロードしましょう。LLMコンポーネントの下のほうに「Download model」というドロップダウンがあり、そこから対応しているLLMのモデルファイルを直接ダウンロードできるようになっています。

LLM for Unityでのモデルファイルのダウンロード方法

とりあえず試すだけの場合はファイルサイズの小さい「Tiny models」の中から選ぶのがおすすめです。ここでは例として「Gemma 3 1B」(=Googleが開発した、パラメータ数10億の非常に軽量なモデル)を選択しました。なおLLMの名前は「モデル名 バージョン パラメータ数」となっていますので覚えておきましょう。

あと、ダウンロードしたモデルファイルはCドライブ内の下記フォルダに保存されます。

Users\(ユーザー名)\AppData\Roaming\LLMUnity\models

モデルファイルの容量は大きいものだと数GB以上になるので、Cドライブの空き容量が少ない場合は巨大なモデルは選択しないようにしてください。

ダウンロードが完了すると「Model settings」のところにダウンロードしたモデルの一覧が表示されるようになります。

LLM for Unityの基本的な使い方(サンプルスクリプト付き)

では導入が済んだところでいよいよLLM for Unityを動かしてみましょう。主な手順は次の通りです。

  1. 空のゲームオブジェクトに「LLM Agent」コンポーネントをアタッチする
  2. LLM Agentにメッセージを渡して返信を受け取るC#スクリプトを書く
  3. UIを作ってLLMと会話できるようにする

それぞれ詳しく見ていきましょう。

手順1:空のゲームオブジェクトに「LLM Agent」コンポーネントをアタッチする

まず、空のゲームオブジェクトに「LLM Agent」コンポーネントをアタッチして設定を行います。LLM Agentコンポーネントは簡単にいうとAIに「こういうキャラクターとして振舞って」と指示できるコンポーネントです。

LLM Agentコンポーネント

「Chat Settings」のところに「System Prompt」という欄があるので、ここにAIにどのようなキャラとして振舞ってほしいかを書きます。ここでは例として下記のようなプロンプトを記入してみました。

好奇心旺盛な人間とAIアシスタントとの会話。AIアシスタントは人間の質問に対し、親切で詳細かつ丁寧な日本語の回答を返します。

LLMが日本語に対応しているモデルで、かつ日本語で返答してほしいならこの欄は日本語で記入してOKです。

手順2:LLM Agentにメッセージを渡して返信を受け取るC#スクリプトを書く

次に、LLM Agentにメッセージを渡して返信を受け取るC#スクリプトを書きます。今回はサンプルとして下記のようなシンプルなC#スクリプトを書いてみました。

using UnityEngine;
using UnityEngine.UI;
using TMPro;
using LLMUnity;

public class TestChat : MonoBehaviour
{

	[SerializeField]
	LLMAgent agent;
	[SerializeField]
	TMP_InputField input;
	[SerializeField]
	Button button;
	[SerializeField]
	TextMeshProUGUI replyText;

	void Start()
	{
		button.onClick.AddListener(() => SubmitMessage());
	}

	// LLMAgentにメッセージを渡す
	public void SubmitMessage()
	{
		string message = input.text;
		agent.Chat(message, HandleReply);
	}

	// 返信を受け取ってテキストに流し込む
	void HandleReply(string reply)
	{
		replyText.SetText(reply);
	}

}

手順3:UIを作ってLLMと会話できるようにする

最後にUIを作ってLLMと会話できるようにします。ここでは下記のようなUIを用意し、先ほど書いたC#スクリプトの欄にボタンやテキストなどの参照をアサインしました。

チャット用UIの例

UIのヒエラルキーは下記のような構造になっています。

UIのヒエラルキー構造

これで準備OKです。試しに

こんにちは!

というメッセージを入力したところ、下記のように返答してくれました。

「こんにちは!」というメッセージを送信してみた場合の返答例

きちんと返答できていることが分かりますね。

おわりに

以上、LLM for Unityの導入方法や使い方について解説しました。このアセットを使えばローカルLLMを簡単に自作ゲームに導入できてゲーム開発の幅が格段に広がると思うので、ぜひ皆さんも試してみてください。

この記事がゲーム開発のお役に立てば幸いです。