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

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

ソーサリアンText開発者向けマニュアル(GBAT to SText編)

GBAT to SText

GBAT(GameBook Authoring Tool)は、ゲームブック執筆を支援するGUIツールです。シナリオのフローをリアルタイムにチャート化するので、全体を見渡しつつ、執筆を進められます。フリーでは100パラグラフまでという制限はありますが、シナリオを分割しながら作業を進めれば、十分に活用できます。

GBATは、以下のページから入手できます。

https://www.crumblyheadgames.co.uk/the-gamebook-authoring-tool/
   ▼
http://www.web-deli.com/sorcerian/next/images_blog/stext_gbat0.png

GBAT to STextは、このGBATで作成したシナリオデータをSText形式に変換するためのツールです。

■Note■
GBATの使い勝手については、ちゃなさんのブログが参考になります。

The GameBook Authoring Toolの使い心地
http://chanagame.hateblo.jp/entry/2017/08/21/075122

GBATの使い方

GBATそのものの基本的な使い方は、以下のページを参照してください(英語が苦手な方はChromeなどの翻訳機能を利用すれば、おおよそ把握できる、はず!)。

Getting started with the GameBook Authoring Tool(https://www.crumblyheadgames.co.uk/gamebook-authoring-tool-help/how-to-use-the-gamebook-authoring-tool/

以下では、SText固有の要素をGBATで表す方法についてのみまとめます。

■Note■
GBATでSText向けシナリオを開発する人のために、

  • 最低限のヘッダー見本を含んだテンプレート(template.gbat)
  • 主な機能を組み込んだテストデータ(sample1.gbat、sample2.gbat)

も提供しています。開発に際しては、以下からダウンロードしてご利用ください。

GBATテンプレート(http://www.web-deli.com/sorcerian/next/stext/playground/template.zip

シナリオタイトル/作者名を定義する

プロパティウィンドウの[Gamebook]タブからTitleプロパティを設定してください。

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

Titleプロパティは「タイトル@作者名」の形式とします(「@」は半角文字です。以降も区切り文字はすべて半角なので、要注意です!)。

■Note■
複数ファイルで執筆している場合には、すべてのファイルにTitleを設定してください。
GBAT to SText的には、最初のひとつを優先して利用しますが、ファイルの選択順序によって、いずれが最初かが変化してしまう可能性があるためです。

プロローグはSection 1で記述する

GBATで執筆する場合、プロローグは「1」とします。
STextでは「id="0"」ですが、GBATではSection 0は設定できないためです。

シーンに紐づくフラグ/アイテムなどの情報を設定する

それぞれのシーンに紐づく情報は、Sectionのテキスト先頭に「@@...@@」で括ったブロックで宣言してください。形式は「@属性名:値」です。

@@
@items:i10,i11
@flags:f6,f5
@enemies:m5,m4
@result:r01
@bgm:boss
@se:mom
@end:bad
@@
...以下、本文...

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

それぞれの属性の意味は「SGMLリファレンス」(http://d.hatena.ne.jp/sorcerian/20180128)から[SGML(Sorcerian Gamebook Markup Language)仕様]のscene要素を参照してください。

シナリオの基本情報を設定する

シナリオの基本情報(アイテム/フラグなど)もSectionのテキスト先頭「@@...@@」で宣言できます。ただし、読みやすさの観点から、Section 1で記述するようにしてください。

@@
pc:FIGHTER,WIZARD:FEMALE:YOUNG,ADULT
bgm:@battle01::sigh
intro:王様の杖を探し出す駆け出しの物語

i01:こいし:何の変哲もない、石だ
i02:ひとにぎりのすな:グーランの、なれの果てだ
i03:きのぼう:豚(猫)いじめのための?棒
i04:リラの貝殻: 離れた場所でグーランと会話できる。要は携○電話

f01:「☆」の道を調べた。
f02:「〇」の道で、ジャイアントラットを倒した。
f03:「*」の道で、怖い目を見た。
f04:「◎」の道で、豚(猫)を助けた。

m01:人面岩:地:物理:L-STR:喋るだけで、硬い岩だ。
m02:人面岩の口:霊:魔法:R-INT:喋る口だ。牙はない。

r01:絵本の世界:1:少女の部屋まで進めた
r02:謎の老人…一体なにティスなんだ…?:3:謎の老人に助けられた
r03:怪我の功名:4:塔で右と左の扉を両方開けた

w:ダンジョン:bgm:Az:venusaz.seesaa.net/

@items:i10,i11
@flags:f6,f5
@enemies:m5,m4
@result:r01
@bgm:boss
@se:mom
@end:bad
@@
...以下、本文...

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

基本情報の後方に、シーン個別の情報を宣言しても構いません。
それぞれの設定の形式は、以下の通りです。

制約条件 pc:種族:性別:年齢
BGM bgm:メイン:ハッピーエンド:バッドエンド
ツイート intro:紹介文
アイテム id:名前:説明
フラグ id:説明
敵/罠 id:名前:属性:攻撃の種類:ダメージ式:ドロップ:説明*1
実績 id:名前:レベル:説明
ライセンス w:名前:分類:作者名:URL

ただし、ライセンスのURLは「http://」を除く、たとえば「venusaz.seesaa.net/」のような形式で表します。

その他の項目の意味は「シナリオ開発リファレンス」(https://sorcerian.hateblo.jp/entry/2018/11/01/211745)から[SGMLリファレンス]のitem、flag、enemy、result、work要素を参照してください。

■Note■
@@...@@の中の空行は無視されます。見易さという観点からは、アイテムであればアイテムの区切りで、空行を空けることをお勧めします。

フラグ/アイテムなどによる条件付き分岐を表現する

分岐テキストを「キャプション@条件」の形式で表してください。

条件 記述 結果例
フラグ 次へ@f1,f2 [次へ](100 "f1,f2")
アイテム 次へ@i10 [次へ](100 "i10")
魔法 次へ@mHEAL [次へ](100 "mHEAL")

利用できる条件については「SGMLリファレンス」(http://d.hatena.ne.jp/sorcerian/20180128)から[Markdown形式]-[SGML固有のルール(リンクボタン)]も参照してください。

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

特殊な分岐について

(1)自由移動欄

自由移動欄([...](X))を利用するならば、以下のように設定してください。

  • 移動先の番号は999で固定
  • 分岐テキストは移動可能なシーン番号(カンマ区切り)
  • scene999のSummaryプロパティに「link」と設定*2

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

(2)文字列入力欄

文字列入力欄([...](Q))

  • 移動先の番号は998で固定
  • 分岐テキストは「正答,正しい時の移動先,間違った場合の移動先」
  • scene998のSummaryプロパティに「link」と設定*3
(3)ランダム分岐

ランダム分岐を利用する場合には、以下のようなフォーマットで分岐先を指定します。

  • 移動先の番号は「分岐先1」
  • 分岐テキストは「次へ@@分岐先2,分岐先3,...」(アットマークは2個)
    • 条件式を加える場合は、「次へ@条件式@分岐先2,分岐先3,...」としても構わない

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

(4)複数ファイル対応

GBAT to STextでは、複数ファイルを連結することもできます。ただし、GBATの制限で遷移先のないリンクを生成することができません(自動的に遷移先のシーンが生成されてしまうので、ファイルを跨るための仮のリンクが生成できない)。

ということで、遷移先のシーンが別ファイルにあることを示すために、そのSummaryプロパティに「link」を設定してください。GBAT to SText的には「link」の付いたシーンは、複数ファイル連結のための仮のシーンと見なし、出力をスキップします。

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

あとは、本来の遷移先を、結合先のファイルで用意しておけば、正しくリンクされます。

■Note■
複数ファイルに分割した場合、2ファイル目以降で自動生成された初期シーン(scene 1)は、1ファイル目と重複しないよう、Numberを変更しておくようにしてください。

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

GBAT to STextの使い方

GBATto STextは(1)変換ツールとして、(2)Playgroundの中で、のいずれかで利用できます。

(1)変換ツールとして利用(Chrome環境のみ)

GBATで作成したファイル(*.gbat)をSText形式に変換するには、以下のページにアクセスして、Utility 2「GBAT to SText」を探してください。

http://www.web-deli.com/sorcerian/next/stext.aspx
   ▼
http://www.web-deli.com/sorcerian/next/images_blog/gbat_trans.png

[ファイル選択]ボタンを押して、表示されたファイル選択ボックスから.gbatファイルを選択、[開く]ボタンをクリックすると、ファイルのダウンロードが始まります(複数のファイルを選択する場合は、[Ctrl]キーを押しながら選択してください)。

(2)Playgroundの中で利用

GBATで作成したファイルをPlaygroundで実行することもできます。以下のページにアクセスして、ページ左上の[ファイル選択]ボタンを押して、表示されたファイル選択ボックスから.gbatファイルを選択、[開く]ボタンをクリックすると、左ペインのエディターに変換済みのシナリオデータが反映されます(複数のファイルを選択する場合は、[Ctrl]キーを押しながら選択してください)。

http://www.web-deli.com/sorcerian/next/playground.aspx
   ▼
http://www.web-deli.com/sorcerian/next/images_blog/gbat_play3.png

注意点(未確認)

GBATに対して改行コードLFで作成したテキストをコピペすると、改行がうまく認識できていないようです。結果、最終的に生成されるscenario.xmlに余計な改行が含まれてしまう場合があるので、基本は

  • 他のテキストからコピペする場合は、改行コードはCRLFとする
  • または、GBAT環境でのみテキストを編集する

などの対策を採ってください。

*1:2018年11月、ドロップを追加しています。以前からGBATを利用している方は、空のドロップ欄を追加するなどしてください。

*2:推奨。なくても問題はないが、空のシーンが出力されてしまうのを防げます

*3:推奨。なくても問題はないが、空のシーンが出力されてしまうのを防げます