テキストエディタによるシナリオの書き方 (retouch標準シナリオ書式)
概要
ここでは、テキストエディタによるシナリオの記述方法(retouch標準シナリオ書式)について解説します。 retouch標準シナリオ形式で書かれたシナリオは、そのまま演出エディタに読み込んで演出を開始することが出来ます。
なお、シナリオの記法を学ぶ前に、sketchにおけるキャラの名称の取り扱いについて理解しておく必要があります。 真の名前表記名についての理解がない場合、先に「キャラの名前について」をご覧下さい。
一般的に、シナリオ、特に登場人物の台詞やト書きは、使い慣れたテキストエディタを利用します。 演出エディタでも入力できますが、シナリオの書き手は大抵日常的にテキストエディタを使用しているはずですので、 そのほうが効率的でしょう。
その際、sketchでは「retouch標準シナリオ書式」と呼ばれる書式を用いて、シナリオの本文や演出のメモ、 CGの表示やキャラの登場/退場等を記述できるようになっています。
商業作品の制作の現場では、演出エディタ上で(修正は別にして)実際にメッセージを延々入力していく人は誰もいません。いや、ほんと。
ファイル名の付け方と、格納するフォルダの位置
シナリオファイルのファイル名は、拡張子を除いた部分がノード名に変換されます。 ノード名とは、そのシーンに付けられたいわゆるシナリオ名です。あちこちでファイル名、またはファイル名の一部として利用されるため、 ファイル名に含めることが出来ない文字は使用できません。
もともとファイル名の話なので、そんな文字は最初から使えないんだけどさ。
具体的な例を挙げると「sc00_001.txt」とか、「序章.txt」とかですね。 なお、一応日本語も使えますが、できるだけ半角英数字のほうが良いでしょう。また余り長い文字列はノード表示時にノードからはみ出してしまうので なるべく簡潔な文字列にして下さい。
これらのファイルを格納する位置ですが、sketchのプロジェクトを作成した後は、「projectRoot/resource/シナリオ/1.original/」直下に配置して下さい。 projectRootは、あなたが作成したプロジェクトフォルダ名です。resource以下のフォルダはsketchが自動的に作成します。
プロジェクト作成前はどこに配置してあっても構いません。
基本的な書式
sketchを利用する場合、各種演出は演出エディタで行いますので、テキストシナリオ中に書かれる主な要素は 台詞ト書きコメントその他のメモの4つです。
  • 台詞
  • ト書き
  • コメント
  • メモ書き
