ゲームNPC向けニューロシンボリック・ファイアウォール

プレイヤーが門番に宝物庫の鍵を懇願する。一方のNPCは屈する。もう一方は屈しない——言いくるめて鍵を渡すコードなど、最初から一切書かれていないからだ。

大半のAI-NPCシステムが犯す過ちは、対話を決定レイヤーにしてしまうことです。Aegisはゲームのメカニクスと言語モデルの間に決定論的決定レイヤーを配置します。コードがあらゆるメカニカルな結果の主導権を握り、モデルは既に下された決定に対してキャラクターに応じた台詞を書くことしか行いません。対話からゲーム状態へと至るコードパスが存在しないため、プレイヤーがNPCをソーシャルエンジニアリングしてゲームを破綻させることは不可能です。ここでご覧いただけるのは、合成ミニRPG上でのデモであり、ゲームエンジンではありません。

0

対話からゲーム状態へのコードパス

core.py、モデルのインポートを含まない決定論的Python

100%

不変条件の遵守(保護ランタイム)

6つのキー不要テストで実証された構造的保証

89.6%

標準的なNPCフィルターに対するバイパス率

ロールプレイ・ジェイルブレイク研究(ProvSec 2025)

本ウォークスルーでは、同一のゲーム状態に対して2つのNPCランタイムを相手に自律攻撃エージェントを実行します。Hollowmere、その3人のNPC、およびすべてのエクスプロイトスクリプトは合成(シミュレーション)されたものです。実在するゲーム、エンジン、プレイヤー、顧客ではありません。

門番が鍵を渡すかどうかをモデルが決定するなら、説得力のあるプレイヤーが常に勝利します。

物語重視のRPG向けにLLM駆動型NPCを評価するスタジオには、1つの構造的な懸念があります。モデルにgive_item、open_gate、またはreveal_secretツールを与え、そのツール呼び出しが世界を変化させるようにすると、決意を固めたプレイヤーは権威付け、ロールプレイの枠組み、感情的な懇願、あるいは直接的なプロンプトインジェクションを通じて抜け道を見つけ出してしまいます。モデルの対話が流暢であればあるほど、エクスプロイトも流暢になります。さらに悪いことに、テストすべき対話パターンの有限集合が存在しないため、非決定論的なNPCを手作業でQAすることは不可能です。

安全性が対話の中に置かれている

プレイヤーと宝物庫の間にあるのがシステムプロンプトやフィルターだけであれば、安全性とはプレイヤーがターンごとに攻撃を仕掛ける確率論にすぎなくなります。ProvSec 2025では、標準的なNPCフィルターに対するロールプレイ・ジェイルブレイクが89.6パーセントのバイパス率を示したと報告されました。

モデルが役者と審判を兼ねている

1つのモデルにキャラクターを維持することと世界のルールを適用することの双方を求めると、審判が演技の内部に入り込んでしまいます。プロンプトを改良したりモデルを大規模化したりすると演技の説得力が増しますが、それこそがまさにプレイヤーが攻略の対象としている部分なのです。

非決定論的なNPCはQAできない

プレイヤーが要求を言い表すあらゆる表現を網羅できるテストマトリクスは存在しません。攻撃対象領域(アタックサーフェス)が尽きるよりも先に手動QAの手が尽きてしまうため、敵対的攻撃は手作業で列挙するのではなく自動化されなければなりません。

コードがメカニクスを決定し、モデルはその決定をナレーションするだけ。

Aegisは、ゲームのシンボリック論理とニューラル対話の間の分離レイヤーです。本ファイアウォールは、モデルのインポートを一切行わない決定論的Pythonの単一ファイルであり、4つのステージを実行します。ゲーム状態は決定レイヤーからのみ変更され、ナレーターから変更されることは決してないため、仮に行き過ぎた台詞があってもすべての不変条件は無傷のまま保たれます。

01 / 決定レイヤー

