PR

AIでNPC会話を作る方法|自然なセリフと分岐シナリオの設計・実装ガイド

AI初心者ガイド
スポンサーリンク

AIでNPC会話を作る方法|自然なセリフと分岐シナリオの設計・実装ガイド

ゲームのNPC(ノンプレイヤーキャラクター)との会話が単調になったり、選択肢ごとのセリフを考えるのに時間がかかったりしていませんか。

AIで自然なNPC会話を作るには、キャラクターの設定・会話時の状況・プレイヤーの選択肢・ゲーム内で変化するフラグを指定し、生成結果を人が確認することが重要です。 ChatGPTなどの文章生成AIなら、セリフ案だけでなく、分岐表や実装用の構造化データの下書きも作れます。ただし、設定の一貫性や条件分岐の正しさは自動的に保証されません。

この記事では、一人の鍛冶屋NPC「ガルド」を例に、最初のセリフから分岐シナリオ、ゲームへの組み込みまでを順に解説します。

スポンサーリンク

AIでNPC会話を作る基本手順は?

最初は「設定を決める→会話を生成する→分岐を設計する→矛盾を検証する→ゲームへ実装する」の5段階で進めると整理しやすくなります。 一度に長編シナリオを生成するより、短い会話イベントを完成させてから広げると修正点を見つけやすくなります。

 
 
 
 
 
手順 作業 完成させるもの 1 人物像、話し方、目的を決める NPC設定シート 2 状況と文字数を指定してAIに依頼する 通常会話・反応セリフ 3 選択肢と結果を整理する 分岐表・フラグ一覧 4 不整合・冗長さ・権利面を確認する 修正済み会話データ 5 ゲーム制作ツールに合わせて出力する テキスト・CSV・JSONなど
 
 
 
 
 

AIの役割は、アイデア出しと下書き、表形式への整理、見落としの候補探しです。何を面白いと感じさせるか、どの設定を採用するか、実装が正しく動くかは制作者が判断します。

自然なNPCセリフに必要な設定は?

自然な会話は「誰が」「どんな状況で」「何を伝えるために」話すかによって決まります。 年齢や性格だけを指定しても、NPCの行動目的やプレイヤーとの関係が曖昧なら、説明的なセリフになりがちです。

例として、次の設定を使用します。

項目 設定例
名前・職業 ガルド/城下町の鍛冶屋
性格 頑固で無口だが、腕の良い職人。
 
 
 
 
困っている人は見捨てない 一人称・二人称 オレ/アンタ 口調 短めの言葉。
 
 
 
 
「〜だ」「〜じゃねぇか」。原則として敬語を使わない
現在の状況 主人公が珍しい鉱石を持って来店した
会話の目的 鉱石の希少性を示し、加工クエストにつなげる
禁止事項 知らないはずの真相を話させない。説明だけの長台詞にしない

語尾を固定するだけでは個性が弱くなります。「鉱石を見ると仕事人として興奮する」「秘密については言いよどむ」といった感情・行動の変化も指定しましょう。

コピペで使えるNPC会話生成プロンプト

次のテンプレートの角括弧内を自分のゲームに合わせて書き換えれば、短い会話を作り始められます。

あなたはゲームのシナリオ編集者です。
以下の設定に沿って、プレイヤーとNPCの短い会話を3案作成してください。

【NPC設定】
名前:[ガルド]
職業:[鍛冶屋]
性格:[頑固で無口、情に厚い]
一人称:[オレ] 二人称:[アンタ]
口調:[短文、敬語は原則使わない]
知っている情報:[珍しい鉱石の加工方法]
知らない情報:[鉱石が隠された本当の理由]

【状況】
場所:[城下町の鍛冶屋]
プレイヤーの行動:[珍しい鉱石を見せる]
NPCの感情変化:[面倒そう→驚き→職人として興味を持つ]
会話の目的:[加工依頼クエストの提示]

【出力条件】
・案ごとに「感情」「NPCのセリフ」「次に起きる行動」を出力
・NPCのセリフは1案あたり80文字以内
・NPCが知らない設定を勝手に明かさない
・世界観にない現代語を使わない
・設定から推測した内容は「追加提案」として別記する

出力例:ガルドの反応