それぞれの書き方を、次のシナリオ記述の例をベースに解説します。
主人公が菫子に起こされるシーン。
黒背景。寝ている主人公が起こされるところ。
// 朝。主人公の部屋。主人公は寝ぼけている。
//; 元気な感じで。
???(菫子).「おはようございます、正樹様」
正樹.「……もう少し、寝かせてくれ…………ぐぅ、ぐぅ……」
//; 仕方ないですね、といった感じで。
???(菫子).「ダメですよ、正樹様。二度寝されては遅刻をしてしまいます」
正樹.「……分かってるよ………………ん?」
記述.正樹様……? なんだ、『様』って?
記述.そう思った俺は、布団をはねのけるように起き上がった。
ぼんやりした視界。見知らぬ豪華な部屋を背景に菫子が微笑んでいる。主人公は少し寝ぼけているが、徐々に昨日のことを思い出す。
背景:0321 / キャラ:菫子 3-0 (笑顔)
まず「台詞」ですが、一般に
真の名前.メッセージ本文
という形式で記述します。 「真の名前」と「メッセージ」の間にあるのは半角ピリオドです。このため真の名前の中に半角ピリオドを使用することは出来ません。 上記例では、メッセージ本文が「」で囲まれていますが、別に囲まなくても構いません。
このままだと、ゲーム中に名前表示領域があるときは、「真の名前」が表示されます。 ところが場面によっては、真の名前ではなく、単に「女の子」とか「怪しい声」とか表記したい場合があります。そういう場合は――
表記名(真の名前).メッセージ本文
という書式を利用します。()は全角です。
次に「ト書き」ですが、retouchでの取り扱いは少し変わっていて、ト書きもキャラクターの一人として取り扱われます。 具体的には「記述」さんの台詞として表記されます。上記例では、
記述.正樹様……? なんだ、『様』って?
といった部分です。
なお、1つの台詞は1行で記述するというルールがあります。ゲーム中、表示領域からはみ出すことを防ぐ改行はシステムが自動で行います。 もちろん禁則処理も同様です。 retouchはフォントの変更が動的に可能なシステムであるため、明示的な改行で整形を行うと、ぎりぎりで調整されている場合、 選択したフォントによっては意図しない表示結果になるためです。 単純な整形のためではなく、意味的な問題で明示的な改行を挟みたい場合は、メッセージ中に\nを記述して下さい。
記述.ここは1行目\nここから2行目\nここは3行目
コメント」は、行頭に半角のスラッシュ2つ(C++風)を記述することで表現します。
// 朝。主人公の部屋。主人公は寝ぼけている。
コメントには「台本に残すもの」と「台本には記載しないもの」の2種類があります。上記の通常のコメントは台本には記載されません。 文字の読み方や声優への指示等、台本にコメントを残したい場合は、
//; 仕方ないですね、といった感じで。
のように、半角のスラッシュ2個に続いて、半角のセミコロンを記述してください。これでこの行は台本に記載されるようになります。 なお、コメントは行単位で取り扱いますので、行の途中に書いてもコメントとは認識されません。ご注意ください。
最後に「メモ書き」を解説します。
具体的には上記例の、水色の文字の部分です。 この項目は、sketchがテキストシナリオを、演出エディタに理解できる形(RSD形式といいます)にコンバートする際に、コンバートできなかった行を意味しています。 コンバート中理解できない行はすべてダイレクトコマンド(CMD_DIRECT)として取り扱われ、メモとしてRSD形式の中に残されるわけです。 ダイレクトコマンドは、ゲームには出力されないコマンドで、単に入力をそのまま表示するだけのものです。
意識の上では台本に出力されないコメントと同じ扱いで構いません。
ただし、sketchはその行に対して解釈を行おうとするため、誤った解釈を行える行があった場合、おかしなコマンドを出力するかも知れません。 したがって、どのようなメモ書きも、原則コメントの形で記述した方がよいでしょう。 あくまでもテキストシナリオに記載された情報を漏れなくRSDに渡すための機能だと考えて下さい。
テキストのシナリオ表記は主にこれだけです。 ト書きと台詞と状況説明を記述する、いわゆる脚本の書き方とほとんど同じになります。
簡単なコマンド表記
現在ではレイアウトエディタを利用したシーンレイアウトが主体なので、ほぼ使われていません。
sketch / ExHIBITでは、演出を専用エディタで行う関係上、画像や音の演出がコマンドとしてシナリオ上に記述されていません。 ただし、retouchは、スクリプト記述も行えるシステムなので、過去のスクリプトに利用されているコマンドはそのままsketchでも認識することができます。 説明程度に画像を挿入したりするのに、そういったスクリプトコマンドの一部が利用されることがあります。 例えば、320番の画像をイベント画面に表示するためには次のように記述します。
system.draw(320);
これだけですと、標準フェード時間のフェードインで表示するだけですが、細かな表示演出などは、どうせ演出エディタで行いますので、 それ以外のパラメータを学習する必要はありません。
もちろんより完全にRSD形式のスクリプトを直接記述することも出来ます。具体的には下記のような記述になります。
CMD_DRAW`320`500`67108865,2,-1,-1`0`320,9,0,500,0,0,0,0,0,0,0,-1,-1,0,0,0`
これは、system.draw(320); と等価です。様々な機能を実現するためにこれだけパラメータが必要なわけですが、 とてもおぼえられないので、スクリプトを放棄して演出エディタで演出を行うわけです。
同様に、菫子のオブジェクト名をsumirekoだと定義した場合、菫子の登場は
sumireko.enter(3, 0);
と書けます。これはsumirekoのbodyID:3番に、faceID:0番の顔をつけて登場させるという意味です。 ここでのみ、名前の説明にあるオブジェクト名が利用されます。
なお、この機能も現時点ではレイアウトエディタによる指定に置き換わっているため、 利用しないほうが後々楽(挿入されているコマンドを消さなくて済むから)です。
その他
テキストシナリオ記述段階で気にする必要はありませんが、真の名前が、まだ定義されていないキャラクターの台詞をコンバートした場合、 そのキャラのメッセージはCMD_DIRECT扱いされますのでご注意ください。
定義されていないキャラとは、そのキャラが defChara.rsd で、CMD_CREATECHARACTERで登録されていないことを意味します。 詳細は、キャラクターの登録をご覧下さい。