新時代のソーサリアンを提案する

30周年を越えたソーサリアンの夢と妄想を語り続ける

シナリオ開発に集中できる環境を「メイクリアン」

 以下は、ソーサリアン Next企画で提案していたコンストラクションキット「メイクリアン」の主な機能である。

ストーリー開発に集中できる「シナリオ指向開発」環境

 メイクリアンでは、シナリオの全体像を把握しながら開発を進められる「シナリオ指向開発」を提案する。シナリオ指向開発の開発フローは、以下のとおり。

http://www.web-deli.com/sorcerian/next/images2/mk0_flow.png

  1. ストーリーボードでシナリオのサマリーを作成
    • シナリオは「シーン」と「フラグ」から構成される
    • フラグとは、ある出来事の了/未了、状態(数量)などを表す変数のこと*1
    • シーンとは、シナリオの特定時点での状態を表す。フラグが特定条件を満たすことで、シーンは遷移していく。
  2. シナリオエディターで、シーン単位のオブジェクトの会話/動作スクリプトを編集
    • オブジェクトには、いわゆる人物だけでなく、扉/岩などの物体も含まれる(いわゆるプレイヤーが会話/調べる/動かすことで反応する対象はすべてオブジェクト)
    • オブジェクトは、あらかじめキャラクターエディター(人物)で登録するか、マップエディター(扉/障害物など)でマップ上に配置しておくものとする
  3. マップエディターで、マップを生成&オブジェクトを紐付け
    • 作成したマップに対して、オブジェクトを配置
    • ただし、キャラクターの位置情報はシーン単位に決まる

 以下、個別の機能について詳述する。

シーンとフラグでストーリー全体を設計する「ストーリーボード」

 シナリオ開発のメイン機能となる画面。

http://www.web-deli.com/sorcerian/next/images2/mk1_board.png

  • ストーリーボードでは、ツールボックスから「シーン」を配置し、シーン同士を「フラグ」で連結していくことで、シーンがどのように遷移していくかを組み立てる。
  • シーン/フラグの情報(シーンの名前/概要、フラグの初期値/条件など)は、プロパティシートから編集可能。
  • シーンを選択することで、画面右の[シーン情報]から、シーンに関連するオブジェクトを追加、また、追加済みのオブジェクト一覧を表示できる。
  • オブジェクト一覧から目的のオブジェクトを選択することで、シナリオエディターを起動可能

会話埋め込み型スクリプトでシナリオを見渡しやすく「シナリオエディター」

 シーン単位の、登場キャラクターの会話/動作情報を編集するためのツール。

http://www.web-deli.com/sorcerian/next/images2/mk2_scenario.png

  • 会話情報ベースに、スクリプト言語で、キャラの動作、フラグ立て、音楽変更などの動作を埋め込み可能(会話中心としたのは、話の流れを追いやすくするため)
  • ストーリーボードと異なり、基本的に文字列ベースでの編集を前提とする。
    • 視覚的なフローチャート図を編集させるよりも、文字列編集の方がシナリオ作成に集中しやすいと思われるためである。
    • 入力支援はインテリセンス機能(=利用可能な命令、登録済みのフラグや画像/音声ファイルをリスト表示)や、よく利用する機能はツールボックスから選択できるようにすることで、十分に賄えるはず。
  • 以下、シナリオスクリプトの例である(「剣と魔法の都ペンタウァ」より)。
### 「###」で始まる行はコメント

### ->>〜<<-で、そのシーンのあらすじを表す
  • >>
