2-2.テキストの書式


 [前のページ]   [目次に戻る]   [次のページ] 

テキストファイルのフォーマット

はじめに

テキストファイルは、Famous Writerを直接制御する、重要なファイルです。
ゲームの開発中は、テキストファイルに書かれた命令に従って、画面表示や音声再生を始め、様々な動作を行います。

フォーマット

ファイルは必ずプレーンテキストで記述してください。
特にMac OS Xの方、Windowsでワードパッドをお使いの方は、リッチテキストはNGなのでお気をつけ下さい。
Macなら『TextEdit』や『SimpleText』、Windowsなら『メモ帳』で作成できますが、高性能なエディタを使った方が楽かと思われます。
他にも、アウトラインエディタを併用すると、開発が楽になるかと思います。

文字コードと改行コード

文字コードはShift_JISとUnicode(UTF-8)が使えますが、明示的にヘッダ行(後述)に記述しておく必要があります。
改行コードはCR/CR+LF/LF、どれでも構いません。共にMac/Winで動作します。
が、お使いのOSで奨励されているものを使うことをお勧めします(Mac OS X はCRまたはLF、Mac ClassicはCR、WindowsはCR+LF)。

UTF-8を使うと、フォントにもよりますが、一部の機種依存文字がMac/Winで表示できるようになります。
Shift_JISは、他のOSで動作させた時に、機種依存文字は文字化けなどの症状が出ます(ブラウザなどと同様です)。

ヘッダ

ヘッダ行について

テキストファイルの最初の一行は、必ずヘッダ行が必要です。
以下、コピー&ペーストで貼り付けるとよろしいかと。

※ちなみに、FmWr→Famous Writer、Plin→Plain Textの略です。

これはHTMLで言うところの、<html>と、<meta>のchraset=〜が合体したものと考えてもらうと、割と近いかと思います。
Famous Writerに、シナリオが書かれたテキストであることと、文字コードの情報を知らせます。
文字コードについてよくわからない場合は、とりあえず「FmWrPlin________」を試していただいて、文字化けするようなら「FmWrUTF8________」を使えばいいでしょう。

逆に言うと、Famous Writerはヘッダ行がないテキストファイルを認識しません。
これを応用すると、ゲームの設定、シナリオのプロット、メモ、仕様書などのテキストファイルも、dataフォルダに放り込んでおけます。

内部動作といたしましては、ヘッダ行は頭16バイトのバイナリで判別いたします。
従って、頭にBOMがつかないテキストエディタをお使い下さい。
_の部分は8文字で、合計16バイトのヘッダになり、17バイト目以降から命令の解釈を始めます。

内部での文字コード

Famous Writer内部の文字列処理は、全てUTF-8で行われており、Windows 2000/XPや、Mac OS Xと親和性が高くなっております。
従って、Shift_JISの場合はUTF-8への変換が発生いたしますが、これは全てファイル読み込みの際(つまりコンパイルの前)に行っております。
そのため、コンパイル済のfwdファイルで配布する時は、どちらの文字コードを使おうと変換処理はございませんので、プレイヤー側の動作速度には影響いたしません。
開発者各位の都合に応じ、ファイル個別に違う文字コードで開発できます。

setting.txt

Famous Writerは、起動されるとまずdataフォルダ直下のsetting.txtを読みに行きます。
setting.txtは、ゲーム全般の動作を決定するファイルです。

setting.txtも、同様にヘッダ行が必要だったりと、書き方は他のテキストと全く同じです。
ただ、このファイルでのみ使える命令があったり、文字の表示(インライン行)ができないという違いがあります。
命令マニュアルでは「setting.txt用命令」として、他の命令と分けてありますので、ご参照下さい。

行の解釈

行構造

テキストファイルは、基本的にテキストエディタで見たままの形で、一行ずつ解釈します。
正確には、改行コードまでで1行とみなします。
が、以下のルールで、テキストを見やすいように整形して書くことが出来ます。

行頭、行末、命令の間のスペースやTAB(いわゆるホワイトスペース)は無視します。改行だけの空の行も無視します。
見やすくするなどの理由で、お好きなように入れることができます。

また、行末に半角のピリオド(.)があると、次の行と連結して解釈されます。

# 命令行でピリオドを使った例
&Select = .
選択肢1: &Jmp=@1 ,.
選択肢2: &Jmp=@2 ,.
選択肢3: &Jmp=@3 ;

# 上の例は、以下のように1行で書いたのと同じ動作になる
&Select = 選択肢1: &Jmp=@1 , 選択肢2: &Jmp=@2 , 選択肢3: &Jmp=@3;

# インライン行の例
1行目/.
2行目/.
3行目

# 上の例は以下と同じ動作
1行目/2行目/3行目

命令行とインライン行

行頭に#があると、その行はコメントとして無視します。
その他の行は、「命令行」と「インライン行」という二種類に振り分けて処理します。

命令行は、画像描画や音声再生などの指示を与え、基本的に記述は英語で、プログラム言語っぽい体裁になります。
インライン行は、メッセージレイヤーにその行を描く、というような動作になります。
ADV/ノベル系のゲームでは、その性質上、インライン行の比率が高くなりますので、このような仕様になっております。

命令行とインライン行の判別は、頭の文字で判断し、以下の通りになります。
これらがない場合は、インライン行とみなされます。
#: 注釈文(コメント)
@: アンカー
&: 実行命令
?: 条件判断
%: 数値変数
$: 文字変数
*: setting.txt用命令

# 命令行の例
&Layer.Load = /hoge.pct;
%foo = 12;

# インライン行(出典:『方丈記』鴨長明氏)
行く河の流れは絶えずして、_しかも、もとの水にあらず。
よどみに浮かぶうたかたは、_かつ消え、かつ結びて、_久しくとどまりたる&r=例:ためし&なし。

マルチステートメント

命令は、マルチステートメント(特定の区切り記号を入れることで一行に複数の命令を持たせること)で記述できます。
Famous Writerの区切り記号は、半角のセミコロン(;)です。これで命令と命令の間を区切ってください。

# それぞれが命令行1行(復習)
&Layer.No = 0
&Layer.Load = /hoge.pct

# マルチステートメント表記(動作は上の例と同じ)
&Layer.No = 0; &Layer.Load = /hoge.pct;

# マルチステートメントでは、命令行とインライン行を混在させることもできます
クリックすると音が鳴るよ!; &Snd.Play;

インライン命令

インライン行の中に埋め込める命令があり、これをインライン命令といいます。
具体的には、色や文字の大きさを変更したり、変数を表示するなど、テキスト表示動作中に他の動作を埋め込む命令です。
詳しくは、命令マニュアルのインライン命令の項を参照してください。


 [前のページ]   [目次に戻る]   [次のページ] 

Ads by TOK2