2012/4/1 1:22
NPCを上手く使ったシナリオの作り方 その4
ハンドアウトの例
「ハンドアウト」は、最近のシナリオによくに見られる仕組みで、シナリオにおけるそれぞれの PC の位置づけ・設定です。例えば、『ダブルクロス』第3版ルールブック2に載っているシナリオ1向け PC の一人には、次のようなハンドアウトが設定されています。
ロイス:”ライトニングボルト”桐生嚆矢 推奨感情 P:友情/N:不安クイックスタート:紅蓮の刃 カヴァー/ワークス:高校生/UGNチルドレン”彼”とは、チルドレン教育施設”ホーム”で出会った。ただコードネームでのみ呼ばれる日々の中、君は彼に”嚆矢”という名前を付けた。その嚆矢が2年前、N市で死亡したらしい。君はまだその死を信じていない。N市支部に派遣されてから、その足取りを追っている。
なんとなくイメージつきますか? ハンドアウトでは、キャラクタシートの項目をすべて埋めたプレロールドキャラクタとは違って、キャラクタの設定の一部のみが指定されています。今回は、このハンドアウトの役割(の一面)と作り方を研究してみたいと思います。
インタフェース
さてこのハンドアウト、オブジェクト指向プログラミング言語でいうところの「インタフェース」ととても似たところがあります……というと知っている人は「ああ」と分かるのですが、日頃たまーに目にする「インタフェース(接点・境界面) 」とはかなり違った(ようにみえる)概念なので分かりやすく説明してみます。
例えば、よく見るプラスやマイナスのドライバで留めるネジを考えてみましょう。ネジには結構種類がありますが、好きに作っていいわけではなくサイズなどが規格で決められています。よく見るタイプでは、頭の部分には + または ー の穴が空けられています。穴の長さや深さもドライバにぴったり合うように決まっています。メーカが勝手に独自の穴のサイズを決めると、それ専用のドライバでないと回せなくなってしまいとても不便です。
一方、それ以外のネジの色や材質、軸の先端の形状や頭の形状などは、「ドライバで回して止めたり抜いたりできる」ことには影響しません。なので、色々な種類のものが作られます。使う側も、用途に応じて安いのを選んだり丈夫なのを選んだり出来て、どれを選んでも手持ちのドライバで使うことができます。安心ですね。
プログラミング言語の「インタフェース」もこれに似た役割を持っていて、使う側が安心して好きなのを選べるように「守るべきところを決めた規格」のようなものです。「インタフェース」が共通のプログラム部品は、交換して使うことができるのです(概念をつかみやすいようにかなり大雑把な説明なので、興味の有る方はオブジェクト指向の本をご覧下さい)。
ハンドアウトとインタフェース
さて、説明が長くなりましたがハンドアウトに戻りましょう。
こうしてみると、ハンドアウトも「インタフェース」と似ているといったことがお分かりいただけるでしょうか? 例に挙げたハンドアウトの PC は「桐生嚆矢を追っている」ことが決められています。この決まり(ハンドアウト≒インタフェース)さえ守っていれば、PC が男だろうが女だろうが、どんな能力値だろうが技能をとっていようが、シナリオに自然に混ざっていけるのです。数え挙げられないほどのバリエーションのキャラクタを作ることができますが、ハンドアウトが守られていればキャラクタを交換してもシナリオは成立します。独自のキャラクタを作る自由を残しつつ、シナリオを成立させるための仕組みがハンドアウトなのです。
デザインパタン
そうなると、シナリオ作者としては「どんなハンドアウトを設定すればシナリオが上手くいくか」が気になるところですね。プログラミング言語のインタフェースも、単に作るだけならとても簡単ですが、有益なインタフェースを定めるのは必ずしも簡単ではありません。
そこでプログラムの世界では、頻繁にプログラムの中で使われていて上手く機能するベストプラクティスを経験豊富で頭のいい人達が集めて数十種類の「デザインパタン」としてまとめています。デザインパタンを学べば、経験の浅いプログラマでも適切にインタフェースを使いこなせるようになっています。
同じようにハンドアウトにも「デザインパタン」があると便利ですね。PCとNPCの間にどのような関係が設定されているか、NPC 間ではどんな関係が設定されているか、それぞれの目的や行動原理な何か、などを抽象化・モデル化して並んでいると使いやすいでしょうか。
そのためには既存のシナリオのハンドアウトをたくさん分析して見るのが早いと思うのですが、誰かやってみませんか? でもって『シナリオ作成大全(仮)』にご寄稿ください(笑) お待ちしております。