ソーサリアンは、古城の中で旧知の魔導士オーサーと出会う。 オーサーもまた、ヴァンパイアの出没を危惧し、その正体を探っているのだという。 <<- ### 「@sor」はソーサリアン(先頭)のキャラクター名で置換 @sor オーサー老師! ### 「@...」のないブロックはナレーション 『暗黒の魔導士』事件で、 共に魔導士ゲディスを屠った王宮魔導士だ。 以前よりも痩せさらばえ、老境の翳りも目立ってきているようだ。 @sor 老師ほどの魔導士が、なぜこのようなところに……? ### 「@chara」は現在の会話相手(ここでは「オーサー」で置換) ### 「@老人」で任意の名前を指定することも可能。 @chara ……このご時世、若い魔導士も減っていく一方でな。 老骨がこうして出張ってきているというわけじゃ。 まあ、この身でも役立つならば、それも良い。 ### speedは、台詞の表示スピード(-1で標準よりもやや遅いことを意味) @sor:speed=-1 ……… @chara それにしてもこの一件、どうにも妙だとは思わんか。 ### 「@sor」の後方には「~性格」「~性別」「~年齢帯」でキャラの状態 ### によって、セリフを区分け可能。「~xxxx~xxxx」で複数属性の指定も可 ### 複数条件に合致する場合には、記述順に優先。 ### 「~」はすべての条件に合致しなかった場合のデフォルトの台詞。 @sor ~乱暴者 妙、だって!? ~老人 妙、じゃと? ~女 妙、ですって? ~堅苦しい~男 妙、とは如何に? ~ 妙、とは? ### 「%R%〜%R%」で該当箇所を赤文字(その他、%B%:大きい、%S%:小さいなど) @chara ヴァンパイアは、 その生態からすれば、%R%人里近くに拠点を構えるはず%R%。 さもなくば<食料>を調達できぬからな。 にも拘らず、このような辺境でわざわざ騒ぎを起こしておる。 わざわざ冒険者を誘い出そうとでも言うかのようにな。 @sor ペンタウァも妖が入り込む余地が少なくなっていますし、 王都の力が及ぶ範囲には立地しにくかったのでは? @chara かもしれぬし、そうでないかもしれぬ。 ……だが、そのわりに城内に漂う瘴気が強力なのが、 気になってならん。 ### 「%%%〜%%%」は繰り返し調べた/話しかけた時に再表示される台詞 ### 「%%%〜%%%」がない場合には、再度話しかけても反応しない %%% いずれにせよ、儂ももう少し城内を調べてみるつもりじゃ。 主らも気を付けてゆくのだぞ。 %%% ### #〜で動作コードを埋め込み可能。 ### フラグを設定(オーサーとの出会い) #set_frag(1) ### 画面の切り替えでいなくなる。thisは現在の対象(ここではオーサー) #this->delay_hide

オブジェクト指向開発対応の「マップエディター」

 マップを編集し、登場キャラクターと紐づけるためのウィンドウ。

http://www.web-deli.com/sorcerian/next/images2/mk3_map.png

  • オブジェクトレベルでマップを設計可能
    • 単なるタイルセット(=グラフィック素材)ではなく、機能を持ったモノ
    • 宝箱を空ける、アイテム使用で扉が開くなどのレベルは、最大限、スクリプトレス――プロパティ(パラメーター)だけで設定できるべき。
    • 具体的なオブジェクトの例は以下
オブジェクト 概要(設定可能なパラメーターなど)
移動先/開閉条件(前提となるフラグ・アイテム)/画像セット
障害物 通過可能条件(前提となるフラグ・アイテム)/画像セット
宝箱 開く条件(前提となるフラグ・アイテム)/内容物(複数指定で調べるたびに複数のアイテムをGetできる宝箱も表現)
ジャンプ台 反発率/画像セット
壊れる床 壊れるまでの時間/画像セット
ダメージ地帯 ダメージ量/画像セット
抵抗値/透明度で、澄んだ水中、動きが鈍くなる沼なども表現可
建物 外装から部屋の中まで一通りそろった大きなオブジェクト。家具/窓/壁紙などをカスタマイズ可能に
解説 形を持たない特別なオブジェクト。メッセージが表示される地点/シーン単位のメッセージ情報などを擬似的に管理
  • 登場キャラクターは、シーン単位にマップ上で位置/範囲*2を指定可能
  • モンスターはマップ上に範囲を指定することで、その範囲内で、あらかじめ指定されたアルゴリズムに従って動作

http://www.web-deli.com/sorcerian/next/images2/mk4_monster.png

*1:おおくは真偽値であるが、数値/配列/文字列などの情報を持っても構わない

*2:範囲を指定した場合には、その範囲でランダムに移動