モデル / データセット
undreamai/LLMUnity avatar
undreamai/LLMUnity

LLMUnity: Unity プロジェクトに llama.cpp ベースのローカル LLM を組み込む

Create characters in Unity with LLMs!

スター 1,708フォーク 195C#Apache-2.0

ひと目でわかる

これは何?
LLMUnity は Unity 上で LLM キャラクターを動かすための Apache-2.0 の C# パッケージで、バックエンドの LlamaLib は llama.cpp を土台にしている。GPU やモバイルを含む実行環境の広さが売りだが、モデルの配布とパッケージサイズの扱いは導入前に見ておくべき論点になる。
誰に向いている?
すでに Unity でゲームや VR アプリを組んでいて、NPC の会話を外部 API に依存させたくないチームには候補になる。逆に、モデルファイルの同梱や配布サイズの管理を自前で設計したくない場合、あるいは推論品質をクラウドの大型モデルに合わせたい場合は、このパッケージ単体では要件を満たしにくい。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 140 日前です。
何の言語で書かれている?
主に C# です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

誰のためのパッケージか: 会話 API を外に出したくない Unity 開発者

LLMUnity が解く問題は、Unity のゲーム内キャラクターに自由文の会話をさせたいが、そのたびに外部の推論 API を呼びたくない、という要求である。README は「Runs locally without internet access. No data ever leave your game!」とうたっており、会話ログやプレイヤー入力が端末外に出ない構成を前提にしている。想定読者は Unity で NPC や対話キャラクターを実装する開発者で、対象は PC、モバイル、VR と README に列挙されている。C# が主要言語で、Unity のコンポーネントとして扱える形になっている点が、Python 製の推論サーバーを別プロセスで立てる構成との違いになる。ただし README は「Supports remote server setup」も挙げており、ローカル実行は唯一の選択肢ではなく、あくまで既定の設計方針として読むのが正確である。

LlamaLib と llama.cpp の二層構造

アーキテクチャは README に明記がある。推論バックエンドは LlamaLib という名前の C++/C# ライブラリで、これは llama.cpp の上に構築され、単体のライブラリとして提供される。Unity 側の C# パッケージはこの LlamaLib を呼び出す層であり、モデルの読み込みと推論の実体は llama.cpp 側にある。したがって量子化形式や対応モデルの範囲は、基本的に llama.cpp が扱えるものに従う。README の表現では「Supports all major LLM models」とされているが、これは llama.cpp が対応する形式という条件付きで読むべきで、任意のモデルが無条件に動くという主張ではない。バックエンドが別リポジトリとして切り出されているため、Unity パッケージの更新と推論エンジンの更新は別々のサイクルで進む。リリースが v3.0.1 から v3.0.3 まで約2か月で3回出ている点からは、追従の頻度が高いことがうかがえる。

RAG は ANN 検索でキャラクターの知識を補う

パッケージには Retrieval-Augmented Generation の仕組みが含まれる。README は「Advanced RAG System (ANN search)」と記し、用途を「semantic search across your data, which can be used to enhance the character's knowledge」と説明している。つまり会話のたびにモデルを再学習させるのではなく、あらかじめ用意したデータから意味的に近い断片を近似最近傍探索で取り出し、それを文脈としてモデルに渡す。キャラクターの設定資料、用語集、シナリオ本文などを外部データとして持たせ、モデル本体には入れないという分担になる。ここで実務上の論点はインデックスの生成タイミングである。検索対象のデータを更新するたびにインデックスを作り直す必要があり、その処理をエディタ上で行うのか、ビルド時に焼き込むのかでワークフローが変わる。README にはこの運用の指針までは踏み込んでいない。

セットアップと最初の呼び出し

導入経路は README の Setup と Quick start にまとまっている。Unity プロジェクトへの取り込みは、Unity Asset Store のパッケージページ(README のバッジが示す slug 273604)経由か、GitHub リポジトリから取得する形になる。README は「Easy to setup, call with a single line of code」と述べており、呼び出し自体は C# の1行で済む設計だと説明されている。ただし実際に動かすには LLM モデルのファイルが必要で、README には LLM model management という独立した節が置かれている。ここが Unity 開発者にとっての実作業の中心になる。モデルは llama.cpp 系の量子化ファイルとして用意し、それをパッケージ側から読み込ませる。RAG を使う場合はさらにインデックス対象のデータを用意する。README の At a glance にはテスト済みバージョンとして「Unity: 2021 LTS, 2022 LTS, 2023, Unity 6」が挙がっているので、これより古いバージョンでの動作は README からは確認できない。

