テキストアドベンチャーの入力に引用符があるとき、行動の指示と引用をどう見分けるか
まず入力全体が何をしているのかを捉え、そのうえで引用内の動作が実行を求められているかを判断します。同じ「窓を閉める」を使って引用入力の判別カードを埋め、直接の行動、キャラクターの発言、資料の内容の報告、操作に関する質問を区別します。引用符がなくても、引用の範囲は保ちます。

はじめに
引用符を含む入力は、引用の中身より先に、引用の外側で示されている意図を確認します。プレイヤーは行動を求めているのか、キャラクターに発言させたいのか、資料の内容を伝えているのか、それともコマンドについて質問しているのか。行動の要求だと確認できて初めて、実行条件の判定に進みます。文中に「窓を閉める」という動作が登場しただけでは、物語の中で窓の状態を変える根拠にはなりません。
作者はこの原則を、引用入力の判別カードにまとめられます。記録するのは、外側の意図、引用された内容、何を実行するか、何について応答するか、必要な確認です。大切なのは「言葉を口にすること」と「その言葉の中にある動作を行うこと」を分け、コマンドの説明を求められたときは説明だけを返すことです。
1. まず場面と入力の取り決めを固定する
以下は独自に作成した架空の教材例です。実際のユーザー事例や検証結果ではなく、DramaForkの製品機能を示すものでもありません。プレイヤーのキャラクターが、開いた窓のそばに立っているとします。仲間のアーホーがその場におり、机には「窓を閉める」と書かれたメモがすでにあります。窓には手が届き、障害物もありません。
この例では、単独の動作表現はプレイヤーのキャラクターがその行動を試みることを、「私は……と言う」はキャラクターの発言を、「メモには……と書いてある」は資料の内容の報告を表します。コマンドの意味を尋ねられた場合は、操作方法を説明します。時間が進むかどうかは作者が別途定めるルールに従います。この例では、説明や意図の確認によって物語の時間は進みません。
以下では、実際の入力をコード形式で示します。したがって、窓を閉めるには引用符がなく、「窓を閉める」には実際に一組の引用符が含まれます。記事が例文を紹介するために付けた引用符と、プレイヤーが入力した文字を混同してはいけません。
もう一つの前提は、メモの内容が場面の事実としてすでに確定していることです。それまでに登場したのが未読の紙だけなら、プレイヤーが「メモには『窓を閉める』と書いてある」と入力しても、その文言が紙に書かれている証拠にはなりません。まず、メモを調べようとしているのか、推測を述べているのかを判断する必要があります。引用の範囲を示したからといって、プレイヤーが世界の事実を書き足せるわけではありません。
2. 同じコマンドで判別カードを埋める
「実行内容」の欄には、何を実行するのかを明記します。単に「する」「しない」とだけ書いてはいけません。言葉を発することも行動ですが、窓を閉める場合とは変化する事実が異なります。
| 実際の入力 | 外側の意図 | 引用された内容 | 実行内容 | 応答の対象 | 必要な確認 |
|---|---|---|---|---|---|
窓を閉める |
自分で行動する要求 | なし | 条件を確認して窓を閉める | プレイヤーのキャラクターと窓 | この場面では不要 |
私は「窓を閉める」と言う |
キャラクターの発言 | 口にする台詞 | 発言する。窓は直接閉めない | 発言行為と聞き手 | 聞き手が不明で、誰が聞くかによって結果が変わる場合に確認 |
メモには「窓を閉める」と書いてある |
資料の内容の報告 | 既知のメモの文面 | 窓を閉めない | メモの内容 | この場面では不要 |
「窓を閉める」はどういう意味? |
コマンドの意味を尋ねる | 話題にしているコマンド | 説明のみ。実行しない | 入力ルール | この場面では不要 |
各入力への応答まで書き出すと、分類が物語の描写に反映されているかを確認できます。
入力が窓を閉めるなら、「あなたは窓の前まで歩き、窓を閉めた」と返します。要求が明確で、この例では実行条件も満たされているため、窓は開いた状態から閉じた状態へ変わります。
入力が私は「窓を閉める」と言うなら、「あなたは『窓を閉める』と口にした。アーホーはそれを聞いた。窓は開いたままだ」と返します。ここで確認するのは発言だけです。このあとアーホーが従うかどうかを扱うなら、その言葉が彼に向けられたのか、彼に行動する意思があるのかなど、既定の条件に基づく判定が必要です。
入力がメモには「窓を閉める」と書いてあるなら、「メモには『窓を閉める』と書かれている」と返します。これは既知の資料を確認しているだけです。プレイヤーがその指示に従ったことも、メモにキャラクターへの命令権があることも意味しません。
入力が「窓を閉める」はどういう意味?なら、「この例の取り決めでは、窓を閉めるという表現を単独で入力すると、あなたのキャラクターに窓を閉めることを試みさせます。今は意味を尋ねているので、まだ行動していません」と返します。説明しているのは入力の構文上の意味であり、窓を閉めたという結果まで付け加えてはいけません。
この4行は、それぞれ同じ初期場面から個別に検討します。1行目で閉めた窓を2行目に引き継ぐと、比較に前の試行の影響が混ざってしまいます。
3. 外側の表現から、誰が何をするのかを決める
処理の順番は固定できます。まず外側の述語を見つけ、それに従属する内容を囲み、話し手、行動する人物、応答の対象を特定し、最後にどの変化に根拠があるかを判断します。入力全体から先に「窓を閉める」を探し、誤って実行してから引用符を使って取り消そうとしてはいけません。
私はアーホーに「窓を閉める」と言うの外側の動作は「言う」です。台詞の中の窓を閉める指示は、アーホーが受け取って解釈します。これはプレイヤーのキャラクターが他者に要求を伝える表現であり、自ら手を伸ばして窓を閉める表現ではありません。アーホーが従うか、断るか、理由を尋ねるかは、作者が定めた人物と場面のルールによります。
仲間がすぐに反応できるルールなら、一度の応答で二つの出来事を描いてもかまいません。「あなたはアーホーに窓を閉めてほしいと頼んだ。彼はうなずくと、窓まで歩いて閉めた」。ただし、後半は仲間の行動を判定した結果でなければなりません。引用内に動詞があるというだけでは成立しません。
次に、私はメモの「窓を閉める」という指示に従って行動するを考えます。今度は外側の「指示に従って行動する」が、引用内の動作を明示的に採用しているため、引用が行動の内容になります。つまり、引用符は常に実行を禁止するスイッチではありません。実行の根拠は、外側の要求にあります。実行を求められた動作だと認められても、窓に手が届くか、すでに閉まっていないかは引き続き確認する必要があります。
4. 引用符がなくても、伝えられた発言の範囲を保つ
プレイヤーは彼が言った 窓を閉めると入力するかもしれません。句読点がなくても、「彼が言った」は後に続く内容が伝えられた発言であることを示しています。少なくとも、プレイヤー自身が窓を閉める入力だと直接解釈してはいけません。「彼」が誰かによって展開が変わるなら、「ここでいう『彼』は誰ですか?」と確認できます。既知の会話を振り返っているだけなら、書式を整えるためにプレイヤーを遮る必要はありません。
彼が言った 窓を閉める それから出ていくは、さらに判断が難しい入力です。出ていくのは話し手なのか、それとも彼が出ていくよう求めた相手なのか。明確になっている発言の報告部分は保ち、「『それから出ていく』も彼が言った内容ですか。それとも、彼がそのあと出ていくという説明ですか?」と確認します。先に誰かを部屋から退出させてはいけません。
実際の入力が「窓を閉める」だけの場合も、外側の表現が足りません。作者は、単独の引用を台詞として扱うとあらかじめ決めても、プレイヤーに意図の補足を求めてもかまいません。この例では、「自分で窓を閉めたいのですか、この言葉を口にしたいのですか、それとも意味を知りたいのですか?」と尋ねます。確認できるまで窓の状態は変えません。
やり取りは一度増えますが、誰の行動なのかが明確になります。すでに「どんな言葉を口にしますか?」と尋ねている文脈なら、単独の引用を台詞として扱えるため、聞き直しは不要です。ただし、文脈は曖昧さを解消できるほど具体的でなければなりません。現在の課題が窓を閉めることだからといって、プレイヤーの意図を代わりに決めてはいけません。
5. 判別カードを見直し可能な入力ルールにする
カードを再利用するときは、まず「窓を閉める」を対象の動作に置き換え、各行に「追加すべき事実」と「維持すべき事実」の二つを記録します。たとえば発言の行では、「キャラクターがこの言葉を口にした」を追加し、「プレイヤー自身は窓を閉めていない」を維持します。質問の行では説明だけを返し、行動完了を記録しません。
特に見落としやすい誤りは三つあります。引用符を除いてそのまま実行し、引用の範囲を失うこと。すべての引用を無効な入力とみなし、通常の会話まで拒否すること。そして応答では「説明しただけ」としながら、状態の記録では窓を閉じてしまうことです。確認するときは、文章の慎重さだけでなく、応答文と状態変化の両方を照合してください。
このカードは、テキストコマンドの入力処理に制約を設けるのに向いています。ただし、皮肉、複雑に入れ子になった引用、複数人の会話で省略された表現まで網羅できるとは限りません。そうした場合は、誰の行動かという判断を変える部分だけを確認します。また、連続した動作がどこまで実行されるかを判定したり、キャラクターの権限をめぐる問題を解決したりするものでもありません。扱うのはそれ以前の段階、つまり「この文章は、その動作の実行をそもそも求めているのか」という問いです。






