AI NPC × UE5 UEFN × Verse
← Back to Blog

ゲームの中に「考えるNPC」を作った話
UE5 × Python × Claude API。3つをつないだら、一日でAIと会話できる賢者が生まれた

PROLOGUE

「NPCが自分で考えてしゃべる」を作りたかった

ゲームのNPCというのは長いあいだ、決まった台詞しか言えなかった。話しかけるたびに同じことを言う、あの繰り返し。それが不満だったわけじゃないけど、Claude APIで何かできないか考えていたとき、ふとこう思った。

NPCにClaudeを繋いだら、どうなるんだろう。

実験の着地点は決めなかった。まず動かすことだけを考えて、1日でどこまで行けるか試してみた。

CONCEPT

「サーバーが常に中継役」という設計の普遍性

実装を始める前に、まず全体像を整理した。UE5(Unreal Engine 5)はゲームエンジンだ。Claude APIはWebサービスだ。この2つは直接つながらない。

だから間にPythonのサーバー(Flask)を挟む。UE5がサーバーにメッセージを投げ、サーバーがClaudeに転送し、返ってきた答えをUE5に返す。

🎮 UE5(ゲーム画面) Blueprint / HTTP Request
🖥️ Pythonサーバー(Flask) localhost:5000 — 中継役
🤖 Claude API NPCのキャラクター設定 → 返答生成
💬 UE5画面に返答表示 Print String → 画面左上にテキスト出力

この「中継役サーバー」という構造は、入出力が何に変わっても共通して使える。LINE Botでも、スマートスピーカーでも、ロボットでも、この骨格は同じだ。今日UE5でやったことは、そのままどんなAI連携にも転用できる雛形になっている。

BUILD

「謎めいた老賢者」を設計する

Pythonサーバーの核心は、NPCのキャラクター設定をsystemプロンプトとして渡すところだ。

# NPCのキャラクター設定(systemプロンプト) NPC_PERSONALITY = """ あなたは古い神殿を守る謎めいた老賢者です。 プレイヤーに対して短く、意味深な言葉で答えます。 日本語で答えてください。返答は2〜3文以内。 """

これだけで、どんな質問が来ても「老賢者らしい答え」が返ってくる。実際に動かしたときの返答がこれだ。

「ほう...また一人、迷い人がこの古き聖域に足を向けたか。
汝が求めるものは何じゃ?真実か、それとも安らぎか?」

「こんにちは、賢者よ」と送っただけで、これが返ってきた。台詞の分岐を何十通り書く必要はない。キャラクターを言葉で定義すれば、Claudeがその役を演じてくれる。

CONNECT

Blueprintでゲームとサーバーをつなぐ

UE5側はBlueprintだけで完結する。コードは一行も書かない。

Plugins から HttpBlueprint(Experimental) を有効化し、アクターに HTTP Post Request ノードを追加する。送信先は http://127.0.0.1:5000/talk、BodyにJSONを渡し、レスポンスが返ってきたら Print String で画面に表示する。

Blueprint は視覚的な配線だから、やっていることの意味が掴みやすい。EventBeginPlay → Http Post Request → 成功なら Print String、という流れがノードの繋がりとして目に見える。

COST

「動いた」の先にある運用コスト

実験として「動いた」ことと、展示やゲームとして「運用できる」ことは別の話だ。

Claude APIは1回の会話(約500トークン)で約$0.01〜0.02程度。100会話/日 × 30日 = 約$30〜60(4,500〜9,000円)の試算になる。加えてPythonサーバーをRenderでホストすれば月$7〜25の固定コストが乗る。

決して「無料」ではない。ただ、音声まで付けてリアルな展示デモを作るなら、このコストは十分に意味のある投資になりうると思う。次のステップはElevenLabsで音声を乗せ、メタヒューマンのリップシンクと組み合わせること。設計はすでにできている。

SUMMARY

Python・Flask・Claude API・UE5 Blueprintを繋いで、ゲーム内でAI NPCが日本語で会話する仕組みを一日で作った。核心は「サーバーが中継役になる」という設計パターンで、これは入出力の種類を問わずどんなAI連携にも転用できる。

NPCのキャラクターはコードではなく言葉で定義する。台詞分岐を何百本も書く必要はない。「どんな人物か」をsystemプロンプトで渡せば、Claudeがその役を演じてくれる——これがAI時代のNPC設計の基本形になる予感がした。

ALL UEFN × Verse Level Craft Asset Design Artwork