NPCキャラクターの6つの種類(実際の世界の生きた3D作例付き)
自分だけのNPCキャラクターの種類を作る
クエスト、商人、敵、仲間、背景、インタラクティブ — NPCキャラクターの6つの種類を、今すぐ歩いて入れる、実際の3Dの世界とともに、それぞれ紹介します。
実際の3Dの世界に登場するNPCキャラクターの種類のほとんどは、六つの区分に収まります。クエスト、商人、敵、仲間、背景、そしてインタラクティブです。どの区分を選ぶかで、組み上げる必要のあるシステム — 会話の状態、インベントリ、経路探索、アグロ、あるいは何もなし — が決まり、プレイヤーが想定外のことをしたときに最初に壊れるものも決まります。
このページでは、その六つのNPCキャラクターの種類を一つずつ取り上げます。それぞれについて、定義、エンジンで機能させる仕組み、最もよく見かける失敗の型、そしてスクリーンショットを見る代わりに歩いて回れる、Neta Studioの3Dゲームビルダーで作った生きた世界を紹介します。
早わかり:六つの種類
六つの種類とは、目標を提示して達成させるクエストNPC、アイテムを通貨と交換する商人NPC、戦い、戦いの合間も存在し続ける敵NPC、プレイヤーについてくる仲間NPC、やり取りをせずにシーンに人を与える背景NPC、そしてその場で反応する物体や動物、設備であるインタラクティブNPCです。
これが分類のすべてを一文にしたものです。このページの残りでは、それぞれを一つずつ取り上げます — 各タイプが仕組みとして何をするのか、何が最初に壊れるのか、そして開いて歩いて回れる、ビルダーで作った世界です。
なぜモデルより先にタイプを決めるのか
メッシュ、リグ、アニメーションの一式は、タイプ間でほぼ入れ替えが利きます。同じ村人のメッシュと同じ待機モーションでも、クエストの依頼人にも、商人にも、背景のキャラクターにもなれます。違うのはコンポーネントの積み重ねです。会話グラフ、インベントリのテーブル、ナビメッシュのエージェント、アグロ半径、トリガーボリューム、あるいはセーブのフラグです。
先にタイプを決めれば、本当に必要な一つのシステムの調整に時間を使えます。先にモデルを決めれば、決して使わない四つのシステムを作ることになります。六つすべてが、間にローディング画面を挟まず一つのシーンに収まるので、それらを並べて比べるのに最も手軽な場所がMini Worldです。
クエストNPC
クエストNPCは物語の状態を握ります。目標を提示し、その目標が達成されたかどうかを知り、達成されたら報酬を与えます。仕組みとしては、少なくとも三つの入口条件 — 未開始、進行中、完了 — を持つ会話グラフに加えて、世界のほかの部分から設定できる目標フラグへの参照です。
失敗の型は、そのフラグをNPC自身に保存することです。NPCが破壊されたり、ストリーミングで外に出されたり、世界が再読み込みされたりすると、プレイヤーが集めるように言われたアイテムをまだ持っている間に、クエストが未開始に戻ってしまいます。プレイヤーは、持ち主も報告先もないインベントリアイテムを抱えることになります。フラグはプレイヤーのセーブに、安定したクエストIDをキーとして置き、会話グラフはNPCがスポーンしたときではなく、パネルが開いたときにその変数を読むようにしてください。
二つ目に正しくしたいのは、報告の判定です。完了がNPCの足元の狭いボリュームの中でしか発火しないと、動いている乗り物から、あるいは柵越しに報告するプレイヤーはそれを逃します。完了判定には余裕のある半径と視線判定を与え、それをインタラクトのプロンプトとは分けておいてください。そうすれば、NPCの近くを歩いただけで、まだ読んでいないクエストが自動的に完了してしまうことはありません。
この一連の流れ全体を最短で見られるのがThe Cyclops' Islandです。依頼人は一体だけで、短い目標の連鎖があり、島の残りを開放する報酬があります。近づいて目標を受け取り、いったん離れ、戻ってきて、アイテムを持って戻ったときに会話の入口条件がどう変わるかを見てください。この三状態の遷移がクエストNPCのすべてであり、一度それを見れば、どこでも組み直せるようになります。
商人NPC
商人NPCはアイテムを通貨と交換します。それが仕組みのすべてです。仕組みとしては、商人は二つのテーブルと一つの判定です。買値を付けたアイテムIDの在庫リスト、売値のルール、そして取引が確定する前に走る通貨の比較です。
経済における役割は、取引そのものより大きいものです。商人は通貨の主な吸い込み口であり、それによって戦利品が、プレイヤーが気にしなくなる数字へと積み上がるのを防ぎます。商人はまた、進行を調整する弁でもあります。商人が何を在庫に置くかが、プレイヤーが次に何を試せるかを決めます。テスターが行き詰まったとき、最初に確認すべきは敵の難易度ではなく商人の在庫です。
これは最も作りやすいタイプです。トリガーボリューム、アイテムのリスト、そしてパネルです。ナビメッシュもアグロもなく、望まなければ会話グラフも要りません。作業のほとんどはパネルです。
また、最も退屈にしやすいタイプでもあります。固定の在庫は商人を自動販売機に変えてしまいます。プレイヤーは一度買ったら二度と戻りません。安上がりな修正が二つあります。第一に補充です — タイマーで、あるいは世界のイベントが発火したときに在庫リストを変えます。第二に制限です — プレイヤーがどこかへ行くか何かを片付けるまでアイテムを隠します。どちらも新しいシステムを必要としません。売値を買値より厳密に低く保ってください。さもなければプレイヤーに無限ループが生まれ、二つ目のエリアの前に経済が終わってしまいます。
敵NPC
敵NPCは、プレイヤーが戦っているかどうかに関わらず世界に存在する、敵対するアクターです。戦闘外の状態 — 待機、巡回、警戒 — と、戦闘への遷移を持ちます。そこが敵NPCと単なるCPUの対戦相手との境界です。
CPUの対戦相手は試合の中にしか存在しません。試合の開始時にスポーンし、終了時に取り除かれ、ラウンド間で状態を持ち越しません。その振る舞いは試合のルールに縛られ、試合が世界のすべてです。敵NPCは、CPUの対戦相手には決して問われない問いに答えなければなりません。プレイヤーが去ったらどこへ行くのか、死んだあと戻ってくるのか、プレイヤーがセーブして再読み込みしたあとも存在するのか。
この区別がデザイン上重要な理由は、敵NPCの配置が試合の調整ではなくレベルデザインだからです。世界座標の中でアグロ半径、巡回経路、リーシュ距離を選んでおり、それらの数値がレベルの読まれ方を変えます。レベルの見通しより長いアグロ半径は、プレイヤーが敵を見る前に戦闘を始めてしまいます。長すぎるリーシュは、一つの戦いをマップ横断の追跡に変え、ほかのすべての遭遇をそこへ引きずり込みます。どの敵にも調整できる三個のインスタンス単位の数値を与えてください。アグロ半径、リーシュ距離、そして戦闘離脱までの時間です。
残り半分は持続性です。敵ごとに、リスポーンするかどうか、そしてどのトリガーで — 世界の再読み込みで、タイマーで、あるいは決してしない — を決めてください。決めなければ、既定の振る舞いはほとんど常に「決してしない」で、一度プレイしただけで世界の一部を黙って削ってしまうことになります。敵の死には死体のルールも必要です。タイマーで死体が消え、その瞬間に戦利品を落とすか、死体が残り、戦利品テーブルを死体から読むかです。二つを混ぜると、二度漁れる敵ができてしまいます。
仲間NPC
仲間はプレイヤーについてきて、移動や戦闘に加わり、シーンをまたいで状態を持ち運びます — 体力、インベントリ、ときには好感度です。ほとんどの時間画面に映り、そのほとんどのフレームで何かをしている唯一のタイプです。
仲間を難しくしているのは経路の問題です。仲間は、標的が別の動くエージェントであるナビメッシュのエージェントです。最初に失敗するのは戸口です。仲間のエージェント半径が、戸口の開口部から余裕を引いた値より大きいと、通り抜ける経路を拒否し、プレイヤーは一人で先へ歩いていきます。狭い階段、はしご、動く足場も同じように失敗します。三つの設定でそのほとんどに対処できます。追従オフセット — プレイヤーの正確なトランスフォームではなく、プレイヤーの後ろの点を標的にする — 、仲間がカメラに密集しないための停止距離、そして追いつきのルールです。
追いつきのルールは任意ではありません。仲間が数秒以上視線から外れ、数体分以上遅れているなら、プレイヤーの後ろの最も近いナビメッシュの点へテレポートさせてください。どのプレイヤーも、いつかは仲間をジオメトリに引っかけたまま置き去りにし、そうしたとき必ず気づきます。テレポートがなければ、失敗は仲間が迷子になることではありません。プレイヤーが迎えに戻らなければならなくなり、それを二度繰り返し、やがて連れて行くのをやめてしまうことです。
この接点の多さも、仲間が最も出荷しにくいタイプである理由です。仲間はあらゆるところに触れます。敵のアグロを引き、プレイヤー自身の移動を妨げ、感圧板を作動させ、スポーンの予算に数えられ、一人のアクター用に組まれたスクリプト化されたシーケンスに現れ、会話の間はカメラの前に立ちはだかります。ほかのすべてのシステムが、ここで仲間が何をするかを答えなければならなくなります。商人は横を通り過ぎても何もしません。仲間はあらゆるシーンで何かをします。それが想定されていないシーンも含めてです。だからこそ仲間は、このリストの何よりも頻繁に削られるのです。
背景NPC
背景NPCは、場所を人が住んでいるように読ませるために存在します。会話も、インベントリも、やり取りもありません。通常は三つか四つの待機クリップ、歩行のループ、そしてスプラインパスか小さな巡回半径です。
必要な数は思っているより少ないものです。効いてくるのは、一度にカメラの視錐台の中に何体いるかであり、レベルに何体存在するかではありません。何人かが動いていれば、目に見える数体のキャラクターで通りは人の気配を感じさせるものとして読めます。目が読むのは動きとシルエットであり、頭数ではありません。カメラが実際に見る場所 — 主要なルート沿い、プレイヤーが使う扉の近く — にまばらなアンカーを置き、レベルの残りは空のままにしておいてください。
群衆を不自然に見せる、具体的な原因は同期です。すべての背景NPCが同じフレームで同じ待機を始めると、シーンはマネキンの列のように読めてしまいます。各インスタンスのクリップの開始を、クリップの長さのランダムな割合だけずらし、歩くキャラクターには少しずつ違う速度を与えて、長い見通しの中でばらけさせてください。群衆に必要な小さなクリップの一式 — いくつかの待機と歩行 — を、キャラクターごとの手作業のアニメーションなしで作る最速の方法がAgent Sprite Forgeです。
コスト管理はどこよりもここで重要です。背景NPCは大量に配置する唯一のタイプだからです。本当のエージェントが必要とする経路クエリを消費しないよう、ナビメッシュから外しておいてください。すべてで一つのスケルトンと一つのマテリアルアトラスを共有させます。衝突判定を与えないか、プレイヤーを妨げることのない押し出し半径を与えてください。そして、プレイヤーが話しかけるかもしれないからといって会話グラフを与えないでください。仮のセリフは世界が薄いことをプレイヤーに教えてしまい、彼らはそれを試します。
インタラクティブNPC
インタラクティブNPCはその場で反応します。ボタン、レバー、扉、看板、動物です。状態と反応を持ちます。スケジュールも、経路も、会話ツリーも持ちません。
小道具との境界は状態です。小道具はアニメーションを再生して元の静止に戻るか、やったことを覚えていないまま一つのことをします。ある物体が持続的な状態変数 — 施錠か解錠か、オンかオフか、餌を与えたか空腹か — を持ち、二度目のやり取りで違う振る舞いをするようになった瞬間、それはNPCの領域に入り、クエストフラグと同じセーブの規律が必要になります。一つの状態ビットと一つの反応なら小道具です。違う反応をする二つ以上の状態があれば、たとえそのNPCが扉であっても、それはNPCです。
動物は背景ではなくこのカテゴリーに属します。プレイヤーが半径を越えると逃げる動物は、気づきの入力と反応を持ち、それは小さなステートマシンです。実装は扉に使うものと同じです。インタラクトまたは気づきの半径、セーブに書き込まれる状態変数、そして少なくとも二つのクリップを持つアニメーションのステートマシンです。
失敗の型は、ジオメトリを貫通して発火するプロンプトです。インタラクト半径が広く、視線判定が欠けていると、プレイヤーは壁の向こう側の扉に対するインタラクトのプロンプトを得てしまいます。プロンプトはレイキャストと半径の両方で制御し、やり取りそのものを、プロンプトだけでなく同じ判定で制御してください。そうしなければ、壁のところでプロンプトは消えるのに、キューに溜まった入力が依然として扉を開けてしまいます。
どのタイプを作るべきか?
キャラクターの見た目ではなく、目標で選んでください。一列目はプレイヤーにしてほしいことです。二列目はそれを生み出すタイプです。三列目は、ほかのすべてがその上に積み上がったあとで変更すると高くつくものです。
あるキャラクターが二つの役割を担うなら、隣り合って立つ二体のキャラクターとしてではなく、二つのコンポーネント一式を持つ一体のキャラクターとして作ってください。クエストも出す商人は、二つのパネルと一つの共有されたセーブ参照を持つ一つのインタラクタブルです。その代償は、二つの流れを互いに突き合わせてテストしなければならなくなることです。店を一度も開く前にクエストを終えたプレイヤーは、あなたがケースを書いていないかもしれない状態の在庫を見つけることになります。
キャラクターがどこに属すか分からないなら、背景から始めて足していってください。トリガーボリュームと会話グラフを加えれば、メッシュに触れることなく背景NPCをクエストの依頼人に変えられます。逆は高くつきます。仲間からやり取りをはぎ取ることは、それが登場したすべてのシーンを再テストすることを意味します。
| 目標 | タイプ | 最初に正しくしたいこと |
|---|---|---|
| プレイヤーがどこかへ向かう理由を必要としている | クエストNPC | プレイヤーのセーブにある、安定したクエストIDをキーとしたクエストフラグ |
| プレイヤーが戦利品を使える装備に変換する必要がある | 商人NPC | 在庫テーブルと、取引が確定する前に走る通貨の判定 |
| プレイヤーが技能や資源の試練を必要としている | 敵NPC | アグロ半径、リーシュ距離、戦闘離脱までの時間を、インスタンスごとに調整する |
| プレイヤーが長い道のりを生き延びる必要がある | 仲間NPC | 追従オフセット、停止距離、そして追いつきのテレポートのルール |
| シーンが人の住む場所として読まれる必要がある | 背景NPC | ランダムに位相をずらした共有クリップ、そしてナビメッシュのエージェントなし |
| 世界がその場でプレイヤーに反応する必要がある | インタラクティブNPC | 一つの持続的な状態変数と、視線判定で制御する一つのトリガーボリューム |
それが属する世界に足を踏み入れる
スプライトは、立つ場所を持たないキャラクターです。最後の手順は、ほかにはないものです。作ったばかりのシートを、誰かが歩き回れる世界に置きます — 小さな島、惑星、雨の降る街角。このサイトのすべての世界は、一つの書かれた説明から作られ、遊べるページとして公開されています。
よくある質問(FAQ)
NPCキャラクターには何種類ありますか? +
私たちの分け方では六つです。クエスト、商人、敵、仲間、背景、インタラクティブです。この分け方は機能的であり、生物学的なものではありません。キャラクターがどのシステムを必要とするか — 会話の状態、インベントリ、経路探索、アグロ、あるいは一つの状態フラグ — で整理しているので、まったく違うモデルの二体が同じタイプになることもあります。
敵はNPCですか? +
はい、戦闘の外で世界に存在するならNPCです。敵NPCは待機、巡回、警戒の状態を持ち、戦いの合間も存在し続けるので、リスポーンのルールとセーブのルールが必要です。試合の中にしか存在しないCPUの対戦相手は、この意味ではNPCではありません。その試合を生き延びるものが何もないからです。
どのタイプが最も作りやすいですか? +
商人です。トリガーボリューム、価格付きのアイテムリスト、通貨の判定、そしてパネルです。ナビメッシュも会話グラフもなく、プレイヤーのインベントリと所持金以外に持続させる状態もありません。それらはすでにあります。
仲間NPCにはAIが必要ですか? +
意思決定よりも、経路と追従のルールのほうがはるかに必要です。難しいのは、戸口や階段を通りながら動く標的の隣でナビメッシュ上にとどまることであり、それに失敗したときの追いつきのテレポートです。仲間が何を攻撃するかを選ぶのは、作業の小さな部分です。
背景NPCとは何ですか? +
シーンを人が住んでいるように読ませるために配置される、やり取りのないキャラクターです。会話も、インベントリもなく、通常はナビメッシュのエージェントもなく、しばしば衝突判定もありません。カメラのために存在するので、重要なのは一度に何体見えるかと、アニメーションのループが互いにずれているかどうかです。
一体のNPCが二つのタイプになれますか? +
はい、たいていはそうすべきです — クエストも出す商人は、二つのパネルと一つの共有されたセーブ参照を持つ一つのインタラクタブルです。その代償は組み合わせのテストです。すべてのクエスト状態にすべての商店の状態を掛けたものが確認すべきケースになり、プレイヤーが最初に見つけるのは、あなたが書いていないケースです。
3Dゲームビルダーに戻る
完成した31の3Dワールド、ゲーム、シーンがすべて一つのページに — そのすべてが遊べます。