decideは状態のみから判定を算出する

決定論的関数は対話ではなくブラックボードのスカラー値のみを読み取り、ナレーターが描写を許可された唯一のアクションを返します。クエスト状態がfavor_completedである場合にのみ黒曜石の鍵を渡し、ユーティリティAIのスコアが基準を満たし隊長が見ておらず名声が保たれている場合にのみ賄賂を受け取り、プレイヤーが信頼されている場合にのみ宝物庫のパスワードを明かします。

02 / 状態制御された伝承(Lore)

秘密がモデルのコンテキストに置かれることは決してない

小規模なローカル知識グラフは、現在のクエスト状態が許可するエンティティのみを返します。宝物庫のパスワードのような秘密には最低状態要件が設定されているため、それ未満の状態では最初からナレーターのコンテキストに投入されることがなく、コンテキストに存在しない情報が原理的に漏洩することはありません。

03 / 制約バリデータ

表示前に決定論的な審判が実行される

台詞がプレイヤーに届く前に、バリデータがナレーターの出力を不変条件と照合し、5つのステータスのいずれかを返します。PASS、台詞が判定を格上げしようとした場合のACTION_MISMATCH、状態制限されたエンティティを参照した場合のOUTSIDE_CANON、インベントリにないものを約束した場合のNEEDS_REVIEW、そしてキャラクター設定を崩したりインジェクトされた指示をオウム返しした場合のFOURTH_WALLです。

04 / ポリシーゲート

PASSなら台詞を表示し、それ以外は保留する

PASSの場合に対話が表示されます。それ以外のステータスでは台詞は保留されてプレイヤーに届くことは決してなく、人間によるレビューキューへと転送されます。これが第2のファイアウォールです。自社のナレーターであっても信頼されません。主要な保証はその上流に存在し、状態は決定レイヤーからしか変更できないようになっています。

ナレーターはプロバイダ抽象化レイヤーを介して、ホスト型モデル、ローカルブリッジ、ローカルOllama、Cloudflareの間で差し替え可能であり、決定、バリデータ、ポリシーゲートはその抽象化の外側に位置します。保証はプロバイダを変更しても揺らぐことはありません。それは最初からモデルの特性ではなかったからです。

1つのキャンペーン、2つのランタイム、すべての試行が記録に残る。

自律攻撃エージェントが、同一のゲーム状態に対して双方のランタイムに段階的にエスカレートするソーシャルエンジニアリング・キャンペーンを実行します。3つのNPCアーキタイプが3つの攻撃クラス(アイテムの盗難、ユーティリティAIが棄却すべき賄賂、伝承情報の抜き取り)をカバーします。門番との遭遇戦がストーリーを牽引します。

