登場人物の一般化 A to Z
登場人物を一般化するだけにしたって、案外難しい。
登場人物の一般化にはいくつかのフェーズがある。
今回のやつは主人公固定の一人称だ。あと出てくるのは全部俺の造語だ。
- C1
主人公のみ。何の一般化もない。Cはコンスタントかなんかの略だが実際のところ主人公を表わす。
- C1P2
主人公と、あと一般化された人物一人。二人の会話になる。Pはパラレルの略で、P2とは二人目がパラレルであるということ。パラレルの場合は、各人物の主人公に対するセリフを書く。主人公のセリフもまた各人物に向けてのものを書く。
- P1P2
パラレルな人物二人の会話。一人称なので、どっちかが必ず主人公になる。
一人目、二人目共に主人公の全キャラに対するセリフと、全キャラの主人公に対するセリフを書く。
これを使うと、例えば、非難する側とされる側があるとすると、主人公が非難する側にも非難される側にも立てる。C1P2では非難する側にしか立てず非難される側に立てない、というような感じになる。
- C1D2D3
一人目は主人公に固定で、二人目三人目がデュアルなもの。デュアルとは各キャラの各キャラに対するセリフを書かなければならないもの。作業量は単純計算でパラレルの場合の二乗になる。といっても呼びかけるときの名前とか呼び方を変えたりちょっと口調を変えたりするだけで済む場合が多い。
二人目、三人目が主人公に話す場合、主人公が二人目三人目に話す場合はパラレルになり、二人目が三人目に話す場合とその逆はデュアルになる。
- D1D2D3
一人目、二人目、三人目共にデュアル。正直大変なのでやりたくないが今回のシステムをまともに組めばどうしてもこれが出てくる。
非難するもの、されるもの、非難されるものを擁護するもの、とかそんな感じだ。全人物が全役割をこなせるようにするとこうなる。
- D1D2D3D4
正直言いたかないがこれも出てくる。本当に実装可能なのか不安だ。しかし実際問題作業量としてはD1D2D3と別に変わらない。単に四人もいるからややこしいというだけだ。
で、PとかDとかの人物は各登場人物の中の一人だ。割り当て可能な人物は各エピソードで具体的に制限される。このエピソードで2人目に入りうるのはAさんとBさん、といった感じだ。
エピソードの種別が、C1P2ならC1P2同士の間で、ジャンプ可能かどうかは、ジャンプ先のキャラにジャンプ元のキャラが全て含まれているかどうかで決まる。各人物にIDを振り、人物が代入可能であることを表わすのにはIDに対応するビットを立てる。こうすると、ジャンプ可能かどうかは簡単なビット演算で求めることが出来る。32ビットもあれば十分というか32人も作ったら間違いなく実装不可能になる。
人物が代入可能であるということを表わすのに、「そのエピソードでその人物が定義されている」という表現をする。
種別が異なる場合のジャンプはその都度個別にジャンプ可能かを調べることになる。C1からC1P2に飛ぶならば、P2に入る人物を一人指定し、その人物がジャンプ先で定義されているかを見る。P1P2に飛ぶならば、主人公がどっちに入るかを指定し、もう一人の人物を入れる。その人物が主人公じゃない側の人物で定義されているかを調べる。
そんな感じで一個一個やっていく。ここまでだって案外大変だ。