配布物にモデルを同梱するコスト

このパッケージを採用するときの最大の実務コストは、コードではなくモデルファイルの扱いにある。ローカル推論はクラウド API の呼び出し料をなくす代わりに、モデルの重みをプレイヤーの端末に置く。量子化しても数 GB 規模になることが多く、モバイル向けストアのアプリサイズ制限やダウンロード体験に直結する。初回起動時に別途ダウンロードさせる設計にするなら、それは「No data ever leave your game」という前提の外側でネットワークを扱うことになる。README はこの配布形態の指針を示していない。また同梱するモデルのライセンスはパッケージの Apache-2.0 とは別物で、モデルごとに再配布条件が異なる。ここは法的判断ではなく、導入前に必ず確認すべき項目として挙げておく。

向かない場面: 品質をクラウドの大型モデルに合わせたい場合

反対に、このパッケージが適さないのは、会話の品質を最上位のクラウドモデルに合わせたいプロジェクトである。端末上で動かす以上、モデルサイズは VRAM とメモリの制約を受ける。README の At a glance は「Blazing fast inference on CPU and GPU (Nvidia, AMD, Apple Metal)」とうたうが、これは推論速度の話であり、大型モデルと同等の応答品質を端末で得られるという意味ではない。この点は README に明示されていないので、速度の記述と品質の期待を混同しないよう注意したい。もうひとつの失敗モードは、対応プラットフォームの想定違いである。README は PC、モバイル、VR を挙げるが、LlamaLib は C++ ライブラリなので、対象プラットフォームごとにネイティブビルドが用意されている必要がある。README からは各プラットフォームのビルド手順までは読み取れない。

代替との違い: 推論サーバーを別に立てる構成

比較対象として分かりやすいのは、llama.cpp のサーバーを別プロセスで立て、Unity から HTTP で叩く構成である。Velesio AI server は README の採用プロジェクト一覧に載っており、まさにこの系統の構成にあたる。違いは結合の度合いにある。LLMUnity は LlamaLib を Unity プロセス内に取り込むため、C# から直接呼べる代わりに、ネイティブライブラリのビルドとプラットフォーム対応をパッケージ側の都合に合わせることになる。サーバー分離型は Unity 側が単なる HTTP クライアントで済み、推論エンジンの更新もモデルの差し替えもサーバー側だけで完結する。その代わり、プレイヤーの端末にサーバーを同梱して起動するか、外部にホストするかの判断が必要になり、前者なら結局は配布物の問題が残り、後者なら「No data ever leave your game」という前提は崩れる。どちらが優れているという話ではなく、ネイティブ依存を Unity 側に閉じ込めるか、プロセス境界で切るかの選択である。

ライセンスと更新の追い方

パッケージ本体は Apache-2.0 で、README は「Free to use for both personal and commercial purposes」と述べている。商用利用を含む許諾条件は Apache-2.0 の条文に従う。ただし前述のとおり、同梱するモデルの重みは別ライセンスであり、パッケージのライセンスがモデルの再配布を許諾するわけではない。更新面では、リリースが v3.0.1(2026-01-28)、v3.0.2(2026-02-27)、v3.0.3(2026-03-08)と短い間隔で出ており、バックエンドの LlamaLib と llama.cpp の更新に引きずられる形で頻繁に版が上がる構造だと推測できる。プロジェクトに固定版で取り込むなら、どのバージョンの LlamaLib を同梱しているかをリリースごとに確認する必要がある。README にはアップグレード手順の記載がないため、破壊的変更の有無はリリースノートを個別に追うことになる。

編集部の結論

すでに Unity でゲームや VR アプリを組んでいて、NPC の会話を外部 API に依存させたくないチームには候補になる。逆に、モデルファイルの同梱や配布サイズの管理を自前で設計したくない場合、あるいは推論品質をクラウドの大型モデルに合わせたい場合は、このパッケージ単体では要件を満たしにくい。導入前に確認すべきは、対象プラットフォームで LlamaLib のビルドが通るか、同梱する GGUF モデルのライセンスが配布形態と衝突しないか、そして RAG のインデックスをどのタイミングで生成してビルドに含めるか、の3点である。README の At a glance が挙げる「Runs anywhere」はプラットフォーム網羅の主張であって、すべてのモデルサイズがモバイルで実用的に動くという意味ではない。

公式情報源

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. undreamai/LLMUnity on GitHub
コミュニティノート

コミュニティノート