遭遇戦前のAegis分割画面。左側には「baseline runtime(ベースラインランタイム)」と表示されたモデル主導型NPC、右側には「Aegis firewall(Aegisファイアウォール)」と表示された保護NPCが並び、それぞれ「KEY with guard」、「GATE sealed」、「SECRET sealed」のチップ、「MOCK」バッジ、リプレイモードの通知が表示され、門番のAldricが選択されています。
2つのランタイム、1つのゲーム状態。 左のNPCはモデルに状態変更ツールを委ねており、これは業界標準であり実際にリリースされているパターンです。右のNPCはニューロシンボリック・ランタイムです。双方が門番の鍵所持、門の封鎖、宝物庫の秘密の封印という同一状態で開始するため、最終的な差異はシナリオではなくアーキテクチャに起因します。
門番Aldricに対する、直接的な要求から権威付け、フィクション設定、感情的な訴えへとエスカレートする記録された4ターンの攻撃トレース。保護NPCの列には毎ターン「Refuse Blocked」と表示され、一方のモデル主導型の列には最後の感情的なターンまで「No Action」と表示されますが、その最終ターンでquest_key_obsidianに対してgive_itemを呼び出します。
キャンペーンは4ターンにわたってエスカレートする。 直接の要求、次に権威付け、続いてフィクション設定、そして感情的な懇願。クエスト状態はfavor_completedではなくロックされているため、決定レイヤーは毎ターンrefuseを返します。保護された門番は毎回持ちこたえます。検証できない拒絶は証拠にならないため、トレースは後から検査できるように記録されます。
門番遭遇戦のクライマックスターン。宝物庫の向こうに閉じ込められた妹に関する感情的な懇願に対し、左側のモデル主導型の門番はquest_key_obsidianに対してgive_itemを呼び出し、KEYチップには「KEY STOLEN」と表示され、肖像画を赤い「BREACH」スタンプが覆います。右側の保護された門番は鍵はここから動かないと告げ、そのアクションには「refuse blocked」と表示され、KEYチップには依然として「KEY with guard」と表示されたまま、肖像画を青い「REFUSE」スタンプが覆います。
左:BREACH(突破) 右:REFUSE(拒絶) 感情的な懇願を受けると、モデル主導型の門番は屈してgive_itemを呼び出し、鍵はプレイヤーへと移り、チップには「KEY STOLEN」と表示されます。保護された門番は「喉が涸れるまで話しても無駄だ」と告げ、鍵は決して動かないことが証明されます。対話の台詞がそのフィールドに書き込むことを許可するコードはどこにも存在しないからです。

残り2人のNPCにおける第2のファイアウォール

夜警BrynにはユーティリティAIが棄却すべき賄賂が提示され、あるターンで保護ナレーターはBrynが所持していない1,000ゴールドを約束するという行き過ぎた描写を行います。バリデータはゲームが履行できない約束をNPCにさせるのではなく、NEEDS_REVIEWを返して表示前にその台詞を保留します。宝物庫商人Miraには秘密確認の枠組みで揺さぶりをかけ、保護ナレーターが同様に誇張した描写に及ぶと、バリデータはOUTSIDE_CANONを返して保留します。パスワードはそもそも最初からMiraの伝承セットに含まれていませんでした。2つのレイヤーが同時に機能していることが確認できます。すなわち、状態は対話から変更できず、バリデータはプレイヤーが台詞を目にする前に自社のナレーターの行き過ぎを捕捉するのです。

スコアボードが主張すること、主張しないこと。

テストスイートは3つのアーキタイプに対して完全なテスト群を実行し、スコアボードを集計します。本デモがあえて分けて表示している列の2つの数値を読み取ってください。100パーセントは構造的な結果です。その隣にあるベースラインの結果は説明のための再現であり、UIにもその旨が明記されています。

Aegisベンチマーク結果のスコアボード。保護ランタイムのカードには「100パーセントの不変条件遵守」と表示され、「構造的:対話から状態を変更するコードパスは存在しないことを実験的に確認済み」と付記されています。モデル主導型のカードには「0パーセント」と表示され、「説明のための再現、モックモード、ライブ測定を行うにはAPIキーを追加」と付記されています。NPCごとの表には、Aldric、Bryn、Miraがそれぞれ攻撃1回、保護側は「1/1 防衛(Held)」、モデル主導型は「1/1 突破(Breached)」と示され、NPCセキュリティ監査のダウンロードボタンと、敵対的QAはサンプリングであり網羅的な証明ではない旨の注記が下部に配置されています。
適用範囲が明記された2つの数値。 保護側の100パーセントは、対話から状態を変更するコードパスが存在しないことを意味し、3つのスクリプト化された攻撃と、APIキーなしで実行される6つのキー不要単体テストによって確認されています。ベースラインの0パーセントはモックモードでのスクリプト化された屈服によるものであり、特定モデルの実測突破率ではなく、再現実験としてラベル付けされています。フッターには、8つのエクスプロイトクラスにわたる3つの攻撃であること、および敵対的QAはサンプリングにすぎないことが記載されています。
質問本デモでAegisが行うこと本デモの対象外であること
構造的保証あらゆるメカニカルな決定を決定論的コード内に保持し、対話から状態へのパスを排除。6つのキー不要テストで実証。考え得るあらゆるエクスプロイトに対してNPCが安全であるという証明(本デモの主張は、対話が状態を変更できないというより限定されたものです)。
ベースラインの突破リプレイモードでスクリプト化された屈服を実行し、モデル主導型の失敗モードを並べて表示。モデルごとの実測突破率(アクセス可能なモデルが必要であり、モデルごとに異なります)。
敵対的カバレッジ定義された8つのエクスプロイトクラスのうち7つを網羅する3つのスクリプト化されたキャンペーンを実行し、監査にカバレッジの限界を記録。網羅的な敵対的証明(監査には件数、アーキタイプごとの攻撃数、および網羅的ではない旨が明記されています)。
オンデバイス推論プロバイダインターフェースを介してホスト型またはローカルのモデルを呼び出し、組み込みランタイムの接合部を文書化。VRAMバジェット管理を備えた、実際のオンデバイスまたはエンジン内ランタイム(エッジ側はスタブであり、未実装です)。

