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

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

ソーサリアンText開発者向けマニュアル(メイクリアン Text編)

本ドキュメントは、ソーサリアンTextのシナリオ開発ツール「メイクリアン Text」を利用するための簡易マニュアルです。ソーサリアン Textの基本的な仕様についてはここでは触れないので、合わせて以下を参照してください。

■Note■
本ドキュメントは、現在書きかけですが、皆さんの質問を受けながら、説明不足なものを補っていきたいと思います。よって、ご質問、ご要望は大歓迎です!

メイクリアン Textとは?

XML Notepad」(https://www.microsoft.com/en-us/download/details.aspx?id=7973)をベースとした、ソーサリアン Textシナリオ執筆のための軽量プラグインです。

ソーサリアン Textのシナリオデータは、.xml形式ですが、専用のエディターを利用することで、XMLを知らない人でも編集が簡単にできます(もちろん、使い慣れている人は一般的なテキストエディターを使っても構いません)。

また、ソーサリアン Text独自に検証機能を拡張し、利用できる要素/属性、設定値のチェック、設定値の補完などもサポートするので、入力の手間が省けます。

メイクリアン Textによる開発

メイクリアン Textは、内部的にはシナリオデータの検証定義ファイルです。XML Notepadをインストールし、シナリオテンプレート(以下)を読み込むことで、自動的に有効になります。メイクリアン Textそれ自体としてのインストール/設定は、一切必要ありません。

[1]シナリオテンプレートをダウンロードする

シナリオテンプレートは、以下のアドレスからダウンロードできます。

http://www.web-deli.com/sorcerian/template.zip

ダウンロードしたtemplate.zipを解凍すると、以下のようなフォルダー/ファイルが展開されます。

  • /template シナリオルート
    • /capture 挿絵フォルダー
    • scenario.xml シナリオデータ
    • *.mp3 楽曲ファイル

.mp3ファイルはサンプルなので、適宜差し換えてください。

[2]シナリオデータをエディターで開く

XML Notepadのメニューバーから[File]−[Open]で、scenario.xmlを開いてください。以下は、scenario.xmlを開いた直後の状態です。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit1.png

左ペインにscenario.xmlの中身がツリー状に表示されているので、編集したい場所を選択し、右のペインから値を編集します。たとえば以下は、scenario−items−item要素のname属性を編集しているところです*1

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit2.png

まずは、これが基本操作です。
では、シナリオデータを編集していきましょう!

■Note■
要素/属性はいずれもXMLの用語です。メイクリアン Textを利用する上ではあまり気にしなくて構いませんが、要素はフォルダーのようなアイコンで、属性は赤丸アイコンで、それぞれ表されることを覚えておきましょう。

■Note■
以下の[3]以降の手順は、あくまでマニュアル上の便宜的な順番です。
どこから設定しても問題ありませんし、実際の開発では、それぞれの設定を行き来しながら作業を進めることになるでしょう。シナリオを執筆していく中で、やりやすいように作業してみてください。

[3]シナリオの基本データを編集する

まずは、シナリオの基本情報を編集します。シナリオのタイトル(scenario−title)、作者の名前(scenario−author)をそれぞれ選択します。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_basic.png

authorの下には、xmlns:xsi/xsi:noNamespaceSchemaLocationという属性がありますが、これらはメイクリアン Textで利用するものなので、編集してはいけません!

[4]アイテム情報を編集する

シナリオで登場するアイテムを登録しておきます。これには、scenario−items要素の配下を編集します。

シナリオテンプレートには、あらかじめダミーのアイテム情報(scenario−items−item)が用意されているので、これをコピー&ペーストして使うのがカンタンです。

これには、scenario−items−itemを右クリックし、表示されたコンテキストメニューから[Copy]してください。続いて、選択はそのままに右クリックし、表示されたコンテキストメニューから[Paste]してください。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_item1.png

ただし、このままでは既存のitemの下にitemができてしまいます。そこで新しくできたitemを選択した状態で、メニューバーから[Nudge Left](左矢印のアイコン)をクリックし、階層をひとつ格上げします。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_item2.png

これで新たなアイテム情報(item要素)ができたので、その配下の

  • id:アイテムコード
  • name:アイテム名
  • #text:アイテムの説明(15文字程度)

を、それぞれ編集します。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_item3.png

アイテムコードは「i99」の形式で、重複のないように設定してください。

■Note■
それぞれの要素/属性で設定できる内容は、ダイナミックヘルプからも確認できます。

任意の要素/属性を選択した状態で、XML Notepad下部の[Dynamic Help]を開いてください。要素/属性の役割(意味)を確認できます。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_help.png

[5]フラグ情報を編集する

シナリオ進行を管理するフラグ情報を登録しておきます。これには、scenario−flags要素の配下を編集します。

先ほどと同じく、シナリオテンプレートには、あらかじめダミーのフラグ情報(scenario−flags−flag)が用意されているので、これを[4]と同じ手順でコピー&ペーストします。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_flag.png

新しいフラグ情報ができたら、その配下の

  • id:フラグコード(「f99」の形式で重複がないこと)
  • #text:フラグの説明(15文字程度)

を、それぞれ編集します。

■Note■
フラグは、本来、物語の分岐を制御するための情報ですが、ソーサリアン Textではステータス画面から確認することもできます。物語の簡易なあらすじを、プレイヤーに示すために、細かく設定しておくことをお勧めします。

[6]モンスター/罠情報を編集する

シナリオで登場するモンスター/罠などの情報を登録しておきます。これには、scenario−enemies要素の配下を編集します。

先ほどと同じく、シナリオテンプレートには、あらかじめダミーのモンスター情報(scenario−enemies−enemy)が用意されているので、これを[4]と同じ手順でコピー&ペーストします。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_enemy.png

新しいモンスター/罠情報ができたら、その配下の

  • id:モンスター/罠コード(「m99」の形式で重複がないこと)
  • name:敵/罠の名前(10文字程度)
  • element:属性(地、火、水、風、霊のいずれか)
  • attack:攻撃の種類(物理/魔法/毒/石化/凍結/呪い/忘却のいずれか)
  • func:ダメージ式(例:2L+R-STR。Lは左のサイコロ、Rは右のサイコロ)
  • #text:モンスターの説明(15文字程度)

を、それぞれ編集します。

■Note■
あらかじめ候補値のある属性(element、attackなど)については、入力可能な候補値のリストも表示されます。積極的に利用していけば、タイプ量も減らせるでしょう。

[7]シーン情報を編集する(プロローグ)

いよいよシナリオ本体の執筆です。シーンとは、ゲームブックのパラグラフに相当する概念。ソーサリアン Textでは、シーン単位で物語を遷移していきます。

ひとつのシーンは、scenario−scene要素で表します。シナリオテンプレートには、あらかじめスタート地点を表すシーン(id属性が0のもの)が用意されているので、これを編集してください(「0」はスタートを表す数値なので、変えてはいけません!)。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_scene.png

本文は、Markdownという形式で表します。ソーサリアン Text独自のルールもあるので、詳しくは、開発者ドキュメント(http://d.hatena.ne.jp/sorcerian/20180128)を参照してください。

■Note■
シナリオ(=改行付きのテキスト)を入力する際に、改行は[Enter]ではなく[Ctrl]+[Enter]なので注意してください([Enter]は確定となります)。

XML Notepadは長いテキストの入力には、どうしても不向きなので、その辺をネックに感じる場合には、XML Notepadである程度骨組みを作ってしまったら、あとは慣れたテキストエディターで編集した方が効率的かもしれません。

[8]シーン情報を編集する(本文)

あとは、ひたすらにシーンを増築していくだけです!

シナリオテンプレートには、ダミーのシーン情報(scenario−scene)が用意されているので、これを[4]と同じ手順でコピー&ペーストします(ただし、「idの値が0でない」シーンはもう編集済みのはずなので、それ以外のシーンをコピーしてください!)。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_scene2.png

新しいシーン情報ができたら、その配下の

  • id:シーンコード(基本は数値。シナリオ内部で一意であること)
  • items:そのシーン移動時に入手できるアイテム(複数はカンマ区切り。「-i〜」でアイテム喪失)
  • flags:そのシーン移動時に立つフラグ(複数はカンマ区切り)
  • enemies:敵情報(複数はカンマ区切り)
  • bgm:シーン移動時にBGMを切替(bgm_boss.mp3であれば、「boss」と指定。メインテーマbgm.mp3に戻す場合は、「main」と指定)
  • se:シーン移動時に再生する効果音(se.mp3であれば、「se」と指定)
  • allowMove:番号指定による移動を許可するか(値はtrue固定)
  • end:エンディングシーンか(happy:ハッピーエンド、bad:バッドエンド)
  • #text:シナリオ本文(Markdown形式)

を、それぞれ編集します。

シーンコードは、あとからシーンを挿入しやすいように、10、100おきに連番としていくのがお勧めです。

■Note■
使わない属性は削除してください(シーン情報であればid以外はすべて省略可能です)。これには、該当の属性を選択した上で右クリックし、表示されたコンテキストメニューから[Delete]を選択します。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_scene3.png

[9]ライセンス情報を編集する

最後に、シナリオで作成した画像/楽曲のライセンス(作品)情報をまとめておきましょう。これには、scenario−license要素の配下を編集します。

先ほどと同じく、シナリオテンプレートには、あらかじめダミーの作品情報(scenario−license−work)が用意されているので、これを[4]と同じ手順でコピー&ペーストします。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_work.png

新しい作品情報ができたら、その配下の

  • name:曲名(bgmの場合)、利用場所(pictureの場合。街、酒場など)
  • category:分類(bgm:音楽、picture:画像)
  • creator:作者 or サイト名
  • url:作品の参照先

を、それぞれ編集します。urlは任意なので、不要であれば削除しても構いません。

[10]シナリオを保存する

編集したシナリオデータは、メニューバーの[Save current file](フロッピーディスクのアイコン)から保存できます。

なお、不正なデータについては、あらかじめ用意された検証ファイルによって、リアルタイムにエラーを表示してくれます。

エラーはXML Notepad下部の[Error List]に表示されるので、該当箇所をダブルクリックしてください。該当する要素/属性に移動できます。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_error.png

主な検証内容は、以下の通りです(将来拡張するかも)。

  • id値が重複していないか(Identity制約)
  • 必須の要素/属性が抜けていないか
  • 利用できない要素/属性を使っていないか(スペリングミスを含む)
  • (設定値が選択式のものは)設定値が候補値のいずれかであるか
  • (設定値の形式が決まっているものは)設定値が正しい形式であるか

すべての問題を吸収できるわけではありませんが、まずは最低限の入力ミスを防ぐことができると思います。

[11]Playgroundで実行する

できあがったシナリオデータ(ソース)は、メニューから[View]−[Source]で表示できます。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_src.png

ソースコードをすべて選択し、PlayGround(http://www.web-deli.com/sorcerian/next/playground.aspx)に貼り付ければ、シナリオの動作を確認できます。

http://www.web-deli.com/sorcerian/next/images_blog/stext_edit_play.png

動作を確認しながら、是非、皆さんの物語を完成させてくださいね♪

今後の予定

PlayGround(http://www.web-deli.com/sorcerian/next/playground.aspx)とメイクリアンText(本稿)の組み合わせで、シナリオ開発がそれなりに効率化できると思います。

今後は、フローチャートテキスト?からscenario.xmlを自動生成するツールを作成できればと思っていますが…なんにせよ要望があれば、の世界。「いいね!」とか、「こんなの欲しい!」とか声をかけてくださると、実現が早まったりするかもしれません^^;

是非、今後ともソーサリアン Textをよろしくお願いします!

*1:scenario−items−itemとは、scenario配下のitems配下のitemを表します