メインストーリーの情報を隠さずにAI NPCとのチャットを任意にする方法
任意の自由入力テキスト会話を導入するインディー・ナラティブゲームデザイナーに向けて、シンプルなルールを提案します。それは、「プレイヤーがメインルートを理解またはクリアするために必要なすべての事実は、チャット外の公式なゲームコンテンツ内で提示されていなければならない」ということです。NPCチャットはコンテキスト、個性、雰囲気を補加することはできますが、必須の手がかりやイベントが存在する唯一の場所であってはなりません。このルールは2つのプレイスルーで検証してください。1つはチャットを一切開かないプレイ、もう1つはチャットを徹底的に探索するプレイです。どちらも意図した同じメインルートの理解と結末に到達できなければなりません。
プレイヤーが知るべき情報を定義する
プレイヤーの次の必須アクションから逆算して考えます。それを選択・実行するために必要な事実(何が起きているか、目的は何か、進行に必要な条件や手がかり)をリストアップします。これらの事実は、シーン、調べられるオブジェクト、ジャーナルの記録、目に見える世界の変化、目的のリマインダーなど、メインルート上に配置してください。対話のセリフでそれらを補強することはできますが、対話だけに頼ってはいけません。
次に、他の情報をそれが何を変えるかに応じて分類します。ある事実を取り除くことでメインの目的が分かりにくくなったり、不可能になったり、AIの発言を推測することに依存してしまう場合、それは「コア情報」です。それを取り除いても目的は明確なままで、キャラクター、場所、イベントの描写の深みが薄れるだけなら、それは「任意の深掘り情報」です。主にジョーク、口調、ささやかなディテールを加えるだけなら、それは「フレーバー情報」です。
この区別はフォーマットではなく機能に関するものです。キャラクターの個人的な経歴であっても、後のメインプロットでプレイヤーがそれを知っていることが前提となるならコア情報になり得ます。逆に、専門用語めいた詳細であっても、ストーリーがそれに依存しないなら任意のままにしておけます。後のシーンで任意の会話で提示された情報に言及する場合は、必ずこの分類を見直してください。
1つのストーリービートにおけるカバレッジ表
例として、「門が閉まる前に、封印された地図を天文台に届ける」という目的を考えてみましょう。以下の表は情報のレイヤーをどのように分離するかを示したものです。このシナリオは一例であり、実際のゲーム実績の報告ではありません。
情報:天文台が目的地である — 進行に必須か?:はい — メインルートでのカバー:目的テキストで天文台の名を明記、マップマーカーや明確なルート案内で移動をサポート — 任意のAIチャットによる貢献:ガイドがその特徴的な屋根について説明できる
情報:門は夕暮れに閉まる — 進行に必須か?:時間制限が進行に影響する場合は「はい」 — メインルートでのカバー:シーンや目的で期限を提示し、関連する世界状態の変化を表示 — 任意のAIチャットによる貢献:ガイドがなぜ門が閉まるのかを説明できる
情報:封印された地図は無傷で届けなければならない — 進行に必須か?:扱い方がタスクに影響する場合は「はい」 — メインルートでのカバー:メインルートの指示で引き渡し条件を提示、ゲームプレイで制限を伝達 — 任意のAIチャットによる貢献:ガイドが誰が封印したのかについてのエピソードを語れる
情報:ガイドはかつて天文台で働いていた — 進行に必須か?:後のプロットがこれに依存しない限り「いいえ」 — メインルートでのカバー:目的達成には不要 — 任意のAIチャットによる貢献:プレイヤーの追加質問によってガイドの過去が明らかになる
情報:ガイドは時計台が嫌いである — 進行に必須か?:いいえ — メインルートでのカバー:不要 — 任意のAIチャットによる貢献:ちょっとした雑談で好みを表明できる
この表を情報契約として活用してください。左側の事実は制作側が定めた必須要件です。チャット列はそれを詳しく説明することはできますが、それらの唯一の情報源にすり替わってはなりません。後のビートがガイドの過去に依存するようになった場合は、その経歴の必要な部分をメインルートでのカバーへと格上げします。残りは任意のままにしておきます。
AI対話を正式なゲームステートに紐付けておく
モデルは許可された会話を表現するための手段として扱い、ストーリーで何が起きたかを決定する権限を持つものとして扱わないでください。モデルには、アクティブな目的、確定した事実、関連するキャラクターの知識、許可された会話トピックといった、正規ステートの限定的かつ現在のビューを提供します。イベントが発生したか、手がかりが見つかったか、目的が変更されたかを決定するのはゲームのシステムであるべきです。AIはそのステートを用いて回答を表現できますが、必須の手がかりを捏造したり、隠された事実を勝手に解放したり、ゲーム側で記録されていない正規のイベントを宣言したりしてはいけません。
例えば、プレイヤーが夕暮れ時に門が閉まることをまだ発見していない場合、NPCは質問に対してネタバレにならないようなヒントを返したり、掲示板の通知を見るよう促したりできます。締め切り自体は、目的やゲーム世界そのものが伝えなければなりません。プレイヤーが予期せぬ質問をした場合、安全な回答としては、キャラクターの知識の限界を認めるか、既知の事実へ誘導することが挙げられます。必須の手がかりが存在しないのに存在するかのように示唆したり、NPCがゲームステートにないイベントを覚えているように見せかけたりすることは避けてください。
この構造は、任意の会話がメインルートのルールを予期せず変更してしまうのを防ぐことにも役立ちます。会話によってステートを変更することを許可する場合は、ゲームが受け入れる正確なステート変更を定義し、生成されたテキストの外側でそれを検証してください。流暢な文章が生成されたからといって、ゲームプレイのフラグを変更すべき根拠にはなりません。
進行を妨げることなくチャットでシーンを深める
有益な任意の会話は、プレイヤーが自ら追求できる何かを提供します。それはキャラクターの視点、過去のシーンとの繋がり、地域の風習、あるいは場所の情緒的な質感を変化させるディテールなどです。チャットでしか説明できないかのように、何度も目的を言い直すべきではありません。また、メインルートにおいて手がかりを引き出すために特定の言い回しを推測させるようなこともあってはなりません。
分岐と同じくらい慎重に、会話からの退出経路を設計してください。プレイヤーは重要な指示を見失うことなく、いつでも質問をやめてメインのタスクを続行できなければなりません。返答によって任意の情報が提示され、それが後に任意のコンテンツにのみ関わってくる場合は、静かにエンディングや目的の前提条件にしてしまうのではなく、周囲のデザインを通じてその関係性を示したりサインを送ったりしてください。
Tea-Powered GamesのライターであるFlorencia Minuzzi氏による一人称の手記では、同スタジオのゲーム『Dialogue』におけるアクセシビリティに関する決定が語られています。この手記では、リプレイ可能なシーンやオプトイン形式の追加情報、そしてそれらの追加の詳細によって進行が妨げられないメインストーリーについて触れられています。これは、任意の内容をストーリーの進行から切り離すための有用なデザイン例です。ただし、これは自社ゲームに関する一チームの記録であり、AI対話が自動的に同じ結果をもたらす証拠ではありません。[Accessibility in Dialogue: A Writer’s Story](https://www.gamedeveloper.com/design/accessibility-in-dialogue-a-writer-s-story)。
両方のタイプのプレイヤーでテストする
同じストーリービートを、意図的に2つのやり方で実行します。1回目は、NPCチャットを一切開きません。メインルートと通常のインターフェースのみに従います。2回目は、目的に関する妥当な質問を含め、会話を深く探索します。それぞれのプレイヤーが何を知ることができ、何を実行でき、ゲームが何が起きたと示しているかを記録します。
確認項目:現在の目的と次のアクションを特定できるか? — チャットをスキップするプレイヤー:はい、メインルートの合図から特定可能 — チャットを探索するプレイヤー:はい。チャットはそれらの合図に取って代わることなくコンテキストを追加できる
確認項目:必要なすべての手がかりを見つけ、その関連性を理解できるか? — チャットをスキップするプレイヤー:はい、制作されたゲーム世界やUIコンテンツを通じて理解可能 — チャットを探索するプレイヤー:はい。チャットは既知の事実を補強することはあっても、唯一の手がかり源にはならない
確認項目:ゲームステートの一貫性は保たれているか? — チャットをスキップするプレイヤー:必要な事実はゲームの制作されたイベントによって設定される — チャットを探索するプレイヤー:生成された回答は同じ公式ステートと一致している
確認項目:会話を自由に続けたりやめたりできるか? — チャットをスキップするプレイヤー:進行にチャットは不要 — チャットを探索するプレイヤー:チャットから離れても立ち往生したりメインルートの指示を失ったりしない
確認項目:任意のディテールは任意のまま保たれているか? — チャットをスキップするプレイヤー:メインの進行はそのディテールが学習されたことを前提としない — チャットを探索するプレイヤー:後のメインシーンで、チャット限定の知識を共有済みの知識として扱わない
いずれかのパスで問題が発生した場合、具体的な修正点が明らかになります。チャットなしのプレイヤーが行動できない場合は、メインルートに必要な事実を移動させるか繰り返します。探索プレイヤーに矛盾した情報が与えられた場合は、モデルに提供するステートや、モデルが表現できるトピック・主張を厳格化します。後の対話でプレイヤーが任意の回答を聞いたことが前提になっている場合は、その事実を別の場所で確立するか、記録された会話ステートに応じて後のセリフを条件分岐させてください。
見落とした情報を補うためにリマインダーとリプレイを活用する
メインルートに配置された情報であっても、見落とされたり、忘れられたり、不都合なタイミングで遭遇したりすることがあります。[Game Accessibility Guidelines full list](https://gameaccessibilityguidelines.com/full-list/)には、物語や指示をリプレイ可能にすること、現在の目的をプレイヤーにリマインドすること、そして長期にわたる包括的な物語の場合は進行状況を要約することといった推奨事項が含まれています。これらは一般的なゲームアクセシビリティの推奨事項であり、AI対話のテストではありません。しかし、ここに適用することで、目的ログ、リプレイ可能なシーン、あるいはゲームによってすでに確立された事実を反映した簡潔な進行状況の要約など、有用なリカバリルートを示唆してくれます。
リマインダーは、プレイヤーが任意のコンテンツを選択したかのように装うことなく、タスクを復元できるものでなければなりません。例えば、「夕暮れ前に地図を天文台に届けなければならない」と伝えることができます。これは記録された目的情報だからです。プレイヤーが行っていない個人的な会話を要約したり、生成された推測に基づいてNPCの動機を決めつけたりしてはいけません。要約は、目的システムが使用しているのと同じ正規ステートに常に紐付けておいてください。
実装前の実用的なチェック
検討中のすべてのAI会話ビートについて、それが触れるメインルートの事実、必須かどうか、チャット外のどこで確立されているか、そしてそのやり取りによって追加できる任意の素材を書き出します。その上で、次の質問に答えてみてください。
チャットが無効化されているか無視された場合でも、プレイヤーはメインタスクを理解してクリアできますか?
チャットを探索した場合、すべての返答は確立された世界ステートおよびキャラクターの知識と一致していますか?
後のメインルートのシーンが、任意情報を誤って共有済みの知識として扱ってしまう可能性はありませんか?
プレイヤーは、生成された回答に頼ることなく、目的を再確認したりその説明をリプレイしたりできますか?
1番目または4番目の質問の答えが「いいえ」である場合は、必須情報のための正規のルートを追加してください。2番目または3番目が「いいえ」である場合は、対話のステート入力、返答の境界、または後のシーンの条件を見直してください。これにより、自由入力の会話によってキャラクター性や雰囲気を深めつつ、チャットを一切使わないプレイヤーにとってもメインストーリーの明瞭さを保つことができます。