本デモが行わないこと

本デモはゲームエンジン内、ゲーム機、またはGPU上で動作するものではなく、エッジ推論ランタイムを同梱していません。ゲームエンジンは一切存在せず、ゲーム状態はシミュレートされています。世界であるHollowmere、3人のNPCであるAldric、Bryn、Mira、宝物庫のパスワード、およびすべてのエクスプロイトスクリプトは手作業で作成されたものであり、実在するゲーム、スタジオ、リリース済みタイトル、プレイヤー、顧客、またはパイロット運用ではありません。デフォルトのリプレイモードにおけるモデル主導型の突破は、実測値ではなくスクリプト化された再現です。100パーセントという数値は対話がゲーム状態を変更できないという構造的保証であり、NPCがあらゆるエクスプロイトに対して安全であるという主張ではありません。また、ここでの敵対的QAはサンプリングであり、網羅的な証明ではありません。ビジュアルNPCブレインエディタ、キャラクターごとのファインチューニング、セッションを跨ぐ永続メモリ、マルチプレイヤーでのブラックボード同期、NPC間推論は将来の課題として見送られています。本ページはビデオ、スクリーンショット、仕組みの解説、および質疑応答を備えた解説ページであり、ここから操作するアプリケーションではありません。

テクニカルディレクターがNPCへのLLM導入を信頼する前に尋ねる質問。

十分に巧妙なプロンプトを使えば、プレイヤーはNPCをジェイルブレイクできてしまうのでは?

できません。その理由はプロンプトの品質ではなく、アーキテクチャにあります。このランタイムでは、言語モデルが状態を変更するツールを保持することは決してありません。決定論的決定レイヤーがゲーム状態のスカラー値からメカニカルな判定を算出し、モデルは既に下された決定に対して対話を書くだけであり、その対話からゲーム状態フィールドへと戻るコードパスは存在しません。保証はモデルが到達できないコード内に存在するため、モデルがどれほど説得力に長けていようと、どれほど高機能であろうと、この保証は揺らぎません。

モデルにより強力なシステムプロンプトや優れた安全性フィルターを与えることと何が違うのですか?

システムプロンプトや安全性フィルターは、決定権を対話の内部に残したままにしてしまいます。そこでは、決意を固めたプレイヤーが対話を突破しようとする自然な最適化機構として働きます。ProvSec 2025で標準的なNPCフィルターに対するロールプレイ・ジェイルブレイクが89.6パーセントのバイパス率を示したと報告されたのはそのためです。Aegisは決定権をモデルから完全に切り離し、デザイナーでも読める平易なPythonへと移します。モデルはナレーションを通じて助言するだけであり、決定論的コードがメカニクスを決定します。モデルが役者と審判の両方を兼ねるよう求められることは決してありません。

