スポンサーリンク

ティラノスクリプト:メッセージレイヤーの増やし方

 ティラノビルダーではウインドウ枠1種類しか使えなかったから、キャラクターごとに違うウインドウを使いたい!何ならキャラクターごとに違うフォントを使いたい!と思って何が何やら分からずに相当な時間を費やした一(いちもんじ)です!ツイッターのフォローよろしくね~!(@1monjigame

メッセージレイヤーとは何ぞや?

まずメッセージレイヤーとは、ゲームの本文を表示したり、今喋っているキャラクターの名前を表示したりするレイヤーのことです。色んなレイヤーを押しのけて、マウントを取りたがるレイヤーです。

メッセージレイヤーを増やすことで出来ること

 メッセージレイヤーを増やすことによって出来ることは、例えばこちらの記事にあるような、同時に複数のウインドウを表示してそれを切り替えつつ、文字を表示するようなことだったり。

 あとは、冒頭で私がほざいていた「キャラクターごとにフォントを変える」だとか、そういったことです。ウインドウのデザインの変更だけならメッセージレイヤー1枚で十分足りますし、可能です。キャラクターごとにメッセージ枠を変更することができます。

メッセージレイヤーを増やさずにキャラごとのフォント変更を行うと…

 メッセージレイヤー1枚でフォントをキャラごとに変更すると、こんな事態になります(笑)

 お分かりいただけただろうか…?アナウンサーがブレブレにぶれている…。これは、1つのレイヤーで複数のフォントを使ったことによる弊害です。前のフォントの残骸が残ってしまっているのだ…オーマイガー!

メッセージレイヤーの増やし方

 ということで、そういう事態を免れるためにも!メッセージレイヤーを増やしましょう!

  1. config.tjsの変更
  2. メッセージレイヤーの細工

 やることはこの2つじゃ!!!簡単じゃろう?

1.config.tjsの変更

 ではまず1.のconfig.tjsの変更をしていきましょう!!コンフィグを開く際には、フリーのソフトを使うと良いと思います。詳しいことはこちらの記事の目次3に書いています!

myprojects → プロジェクトフォルダ → data → system → Config.tjs


 この手順でコンフィグを開いたら、多分238行目付近にこんな文章があるかと思います。

// ◆ 初期状態のメッセージレイヤの数
// 前景レイヤと違って、0 を指定することはできません。これも必要な数だけ確保
// するようにすべきです。laycount タグでシナリオ内でも変更できます。
;numMessageLayers = 2;

 これです!これこれ!ここの2の部分を変更していきたいと思います!
これを見ると、メッセージレイヤーはデフォルトで2枚使えるようになっていますね。

 この2枚というのは、詳しく言うとmessage0、message1の2枚です。結構間違いやすいと思いますが、 message1、message2ではないのですね。 カウントは0から始まっていますよ!

 ここでこんなことをなぜくどくど言うかと言いますと、指定した枚数以上のメッセージレイヤーを指示してしまうと、ゲームが動かなくなっちゃうからです!(経験者は語る)
 たとえば今2枚となっていますが、message2とか使っちゃった日にはフリーズフリーズです!だって、 message0、message1、そしてある筈のない3枚目のメッセージレイヤーmessage2 がどこからともなく発生しているのですから、そりゃプログラム側もびっくりですよ!

余談ですが、config.tjsに書いてある「 laycount タグでシナリオ内でも変更できます。」と書いてあるのは実は嘘で、実際やろうとすると laycountタグはありませんと駄目出し喰らいます(笑)

 さてちょっと脱線してしまいましたが、変更するのはこの部分だけでOK!

;numMessageLayers = 2;

 2だけです!

 numMessageLayersの左についている 「;」 って取らなくて良いの?これってコメントアウトじゃないの?そうお思いでしょう?分かりますよ。私もそう思って「;」を取ってからというもの、ゲームが動かなくなって6時間は無駄に費やしました。でもこれ、取らなくて良いんですね。

 2を変更していきますが、ここは必要な枚数を指定しておきましょう!
ちなみに私は自作の某ゲームで20と書きました…でも、不要なレイヤーを大量に用意してしまうと当然のことながらゲームのデータ容量が重くなってしまいますから、要注意です!

2.メッセージレイヤーの細工

 ここからはいよいよ!メッセージレイヤーの細工をしていきましょう!とは言いましても、やることは簡単!今までやっていた作業にちょっと工夫をするだけです。

;ウインドウA( message0 )

[current layer=”message0″]
@layopt layer=”message0″ visible=”true”
@layopt layer=”message1″ visible=”false”
;フォントの変更
[deffont face=HG行書体][resetfont]
;ウインドウ画像を配置
[position layer=“message0” frame=”config/blue.png” width=”1280″ height=”229″ top=”491″ left=”0″ margint=”15″ marginl=”15″ marginr=”15″ marginb=”15″ size=”30″]
;文字が表示される領域を調整
[position layer=message0 margint=”60″ marginl=”80″ marginr=”80″ marginb=”80″]
;キャラクターの名前が表示される文字領域
[ptext layer=“message0” x=”70″ y=”500″ name=”chara_name_area” color=”white” size=”28″ bold=”true”]

;ウインドウB( message1 )

[current layer=”message1″]
@layopt layer=message0 visible=false
@layopt layer=message1 visible=true
;フォントの変更
[deffont face=メイリオ][resetfont]
;ウインドウ画像を配置
[position layer=“message1” frame=”config/red1.png” width=”1280″ height=”229″ top=”491″ left=”0″ margint=”15″ marginl=”15″ marginr=”15″ marginb=”15″]
;文字が表示される領域を調整
[position layer=message1 page=fore margint=”60″ marginl=”80″ marginr=”80″ marginb=”80″]
;キャラクターの名前が表示される文字領域
[ptext name=”chara_name_area” layer=“message1” color=”white” size=28 bold=true x=70 y=500 page=fore]

[current layer=”message0″]
 扱うメッセージレイヤーが複数ある場合、どのメッセージレイヤーに本文を表示させたいのかを指定する必要があります。それがこのタグです。message1を表示させたければ、 [current layer=”message1″] です。

@layopt layer=”message0″ visible=”true”
 表示させたいメッセージレイヤーを表示させる指示。

@layopt layer=”message1″ visible=”false”
 今回は、同じ場所に複数のレイヤーを配置します。他のレイヤーと重なったらまずいので、見せたいレイヤー以外のレイヤーは見えないようにしました。

[deffont face=HG行書体][resetfont]
 ゲームに設定されている、デフォルトのフォントの設定から変更しています。そのあとの[resetfont]までセットで使いましょう。
 なぜ[font face]じゃないかと言いますと、ここで [font face] を使ってしまうと、例えば文章の一部に[bold]などの装飾をしたとして、そのあとに[resetfont]をしてしまったら、当然ですがフォントの種類も元に戻ってしまうからです。

[position layer=”message0″ frame=”config/blue.png” width=”1280″ height=”229″ top=”491″ left=”0″ margint=”15″ marginl=”15″ marginr=”15″ marginb=”15″ size=”30″]
 メッセージレイヤーにウインドウの画像を配置しています。これはいつも通りな筈。

[position layer=message0 page=fore margint=”60″ marginl=”80″ marginr=”80″ marginb=”80″]
 文字が表示される領域を調整しています。これも普段通り。

[ptext layer=”message0″ x=”70″ y=”500″ name=”chara_name_area” color=”white” size=”28″ bold=”true”]
 キャラクター名が表示される領域を調整しています。ここも普段通り。

 以上のことから、複数のメッセージレイヤーを使うには、[current layer=”扱うレイヤー”]タグを書くことと、 @layopt layer=”message0″ visible=”true” などで表示非表示をコントロールすることが大事と言うことです。そして複数のフォントを使い分けたい時には、 [deffont face=HG行書体][resetfont] このタグを書き足すこと!これだけが大事です!

複数のウェブフォントを登録したい

 複数のウェブフォントを使いたい!と言うときは基本的に

 この記事を参照していただけたら分かりますが、othersフォルダにダウンロードしてきたフォントを投入して、font.cssをこんな風に使いましょう!

@font-face {
font-family: “文字名A”;
src: url(“../../data/others/文字名A.形式”) format(“truetypeなどの形式”);
}

@font-face {
font-family: “文字名B”;
src: url(“../../data/others/文字名B.形式”) format(“truetypeなどの形式”);
}

@font-face {
font-family: “文字名C”;
src: url(“../../data/others/文字名C.形式”) format(“truetypeなどの形式”);
}

 そして最後にconfig.tjsにフォント名を追加するのを忘れずに!