案A(驚き重視):「……おい、アンタ。その鉱石、どこで拾った? ちょっと貸してみろ。」
案B(職人気質重視):「表面の光り方が違うな。……いい素材だ。オレの炉で試したくなってきた。」
案C(クエスト誘導重視):「加工はできる。だが、このままじゃ炉がもたねぇ。耐熱石を一つ持ってきな。」

案Aは謎を残す場面、案Bはキャラクター紹介、案Cはクエスト開始に向きます。候補の数を増やすだけでなく、セリフが物語のどの役割を担うかを選ぶことが重要です。

AIで分岐シナリオを設計するには?

選択肢ごとに「必要条件」「セリフ」「変化するフラグ」「次の会話」をセットで定義します。 フラグは「クエストを受けた」「鍵を持っている」などの状態を記録する値です。先に分岐表を作ると、行き止まりや同じ報酬の重複を発見しやすくなります。

鉱石を持ってきた主人公に、ガルドが加工を提案する場面を考えます。

プレイヤーの選択 ガルドの反応 状態の変化 次の展開
「加工を頼む」 「なら耐熱石を持ってきな」 questAccepted=true 素材集めへ
「今はやめる」 「気が変わったら来い」 変更なし 通常会話へ戻る
「鉱石について聞く」 「古い鉱山で見たことがある」 heardOreHint=true 手掛かりを聞ける

分岐プロンプトの例

以下の分岐表をもとに、ゲーム実装用の会話イベントを設計してください。

NPC:ガルド。頑固な鍛冶屋。主人公は珍しい鉱石を持っている。
選択肢:加工を頼む/今はやめる/鉱石について聞く

各選択肢について、次を表で出力してください。
1. 分岐ID(重複不可)
2. 選択肢テキスト
3. NPCの返答(80文字以内)
4. 実行前の条件
5. 変更するフラグ
6. 次のイベントID

その後、到達不能な分岐、未設定フラグ、設定矛盾の疑いを一覧化してください。
矛盾がないと断言せず、確認できなかった点も示してください。

JSONにするとゲーム実装へ移しやすい

JSONはデータをキーと値で整理する形式です。次の例では、choicesが選択肢の配列、setFlagsが選択時に更新する状態を表します。

{
  "eventId": "blacksmith_ore_01",
  "npcId": "gald",
  "line": "……おい、その鉱石を見せてみろ。",
  "choices": [
    {
      "id": "accept",
      "text": "加工を頼む",
      "reply": "なら耐熱石を持ってきな。",
      "requiredFlags": { "hasRareOre": true },
      "setFlags": { "questAccepted": true },
      "nextEventId": "collect_heatstone"
    },
    {
      "id": "decline",
      "text": "今はやめる",
      "reply": "気が変わったら来い。",
      "requiredFlags": {},
      "setFlags": {},
      "nextEventId": "town_idle"
    },
    {
      "id": "ask",
      "text": "鉱石について聞く",
      "reply": "古い鉱山で見たことがある。",
      "requiredFlags": {},
      "setFlags": { "heardOreHint": true },
      "nextEventId": "ore_hint"
    }
  ]
}

これは設計例であり、Unity、Unreal Engine、RPGツクール、ティラノスクリプトへそのまま読み込める共通仕様ではありません。 使用するエンジンのイベント機構に合わせて項目名と処理を変える必要があります。AIが出力したJSONは、構文チェックに加え、参照先イベントIDやフラグの存在も検証してください。

NPC会話の作り方はゲームジャンルによってどう変わる?

会話の目的をジャンルごとに調整すると、似たようなセリフの量産を避けられます。

 
 
 
 
 
ジャンル 重視する点 AIへの追加指示 ファンタジーRPG 世界観・クエストの手掛かり 時間帯やボス討伐前後でセリフを変える 恋愛・ノベルゲーム 関係性・感情の積み重ね 好感度が低・中・高の3段階で同じ場面を書き分ける ミステリー 情報開示の順序 NPCが知る事実と隠す事実を区別する オープンワールド 状況に応じた反応 天候・場所・進行フラグに応じた短い会話を作る
 
 
 
 
 

たとえば討伐前は「北の森には近づくな」、討伐後は「森への街道が開いたらしい」と変えれば、NPCのセリフがプレイヤーの行動を反映します。ただし、討伐フラグが更新されなければ会話は変化しないため、ゲーム側の条件設定が必要です。

