ノンプレイヤーキャラクターの会話 · プロンプト、複数案、確認

ノンプレイヤーキャラクターの会話生成:人間らしく響く台詞を書く

自分だけのノンプレイヤーキャラクター会話生成ツールを作る

実践的なノンプレイヤーキャラクター会話の進め方:ペルソナ・目的・制約のプロンプト、複数案の生成、確認チェックリスト、そしてキャラクターが世界の中で話すライブ3Dデモ。

✦ゲーム
作る:ノンプレイヤーキャラクター会話生成ツール

ノンプレイヤーキャラクターの会話生成ツールは、書かれた説明を、その人物が口にする台詞の候補に変えます。ペルソナ、状況、目的を渡すと、草稿が返ってきます。どの草稿を採用するかを決めるのはツールではありません。切り、直し、実際にその台詞が聞こえる場面の中で試すのは書き手の仕事です。

このページでは繰り返せる進め方を扱います。三部構成のプロンプトを組み立て、言い回しではなく状況を変えて三〜五案を生成し、五点の確認チェックリストを通し、承認した台詞を歩き回れる世界に置きます。最後の部分が重要です。テキストファイルの中だけに存在する台詞は、プレイヤーに届いた瞬間に地の文として読まれます。持ち場に立つキャラクターに、トリガー半径と吹き出しを付けて初めて、その台詞は会話として読まれます。

簡単な答え:ノンプレイヤーキャラクターの会話生成ツールがすること

ノンプレイヤーキャラクターの会話生成ツールは、ペルソナ、状況、目的という三つの入力を受け取り、台詞の候補を返します。ペルソナは誰が話し、何を知っているかを定めます。状況はプレイヤーがどこにいて、何が起きたばかりかを定めます。目的はこのやり取りでキャラクターが何を望むかを定めます。三つのどれかを変えれば出力は変わります。どれも変えなければ、ほぼ同じ台詞が返ってきます。

できないのは、台詞を仕上げることです。生成ツールが作るのは草稿です。長さは適切で、声らしく、目的にも合っているのに、声に出して読むか画面で見るまで気づかない何かがどこかで間違っている。候補から選び、説明しすぎる台詞を切り、残った一本を人が口にする形に直すのは書き手です。出力は、速くて疲れ知らずで、やや字義に忠実すぎる共同作業者からの初稿だと考えてください。

ゲームの中で会話を本物らしく感じさせるもの

四つの性質がほとんどの仕事をします。短い台詞。プレイヤーは動きながら読むので、二呼吸必要な台詞は飛ばされます。一つの台詞に一つの意図。警告と質問を同時にすると、どちらにもなりません。人物ごとに一貫した声。語彙、文の長さ、その人物が言おうとしないこと。そして知識の限界。キャラクターは世界の中の立場が教えることしか知らないはずです。荷役人は王の体調を知りません。北門の衛兵は、誰かに聞かされていない限り下水道で起きたことを知りません。

知識の限界は、書き手が最もよく破り、プレイヤーが最もよく気づく点です。どの人物もあらゆる質問に答えられるなら、世界は場所ではなく検索窓のように感じられます。何かを生成する前に、各人物がもっともらしく何を知りうるかを決めてください。その決定は頭の中ではなく、ペルソナのプロンプトに書きます。

同じ依頼を二通りに書いてみます。平板な版:「橋が落ちたので東道を行く必要があるとプレイヤーに伝えろ」。眠っていない渡し守の口にすると:「夜のうちに橋が落ちた。今は東道しか乾いた道はない。金があるなら向こうへ渡してやるが、暗闇で櫓はこがないよ」。二つ目は同じ情報を運びながら、一人の人間も運んでいます。値段、限界、気分がにじむ。平板な版にはどれもありませんでした。

平板な版が無駄というわけではありません。それは仕様書です。まず平板な台詞を書き、それを人物の口に移し替えます。ペルソナなしで目的から直接生成すると、正しいけれど入れ替え可能な台詞が出てきます。

プロンプトの型:ペルソナ、目的、制約

三部の型はペルソナ、目的、制約です。ペルソナは誰が話し何を知るか。目的はこのやり取りが何のためか。制約は長さ、調子、その台詞がしてはいけないこと。毎回三つとも埋めてください。目的だけのプロンプトは無難な台詞を生み、ペルソナだけのプロンプトは機能のない独白を生みます。

記入例:「ペルソナ:マルタ、渡し守、川で四十年、昨夜橋が崩れたことと、東道が満潮時に冠水することを知っている。目的:橋が落ちたことと、代金次第で渡してやれることをプレイヤーに伝える。制約:三十語以内、過去の説明はしない、王に触れない、話し言葉、疲れている」。このプロンプトは使える候補を返します。制約を外せば段落になり、ペルソナを外せば道しるべになります。

