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

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

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

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

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

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

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

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

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

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

[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独自のルールもあるので、詳しくは、「SGMLリファレンス」を参照してください。
たとえば、「[次へ](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(http://www.web-deli.com/sorcerian/next/playground.aspx)に貼り付ければ、シナリオの動作を確認できます。

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

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

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

■Note■
シナリオフォルダーの名前(/mystory)はなんでも構いません。たとえば「新・消えた王さまの杖」であれば/scepterとしています。
ただし、配置先の/stextフォルダーには、サンプルとして/scepterフォルダーをはじめ、いくつかのシナリオフォルダーが置いてありますので、重複しない名前を付けてください。

あとは、/stext-master/index.htmlの★~★の部分を自分のシナリオフォルダー名で変更します。

$('#main').startGame('★mystory★');

以上で、「http://localhost/stext-master/」から作成したシナリオにアクセスできるようになります。

   ★   ★   ★

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

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