今回の開発で自分がどこをいじったのか覚えておくための覚え書きです。また指示以外にも勝手にやっているので開発リーダー(呼び名決めて欲しいな)に知らせて判断を仰ぐためでもあります。こんなのもできるよと紹介するので、やめろとかやれとか。
まだ勉強を始めたばかりなので、恥ずかしながら初歩的なことばかり載っています。ここを見た見知らぬ誰かがどうかネットの素人情報など信じてしまいませんように。
;scWidth = 800; ;scHeight = 600;
ゲームの画面サイズを決定します。scWidthが横幅、scHeightが縦幅。ただしこの値だけ変更しても、画像の表示座標などが640×480の設定と変わらないため、表示がおかしくなります。修正するためには前景レイヤやメッセージレイヤの表示位置も変更する必要があります。
;scPositionX.left = 200; ;scPositionX.left_center = 300; ;scPositionX.center = 400; ;scPositionX.right_center = 500; ;scPositionX.right = 600;
立ち絵の位置に名前をつけます。通常座標指定するところを「left」「right_center」などとあらかじめ設定することで数値の省略だけでなく立ち位置を統一できるようになります。
;marginL = 30; // 左余白 ;marginT = 20; // 上余白 ;marginR = 30; // 右余白 ;marginB = 20; // 下余白
メッセージレイヤ内の、実際に文字が表示される部分を指定します。
;ml = 30; // 左端位置 ;mt = 420; // 上端位置 ;mw = 800-60; // 幅 ;mh = 600-440; // 高さ
メッセージレイヤの位置と大きさです。今回はノベルゲームのように画面全体に文字を表示するのではなく、一般的な美少女ゲームと同じように立ち絵の腰下あたりに横長で表示するように設定しています。
;numMessageLayers = 4;
用意するメッセージレイヤの数を指定します。通常の文章用と、名前表示用で2つ。予備でそのプラス2つくらい用意しています。選択肢とかでも使うかも?
[position layer=message1 left=30 top=370 width=150 height=40] [position layer=message1 marginl=5 margint=0 marginr=5 marginb=5] [position layer=message1 visible=true]
Config.tjsで設定したの(メッセージレイヤ0)とは別のメッセージレイヤを、シナリオの中で設定して<visible=true>によって表示させます。
この場合名前のレイヤは文字を表示する前に表示させておきたいので、01.ksは起動メニューから「初めから」を選んで飛ぶ先の最初のシナリオファイルです。<visible=false>にすればもちろん消えます。
メニューに戻るときや、続きからロードするときも同じような作業をします。
[current layer=message0] うだるような暑さ。[l][r] こめかみに一筋の汗が流れ落ちる。[l][r] 拭っても拭ってもそれはやむことを知らず。[l][r] かしましい蝉の鳴き声は夏の暑さを増幅するかのようだ。[p] [cm] [current layer=message1]ハル [current layer=message0]ほっ、ほっ、ほっ……[p][cm]
こんな感じで二つのメッセージレイヤを切り替えつつ使います。
[call storage="others/ExHistoryLayer.ks"] [history type = scroll]
標準が右で、ExHistoryLayer.ksを読み込んでhistoryタグのtype属性を変えると画像の左側になります。
問題は、見ればわかるように名前と本文が同列で表示されてしまっていること。スクロールバーのせいではなく標準でこうです。HistoryLayer.tjsとかをいじればどうにかなるはずなんですが……!
他の解決案としてはメッセージレイヤを完全に透明にしてしまい、立ち絵より前の前景レイヤにメッセージ枠などを表示し、名前のあとに必ず改行を入れるようにすれば見た目はそのまま履歴は変化します。ただソースは汚くなる。
[current layer=message1]ハル [current layer=message0]眠そうだね[p][cm] [current layer=message1]こー [current layer=message0]昨日夜遅くまでテレビ観ちゃってたからなあ……[p][cm] [current layer=message1]ハル [current layer=message0]駄目だよ、ちゃんと夜は眠らないと。[wait time="200"]観たいテレビは録画すること[p][cm]
名前欄を20px長くしてから、上のを下のようにする。まあキャラ名の後に[r]をつけていきます。20px長くするのはもともと一行しか入らないサイズで名前欄を用意してるのに[r]で改行するからその分。入れないと自動でクリック待ちが入ります。
[current layer=message1]ハル[r] [current layer=message0]眠そうだね[p][cm] [current layer=message1]こー[r] [current layer=message0]昨日夜遅くまでテレビ観ちゃってたからなあ……[p][cm] [current layer=message1]ハル[r] [current layer=message0]駄目だよ、ちゃんと夜は眠らないと。[wait time="200"]観たいテレビは録画すること[p][cm]
すると擬似的にこんなんなります。これでやるにしても微調整が必要。
;marginR = 30;
スクロールバーの分右マージンを長くしないとスクロールバーと文字がかぶることがあります。しかしこれももともとの仕様だけど右揃え汚いなあ。
[call storage="snow.ks"] [backlay] [snowinit forevisible=false backvisible=true] [trans method=crossfade time=2000] [wt]
裏画面で雪を降らせ表にクロスフェードさせています。使うなら呼び出しは最初の方でやるの推奨です。ちなみに上記履歴スクロールバーのスクショに雪エフェクトが写っています。量などは調節可能。
[backlay] [snowopt backvisible=false] [trans method=crossfade time=2000] [wt] [snowuninit]
裏画面で雪を止ませ表にクロスフェードさせています。
;recordHistoryOfStore = 2;
自動通過記録の設定です。2を指定すると選択肢ごとに記録するので「あっ!これフラグ折ったかも」と気づいたときに時間を巻き戻すことができます(?まだ実験してません)。便利です。
初期値は0で自動通過記録を行わない。1だとラベル通過ごとです。recordタグで任意の位置で通過記録させることもできます。
Copyright (C) 柘榴荘 Some Rights Reserved