項目入れる内容よくある間違い
ペルソナ名前、役割、この人物が知ることと知らないこと、現在の気分知識の限界ではなく背景設定を並べ、答えるべきでない質問に答えてしまう
目的このやり取りがプレイヤーのために成し遂げるべき唯一のこと二つの目的(警告と販売)を重ね、どちらもきれいに果たせない
制約語数、語調、禁じる話題、明かしてはいけないこと省いてしまい、四秒の吹き出しに六十語の段落が返ってくる

声を失わずに複数案を作る

十案ではなく三〜五案を頼んでください。三未満では選択肢の広がりが見えず、五を超えると書くより読む時間が増えます。補助的な台詞なら三、プレイヤーが繰り返し聞く台詞なら五で十分です。

変えるのは言い回しではなく状況です。同じペルソナ、目的、制約で同じプロンプトを再実行すると、ほぼ同じ台詞が返ります。同じ文構造で、形容詞だけが入れ替わる。それは不具合ではなく、入力が変わらなければそうなる程度の決定性を持つ抽出手法の性質です。本当の多様性が欲しいなら、人物が反応している対象を一つ変えてください。プレイヤーが夜ではなく夜明けに来た。プレイヤーが傷を負っている。プレイヤーが同じ質問を三度目にした。同じ声、違う圧力、違う台詞。

ペルソナの部分は案の間で固定します。実行ごとにペルソナが揺れると、一人の人物の案ではなく、同じ名前をたまたま共有する複数の人物を作ることになります。ペルソナを凍結し、状況を変えれば、出力は比較可能なままです。

採用した台詞を生んだプロンプトを保存してください。六週間後、同じ人物の二本目が必要になったとき、記憶から声を再構成するのではなく、そのプロンプトを読み込みます。プロンプトのファイルは会話データと同じく版管理に置きます。

台詞を出す前の確認チェックリスト

五つの確認を順番に。会話表に入れる前の全台詞に実行します。

1

01

画面上の長さ。語数を数え、一秒およそ三語で読了時間を見積もります。二十語を超える台詞は、タイマーを延ばさない限り吹き出しが閉じる前に読み終わりません。延ばすのではなく切ってください。

2

02

その人物が知らないはずの知識。この人物が立ち位置と最近の履歴からもっともらしく何を知りうるかを問います。誰にも聞かされていないことを台詞が明かしているなら、切るか、聞かされる場面を足してください。

3

03

名前と世界設定の一貫性。人物表で綴りを確認し、固有名詞はすべて世界設定資料と照合します。生成ツールはそれらしい地名を発明し、あなたの地図と矛盾させます。

4

04

台詞に出口があるか。分岐も依頼の更新も退場もなく会話を終える台詞は、プレイヤーを、次に話すことが何もない人物の前に立ち尽くさせます。会話の台詞には必ず出口が必要です。その出口が「もう話すことはない」であっても。

5

05

声に出して読む試験。話す速さで台詞を声に出します。画面上では問題なく見える台詞も、子音の連続や不自然な強勢でつまずきます。あなたがつまずけば声優もつまずき、プレイヤーは飛ばします。

台詞を人物の口に置く

承認した台詞を一本取ります。人物を立ち位置に置きます。歩き回れる場面の中の固定位置で、仕事として筋の通る方向を向かせます。渡し守は道の真ん中ではなく桟橋の縁に立ちます。トリガー半径を付けます。人物の周りの球またはカプセルで、プレイヤーが近づいたときに発火し、通りの反対側を通り過ぎたときには発火しない大きさにします。次に吹き出しを人物の頭の基準点に付け、人物に追従させ、形状物に対して正しく遮蔽されるようにします。

立ち位置のない台詞は地の文として読まれます。プレイヤーは姿の見えない声を聞き、脳はそれを語り手として処理し、人物としては処理しません。最初の一言より前に、誰が話しているかを教えるのが立ち位置です。到着への応答として台詞を感じさせるのがトリガー半径です。プレイヤーが動いても台詞を体につなぎ止めるのが吹き出しです。

配置は模型ではなく、実際の3D場面で試してください。Neta Studioの3Dゲームビルダーでは、キャラクターを歩き回れる世界に落とし込み、トリガー半径を設定し、承認した台詞を吹き出しに結び、プレイヤーを歩かせて通せます。Mini Worldはまさにこの種の確認のための小さな場面です。吹き出しが壁にめり込んだり、広場の反対側からトリガーが発火したりすれば、十秒歩くだけで分かります。サイクロプス島はより大きな場面で、プレイヤーとキャラクターの間に多くの形状物を置いて同じ台詞を試せます。

  • 立ち位置人物の固定位置と向き。体がその場所に属して見えるように選びます。
  • トリガー半径近づくと台詞を発火させる短距離の範囲。部屋の反対側から再生されないように調整します。
  • 吹き出し人物の頭に固定された世界空間の要素。プレイヤーが動いても台詞がつながったままになります。
  • 吹き出しの表示時間語数から一秒およそ三語で設定します。タイマーを延ばすのは台詞を切った後だけです。

