楽園:メッセージウィンドウ設定コマンドの解説(SfL)
sketch for らのべえのメッセージウィンドウ設定コマンドの解説
ここでは、SfLのメッセージウィンドウ設定コマンドを解説します。
メッセージウィンドウの属性は非常に多岐にわたり複雑なので、使用頻度が低い機能については解説を割愛しています。
メッセージフレームの構造
もっとも簡単なメッセージフレームは、右図のように、 メッセージ背景レイヤーと実際にメッセージが描画されるレイヤーの、2枚のレイヤーから構成されています。
実際には、名前表示エリアとメッセージ表示エリアが別のレイヤーになったり、 キー待ちのアニメーションが別のレイヤーで表示されたりしますが、概念的には2枚のレイヤーだと考えて構いません。
したがって、設定も「背景の設定」と「メッセージ/名前表示領域の設定」のふたつに分けて考えます。
メッセージ表示オブジェクトの設定ダイアログ
0.IDの設定
IDはメッセージフレームを識別するための番号で、0〜メモリが許す限りの範囲で任意に設定できます。 ただし、各種効率の観点から、なるべく連番で、値の範囲も0〜31程度に抑えておくべきです。
IDの0番は特殊なIDで、デフォルトのメッセージフレームを意味しますが、 それ以外のIDは等価に取り扱われます。
間接参照定義は、参照グループに含めるをチェックすると有効になります。
例えば、フレームA(ID:0)とB(ID:1)とC(ID:2)をプレイヤーが任意に選択できるシステムを考えてみましょう。 ゲーム中のフレーム指定はIDで行いますから、生のIDしか取り扱えないとこういうシステムを作るのが非常に面倒になります。 そこで、レジスタ等を指定できるようにして、そのレジスタの内容を実際のIDとして利用する方法が採られます。 こういう方法をレジスタによって間接的に実際の値を得ることから「間接参照」と呼びます。
メッセージ表示オブジェクトの設定は、下図の6カ所に分解して考えるのがわかりやすいでしょう。
retouchでは、L9 がそれ専用の領域として予約されています。上記のようなシステムを作成したい場合、最初はL9を利用するのがよいでしょう。 上記の間接参照定義に、L9と記述して、コンフィグ等で選択されたメッセージフレームIDをL9に代入すればOKです。
1.背景の設定
メッセージフレームの構造の「メッセージ背景」部分の設定です。 背景は、「平面」「画像」「なし」の3種類から選ぶことが出来ます。
背景に「平面」を指定すると、始点と領域が指定できるようになります。 平面とは、ここで指定した領域を指定した色と透明度で塗りつぶしたものを言います。 色はRRGGBB形式で記述し、 透明度はretouch標準透明度指定で指定します。
例えば全画面に文字を表示したりする際に、背景を暗くする目的で利用されます。
背景に「なし」を選択した場合、始点と領域のみ指定して下さい。 背景は表示されず、文字だけが画面に表示される感じになります。
もっとも利用される背景は「画像」です
背景に画像を指定した場合は「背景の設定」で、その画像をファイルを指定します。 次に、「始点(x,y)」を指定して、その画像の左上を表示する画面上の位置を決定します。
画像はそれ自身で大きさを持っているので「領域」を指定する必要はありません。
「オープンアニメを使う」「クローズアニメを使う」をチェックして、アニメーション設定に、 任意のdltファイルを指定しておくと、メッセージウィンドウを開くとき、 および閉じるときにそのアニメを再生してメッセージウィンドウを出したり消したり出来ます。 もっとも毎回アニメが挟まると、長さによってはうっと惜しく感じられることも多いので、 あまり利用はされていません。
2.メッセージ領域設定 / 3.名前領域設定
領域設定は、右図のようにメッセージ背景のどの位置にメッセージや名前を表示するかを決定する部分です。 また利用するフォントやフォントサイズ、装飾などもここで設定します。