AIで作ったセリフが不自然なときの直し方は?

まず「情報の説明しすぎ」「口調のブレ」「場面に合わない感情」を確認します。 同じキャラクターの良いセリフ例を2〜3件示すと方向性を伝えやすくなりますが、毎回完全に同じ口調になるとは限りません。

よくある問題 修正指示の例
セリフが長い 「1発言は60文字以内。
 
 
 
 
説明は2回の会話に分ける」 誰でも言える無個性な台詞 「職人として鉱石の表面や重さに注目して話す」 口調が突然変わる 「設定シートの一人称・二人称・禁止表現と照合」 NPCが秘密を漏らす 「知っている情報/知らない情報を分け、後者は発言させない」 選択しても結果が変わらない 「各選択に状態変化か固有情報のいずれかを割り当てる」
 
 
 
 
 

文章が短ければ必ず自然になるわけではありません。重要な場面では沈黙や言いよどみを残し、情報を伝えるセリフと感情を表すセリフの強弱をつけましょう。

分岐の矛盾を防ぐためのチェックリスト

AIには矛盾の候補を挙げさせられますが、「AIに確認させた=バグがない」ではありません。 少なくとも次を人がテストします。

  • すべての選択肢の遷移先が存在するか

  • 条件を満たさない選択肢が表示されないか

  • クエストを断った後に報酬を受け取れないか

  • 同じ報酬やアイテムが繰り返し取得されないか

  • 途中でセーブ・ロードしてもフラグが保持されるか

  • NPCがまだ知らない出来事を話していないか

  • 長い日本語でもテキスト枠に収まり、読みやすいか

最初は3つの選択肢と2〜3個のフラグで小規模な試作を行い、想定した分岐を全て通るのが効果的です。

AI生成のNPC会話を商用ゲームに使っても大丈夫?

AI生成テキストを商用ゲームに使えるかは、利用するAIサービスの規約と、生成物自体の権利関係の確認が必要です。 「AIが作った文章だから無条件に自由に使える」とは言えません。

文化庁の資料では、AI生成物でも既存著作物との類似性と依拠性が認められる場合、著作権侵害となり得ると整理されています。既存ゲームの特徴的なセリフをそのまま再現させる指示を避け、生成後に類似表現がないか確認しましょう。独自の人物設定やストーリーの加筆も大切です。

また、制作途中の未公開シナリオや個人情報を外部AIへ入力する場合は、サービスのデータ取扱方針とチーム内のルールを確認してください。APIを使ってゲーム中に会話をリアルタイム生成する場合は、利用料、応答速度、不適切出力の制御、会話履歴の保存なども設計対象になります。

参照: 文化庁「AIと著作権について」

よくある質問

プログラミングができなくてもNPCのセリフを作れますか?

はい。 セリフ案や分岐表の作成は日本語の指示だけで始められます。ただし、ゲーム内で選択肢を表示し、フラグによって会話を変える処理は、制作ツール側で設定する必要があります。

無料のAIでもNPC会話は作れますか?

無料で利用できる文章生成AIでも、短いセリフ案やキャラクター設定の整理は可能です。 利用できるモデル、回数、出力上限はサービスや時期によって変わるため、使用前に公式案内を確認してください。

プレイヤーの質問に自由に答えるNPCも作れますか?

技術的には可能ですが、事前に用意した固定会話より実装が複雑です。 API連携、応答待ち、費用、世界観の逸脱、禁止情報の管理が必要です。初心者はまず固定セリフと分岐フラグによる方式から始めると扱いやすくなります。

まとめ:NPCの設定と分岐条件を先に決めよう

AIで魅力的なNPC会話を作るコツは、プロンプトを長くすることではなく、人物像・状況・会話の目的・状態変化を明確にすることです。

  1. NPCの性格、話し方、知っている情報を設定する。

  2. 場面と会話の目的を指定してセリフ案を作る。

  3. 選択肢、必要条件、フラグ、遷移先を表にする。

  4. 人が推敲し、全分岐をテストする。

  5. ゲーム制作ツールに合わせた形式へ整理する。

まずはガルドのように一人のNPCと小さなクエストを作り、プレイヤーの選択が次のセリフに反映されるところまで試してみてください。

コメント