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

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

ソーサリアンText開発者向けマニュアル(チュートリアル)

本ドキュメントは、ソーサリアンTextのシナリオ開発をテキストエディターで進めるチュートリアルです。まずは、シナリオデータの概要を掴んで戴くことを目的としていますので、設定値の意味などについては、SGMLリファレンス(http://d.hatena.ne.jp/sorcerian/20180128)も合わせて参照してください。

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

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

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

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

/stext … シナリオルート
├──scenario.xml ……………… シナリオ本体
├──/bgm  ……… BGM(.mp)の保存先
│  └──/se … 効果音(.mp)の保存先
└──/capture  … 挿絵(.png)の保存先
   └──intro.png  ………… サイト紹介用の画像(120x180px)

シナリオデータとして直接編集するのは、scenario.xmlです。intro.pngはサンプルなので、適宜差し換えてください。

[2]基本情報を入力する

シナリオのタイトル、作者の名前などを入力します。編集するのは★~★の部分です(★そのものは強調の意味なので、入力してはいけません)。

<scenario ★title="サンプルシナリオ" author="Rio"★
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...>

■Note■
scenario.xmlを編集する際は、以下の点に気を付けてください(SGMLというよりもXMLとしてのルールです)。

  • <...>で括られた部分は要素、「名前="..."」の部分は属性と言います。これらの部分は、(タイトルの日本語などを除いては)すべて半角で表します。
  • 要素は<***>で始まり、</***>で終わります。うまく動作しない場合、特に</***>を忘れていないかを確認してください。
  • ファイルはUTF-8という文字コードで保存します(他の文字コードでは文字化けします)。

これらの基本的な誤りを防ぐには、scenario.xmlChromeで開いてみると良いでしょう。誤りがなければ、以下のようにファイルを閲覧できます。

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

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

シナリオで登場するアイテムを登録しておきます。これには、scenario-items要素の配下にitem要素を追加します。複数ある場合は、item要素を列挙します。

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

<items>
  ★<item id="i01" name="王さまの杖">よく盗まれる杖</item>
  <item id="i02" name="きのぼう">王さまの杖によく似た棒</item>★
</items>

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

シナリオ進行を管理するフラグ情報を登録しておきます。これには、scenario-flags要素の配下にflag要素を追加します。複数ある場合は、flag要素を列挙します。

<flags>
  ★<flag id="f01">グーランと出会った。</flag>
  <flag id="f02">「#」の道を探索した。</flag>★
</flags>

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

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

シナリオで登場するモンスター/罠などの情報を登録しておきます。これには、scenario-enemies要素の配下にenemy要素を追加します。複数ある場合は、enemy要素を列挙します。

<enemies>
  ★<enemy id="m99" name="キングドラゴン" element="霊"
    attack="物理" func="4L-STR">ドラゴン・オヴ・ドラゴン</enemy>
  <enemy id="m98" name="毒矢" element="地"
    attack="毒" func="DEX>2L">毒がたっぷりと塗られた矢</enemy>★
</enemies>

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

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

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

<scene id="0">
★ここにプロローグを書きます。

[次へ](100)★
</scene>

本文は、Markdownという形式で表します。ソーサリアン Text独自のルールもあるので、詳しくは、Playground Editor(https://www.web-deli.com/sorcerian/text/playground/editor.html)のヘルプも参照してください。
たとえば、「[次へ](100)」は100番のシーンに移動する[次へ]ボタンを作成します。

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

あとは、ひたすらにシーンを増築していくだけです!100番のシーンを追加してみましょう。

<scene id="0">
ここにプロローグを書きます。

[次へ](100)
</scene>
★<scene id="100" items="i99" flags="f99" enemies="m99,m98">
 - フラグf99が立ちます(=> ステータスから確認しましょう)
 - アイテムi99を入手します(=> ステータスから確認しましょう)
 - 敵としてm98、99が登場します(=> 下に情報が表示されます)

[敵に勝った](300)
[敵に負けた(バッドエンド)](200)
</scene>★

詳しくはリファレンスに譲りますが、items/flags/enemies属性でシーンで入手(登場)するアイテムやフラグ、敵を定義できます。

このように、STextでは本文とリンクでもってシーンを連ねていくわけです。簡単ですね!

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

最後に、シナリオで作成した画像/楽曲のライセンス(作品)情報をまとめておきましょう。これには、scenario-license要素の配下にwork要素を追加します。複数ある場合は、work要素を列挙します。

<licence>
  ★<work name="メインテーマ" category="bgm" creator="Az"
    url="http://www.web-deli.com/sorcerian/next/stext.aspx"></work>
  <work name="挿絵A" category="picture" creator="Tokinoji"
    url="http://www.web-deli.com/sorcerian/next/gallery.aspx"></work>★
</licence>

ライセンス情報はシナリオの動作には影響しませんが、出典を明確にするためにも入力しておくことを強くお勧めします。

[9-1]シナリオを実行する(Playgroundの場合)

できあがったシナリオデータ(ソース)は、Playground Editor(https://www.web-deli.com/sorcerian/text/playground/editor.html)に貼り付ければ、シナリオの動作を確認できます。

https://www.web-deli.com/sorcerian/text/image/blog/pge.png

[9-2]シナリオを実行する(ローカル(Apache)環境)

(Playgroundではなく)ローカル環境で動作する場合には、[1]で準備したシナリオフォルダーをApacheに配置します。シナリオフォルダーを/templateから/testにリネームした上で、/stext-master/stextフォルダーの配下に移動してください。

あとは、「http://localhost/stext-master/」にアクセスし、上部の選択ボックスから「テストシナリオ」を選択することで作成したシナリオにアクセスできるようになります。

   ★   ★   ★

以上でチュートリアルは終わりです。
動作を確認しながら、是非、皆さんの物語を完成させてくださいね。

本稿ではテキストエディター中心に解説しましたが、STextでは専用ツールとして「Playground Flow」「GBAT to SText」なども提供しています。併用することで、シナリオ執筆が効率化されますので、是非ご活用ください!