会話はキャラクターの振る舞いのどこに収まるか

会話は一つの層です。その上には知覚(何を見聞きできるか)、判断(次に何をするか)、アニメーション(判断が体にどう表れるか)があります。話される台詞はそれらの層の目に見える出力であり、代わりではありません。警告を発しながら同じ方向へ歩き続けるキャラクターは、会話の層がアニメーションの層と食い違っており、プレイヤーはそれを壊れていると読みます。

行動ツリーを使っているなら、会話は、その人物が会話中だとツリーがすでに判断した後に到達する葉ノードに置きます。近づくこと、向き、間、退出はツリーが扱います。会話ノードが台詞を供給します。これにより台詞一覧はデータ駆動のまま、タイミングはツリーの管理下に置かれます。ツリーを書き直さずに固定台詞を生成台詞へ差し替えられるという利点もあります。

プレイヤーの入力に反応するAIキャラクターでも構造は同じです。知覚がツリーに渡し、ツリーが会話ノードを選び、ノードが固定台詞を引くか、実行時にペルソナ、目的、制約を持ってモデルを呼びます。ここでエージェント・スプライト・フォージが役立ちます。人物の視覚的な同一性と会話の同一性が対になったままになるからです。その声のために作られていないスプライトに生成台詞を載せることにはなりません。

固定台詞の一覧のほうが、見た目よりもしばしば良い選択です。台詞が何度も聞かれるとき、情報が正確でなければならないとき、人物が保証された状態を持つ依頼の連鎖の一部であるとき、遅延が場面を壊すときには固定を使います。入力が開かれており、台詞が一度しか聞かれず、少し間違った答えの代償が答えがないことより小さいときにはモデルを使います。

Mini World — 歩き回れる場面に人物を置き、台詞がどこに収まるかを見る。

その台詞が属する世界を歩く

スプライトは、立つ場所を持たない人物です。最後の一歩は他にはないもの。作ったシートを持ち、誰かが歩き回れる世界に置きます。小さな島、惑星、雨の通りの角。このサイトのどの世界も、一つの書かれた説明から作られ、遊べるページとして公開されています。

FAQ

ノンプレイヤーキャラクターの会話生成ツールとは何ですか。 +

ペルソナ、状況、目的を受け取り、ノンプレイヤーキャラクターが話す台詞の候補を返す道具、またはプロンプトの型です。草稿を作るものであり、採用するかどうか、切るか直すかは書き手が決めます。

ノンプレイヤーキャラクターの会話に大規模言語モデルは必要ですか。 +

いいえ。データ表の固定台詞一覧でほとんどのキャラクターは足ります。特に繰り返し聞く台詞や依頼の状態に結びついた台詞はそうです。入力が開かれており、台詞が一度しか聞かれない場合に、遅延と費用に見合う価値がモデルにあります。

キャラクター一人につき台詞はどれくらい書くべきですか。 +

その人物の機能が必要とする分だけ、それ以上は書きません。背景の人物なら二〜四本。依頼を与える人物なら状態ごとに一本と、受け皿が一本。台詞を数える前に状態を数えてください。

生成した台詞の間で人物を一貫させるには? +

ペルソナの部分を凍結し、そのまま再利用します。語彙、文の長さ、知識の限界、禁じる話題を書いた人物表を保ち、プロンプトを会話データと一緒に保存して、後の台詞も同じ入力から始められるようにします。

生成した会話は商用利用できますか。 +

それは生成ツールだけではなく、使うモデルや道具の規約と、あなた自身の確認工程によります。利用する提供元の許諾条件を確認し、公開前に人による確認を工程に残してください。

ゲーム内で会話をどう試しますか。 +

歩き回れる場面の立ち位置に人物を置き、トリガー半径を設定し、承認した台詞を吹き出しに結び、話す速さでプレイヤーを歩かせます。読了時間、吹き出しのめり込み、台詞に出口があるかを確認してから承認します。

3Dゲームビルダーへ戻る

完成した三十一の3D世界、ゲーム、場面が一つのページにそろっています。どれも遊べます。

プラットフォーム:Neta Studioページ:ノンプレイヤーキャラクターの会話生成:人間らしく響く台詞を書く次に読む:/explore/guide/ai-npc · /explore/guide/npc-behavior · /explore/guide/what-is-a-non-player-character
×