メッセージ領域を設定します。
指定する座標はメッセージ背景相対の値で、 右上の図の例で言えば始点が(64,60)、領域が(706, 95)となります。
領域補正値は無視して構いません。設定しないで下さい。
メッセージ文字影指定をチェックすると、文字に影を付けることが出来ます。 色はRRGGBB形式で影の色を、ずらしX,Yは、横縦に何ピクセルの影を付けるかを指定します。大抵は1,1かせいぜい2,2です。
文字の大きさや他の装飾は、FONT設定で行います。 特に説明が必要な部分はないと思いますが、サイズの単位は高さ方向のピクセルです。 また改行幅で1行の高さを決められます。 例えば、10ピクセルのルビを作る場合、文字サイズが26なら、改行幅は36以上必要になります。 そして、それが3行表示されるとすると、メッセージ表示領域の高さは最低、36*3 ピクセルが必要になります。
縁取りを有効にすると、文字全体の表示領域は左と下に2ピクセルずれます。
また、センタリングは、文字表示時間が指定されている場合は利用できませんのでご注意下さい。
名前領域を設定します。
指定する座標はメッセージ背景相対の値で、 右上の図の例で言えば始点が(36,7)、領域が(250, 28)となります。
フォント設定および文字影設定は、メッセージ領域設定と同じです。
名前専用領域を使う」をチェックすると各種領域が設定できるようになります。 もしチェックしない場合は、名前はメッセージ領域の1行目に表示されるようになります。 その際「名前表示をしない」をチェックすると、名前を表示しなくなります。
文字数で背景が変化」は、名前専用領域を利用するときだけ有効です。 その場合、名前領域の背景は、右端+複数の真ん中+左端で構成されるようになります。
設定...ボタンを押すと次のダイアログが表示されます。
ここで、先の右端、中央、左端の画像ファイルを指定します。 描画領域指定のdx,dyは、背景相対座標で、右端画像の左上表示位置を指定します。 dw,dhは、最大の領域サイズを指定します。
4.吹き出し領域
フローティングウィンドウ(ウィンドウ位置を自由に移動させられるタイプのウィンドウ。主に吹き出しで利用します)を作成するための設定です。 吹き出しにはトゲの位置や形状等、外見がいろいろ変わりますのでそれらも定義できるようになっています。 が、多機能すぎて初心者向けではないし、利用頻度も低いので解説は割愛します。
5.その他の設定
拡張表示を行う」をチェックすると、メッセージ中のコマンド指定で次の7つの機能が利用できるようになります。 上記は実際にゲーム画面で出力したスナップショットです。
ルビ高スペーシング表示領域の関係は右図の通りです。 ルビのあるときと無いときでは、ルビ高+スペーシング分だけ、本文の表示位置が下がって見えます。
カラーセクション指定は、オプションで指定した1〜6の section color の色に切り替える指定で、 左側のエディットボックスに文字の色を、右側のエディットボックスに縁取りの色を、それぞれRRGGBB形式で指定します。 縁取り表示を利用していない場合、縁取り側は空欄にしても構いません。
セクションパレット指定は、通常defノードで定義するsection colorをメッセージ中のコマンドで設定するものです。
文字サイズ指定文字太さ指定イタリック指定については見たとおりです。
リンク指定は非常に特殊な機能で、要は文章中にHTMLのリンクのようなものを入れられる機能です。 リンク先には、サブルーチンID、ジャンプ先ブロックID、URLが指定できますが、 らのべえではブロックの概念が隠蔽されているためMBTとの組み合わせ以外では使いどころが限られるでしょう。
拡張表示をメッセージ中でどうやって指定するのか?
sketchには範囲指定でこれらを入力するコマンドがありますが、現時点(ver.1.02)で、らのべえにはそんな機能はありません。 というわけで、ここでは生の記法をご紹介しておきます。
まず、右上の「改行幅を超えるようなフォント〜可能な機能です。」を出力したメッセージを紹介しておきます。
《C:2》改行幅を超えるようなフォントサイズ《C:0》を文章の途中で《S:48》指定《S:0》するとこうなります。後から書かれた《S:32》《I:1》フォント《I:0》《S:0》が手前に表示されます。 《S:70》巨大文字は《S:0》 1行に混在させない方が綺麗です。 もともとは、メッセージ中に《S:12》選択肢がナチュラルな文章で存在しているようなゲーム《S:0》《S:48》《I:1》を《I:0》《S:0》作成するために作られましたが、《C:2》《S:32》《工夫次第:いきあたりばったり》《S:0》《C:0》でいろいろな応用が可能な機能です。
メッセージ中の拡張コマンドは、2重山形括弧《》を利用します。
そのため拡張表示指定を有効にするシナリオでは、2重山形括弧を使わないで下さい。
青空文庫のルビにインスパイアされた‥‥ような気がします。
凡例は、《command:parameters...》です。
commandは半角1文字またはルビ対象の文字列です。パラメータはコマンドによって異なります。
コマンド パラメータ 解説
C 0〜7 《C:4》対象《C:0》 対象をセクションカラー4に設定、その後元に戻します
S 0 / ピクセル数 《S:32》対象《S:0》 対象を高さ32ピクセルのフォントに設定、その後元に戻します。
I 0 / 1 《I:1》対象《I:0》 対象を斜体にし、その後元に戻します。
W 0〜1000 《W:700》対象《W:0》 対象をBOLD表示し、その後元に戻します。400が通常です。
P 《P:3:0xFF0000:0x00FF00》 セクションカラー3番を赤色に、縁を緑にします。
L 対象:mode;id:link 《L:対象:0;0:9000》 対象にリンクを作ります。クリックするとBLOCK9000へJUMPします
  《L:対象:1;0:5000》 対象にリンクを作ります。クリックするとBLOCK5000をCALLします
  《L:対象:2;0:http://test.com》 対象にリンクを作ります。クリックするとtest.comを開きます
文字列 ふりがな 《対象:ふりがな》 「対象」に「ふりがな」というルビを振ります。
仕様上、半角1文字にルビを設定することは出来ません。 また、ルビを振る対象の文字列に半角のコロンや山形二重括弧が含まれていてはいけません。