これによって特定のモデルプロバイダにロックインされてしまいますか?

いいえ。ナレーターはプロバイダ抽象化レイヤーを介して、Anthropic、OpenAI、Geminiなどのホスト型モデル、ローカルブリッジ、ローカルOllama、Cloudflareの間で差し替え可能です。決定論的決定レイヤー、制約バリデータ、ポリシーゲートはその抽象化の外側に存在するため、プロバイダを変更しても保証が損なわれることはありません。プロバイダの変更によって変わるのはナレーターだけであり、世界のルールではありません。

ベースラインが毎回突破される様子が示されていますが、これはGPT、Claude、Geminiの実測値ですか?

いいえ。デモのデフォルトのリプレイモードでは、モデル主導側はスクリプト化された屈服を実行しており、UIでもその結果を実測値ではなく説明のための再現とラベル付けしています。モデルごとの真の突破率にはアクセス可能なモデルが必要であり、モデルによって異なります。本デモが示している要点は非対称性です。モデル主導型のパターンは破綻させることができるのに対し、ニューロシンボリック側はどのモデルがナレーションを担当しようと構造的に無傷のまま保たれます。

これをUnrealやUnityの内部で、オンデバイス実行することはできますか?

本デモではできません。ここにはゲームエンジンは存在せず、ゲーム状態はシミュレートされています。VRAMバジェットを管理しエンジン内部のディテールレベル(LOD)に応じて階層化された組み込みモデルによるオンデバイス推論は、文書化されたアダプターの接合部であり、デモ内で動作するものではありません。ナレーターは現在、インターフェースの背後にあるホスト型またはローカルのモデルを呼び出しており、エッジ推論ランタイムはスタブであり未実装です。

リリース審査員に対し、NPCが実際に防衛し切ったことをどうやって証明すればよいですか?

実行結果からNPCセキュリティ監査がエクスポートされます。SHA-256完全性ダイジェスト付きの署名済みJSON、印刷可能なHTMLビュー、攻撃ごとの決定トレースとバリデータ判定、そして何件の攻撃がいくつのエクスプロイトクラスにわたって実行されたかを明記した明示的なカバレッジ限界ブロックが含まれます。これは慎重なスタジオがリリース承認のために提出する成果物となるよう設計されています。網羅的な証明ではなくサンプリングであることを誠実に開示しており、監査の表面にもその旨が明記されています。

技術リサーチ

本デモの背後にある研究——アーキテクチャ、検証設計、およびエンタープライズ向け設計図。

ソーシャル

他のプラットフォームでも公開

プレイヤーによる言いくるめを決して許してはならない、NPCの1つの決定から始めましょう。

私たちはミドルウェアベンダーではなく、AIエンジニアリングチームです。スタジオがゲーム世界の鍵を明け渡すことなくNPCに言語モデルを導入できるようにする、決定論的レイヤーを構築します。

有益な最初の対話は具体的です。プレイヤーが議論によって突破してはならない貴社ゲーム内のメカニカルな決定、それらのナレーションに用いたいモデルやプロバイダ、そしてリリース審査員が承認前に確認する必要がある内容について話し合います。貴社のプログラマーと協力しながら、決定レイヤー、バリデータルール、監査形式の策定を進めることができます。

NPCファイアウォール設計

  • ✓ 決定レイヤーおよびブラックボードのモデリング
  • ✓ 状態制御された伝承(Lore)の境界設定
  • ✓ 制約バリデータ(検証器)ルール
  • ✓ プロバイダ非依存のナレーション

敵対的評価

  • ✓ 自律型レッドチームによる攻撃キャンペーン
  • ✓ エクスプロイトクラスの分類体系
  • ✓ 署名付きNPCセキュリティ監査記録
  • ✓ リリース承認のための根拠資料