トップページへ戻る


テキストに表情をつける
 
「さて今日は、画面に文章を表示する上でいろいろと役に立つ機能を勉強しよう」

「なーんか、ぢみだなー」

「地味か?」

「だってそーでしょもー。画像でかっくいートランジションとかするのは、はでだもん! んでも、もぢをいろいろやんのわ、ぢみだもん」

「そんなことないぞ。たとえば文字の表示速度について言えば、ずっと同じ速度の一本調子で表示させるよりも、シナリオの場面に合わせて速くしたり遅くしたりするだけで、ぜんぜん違った印象になるじゃんか」

「そーかなー」

「文字の表示のさせ方にだって同じことが言えると思うよ。行単位で表示した方が効果的な時もあるし、一文字ずつの方がいい場合もあるし、切れ切れに言う様子を表現したければ、文節ごとに間を取るようなことも必要になってくる」

「そーいえばそーだねー。意外にいろいろあんだねー」

「ってなわけで、まずは文字の表示速度と表示方法に関するテクニックを学ぼう。何か適当なスクリプトはあるか?」

「こんなのわ、どー?」


(前略)

入り口のすぐ左手の壁際を見ると
古めかしい大きなオルガンが置いてある。[l]

長い間誰も使わなかったのだろう、
それは静かに埃にまみれたまま
悠久の年月に身を委ねながら朽ちようとしていた。[l]

ぼくは魅入られたようにオルガンに近づくと
フタを開けてみた。[l]

外観とは異なり、鍵盤はまだ新しそうに見える。[l]

ペダルを軽く踏みながら鍵盤の一つを押してみたが
音は鳴らなかった。[p]
[er]\
「鳴るわけないじゃない」[l]

恐怖を紛らわせるためか、
背後の[emb exp=f.name2]がわざと呆れた口調で言う。[l]

ぼくは軽くうなずくとオルガンから離れた。[l]

それから、何の気なしに
オルガンの脇の壁際の通路に視線を滑らせた。[l]

通路は白骨でいっぱいだった。

反射的に左右を見回したぼくは、
無意識のうちに後ずさりをしていた。[l]

「どうしたの? 何があったの?」[l]

「来るな!」[l]

(後略)

「なるほど。この文章を一本調子で表示させていたら、あんまり面白くないな」

「そーだもん」

「それじゃ聞くが、この文章の中でクライマックスを設定するとしたら、どこにする?」

「ここだもん! ここー!」


(前略)

それから、何の気なしに
オルガンの脇の壁際の通路に視線を滑らせた。[l]

通路は白骨でいっぱいだった。

反射的に左右を見回したぼくは、
無意識のうちに後ずさりをしていた。[l]

(後略)

「ここで、どきーっとかさせたいんだもん。んでもって、今までのBGMを突然止めて、こわーい音楽を一瞬だけ鳴らしたいんだなーこれが。じゃじゃーん、とかゆっちゃって」

「鳴らせばいいだろ?」

「どーやんのよもー!」

「こうする」


(前略)

それから、何の気なしに
オルガンの脇の壁際の通路に視線を滑らせた。[l]

[stopbgm]\
通路は白骨でいっぱいだった。
[playbgm storage="shock.mid" loop=false]\
[wl]\

反射的に左右を見回したぼくは、
無意識のうちに後ずさりをしていた。[l]

(後略)

「前行の『視線を滑らせた。』を読んでからエンターキーを押すと、流れていたBGMが止まり、『通路は白骨でいっぱいだった。』という文が表示されるのと同時に shock.mid という短いMIDIファイルが一度だけ鳴る。それが再生終了してから次行の『反射的に左右を……』が表示される」

「質問が、3こあんもん」

「何だ?」

[playbgm] タグの後ろにある loop=false ってなんなのかなー? すきゃんてぃそんなのわ見たことないもん」

「これは最近のバージョンから搭載されたBGMのループ制限機能だ。通常は省略して使って構わないが、指定のBGMを一回だけ演奏したい場合に loop=false をつけてやる」

「それぢゃー、デモシーンのテーマソングのBGMなんかにも使えるねー」

「そうだな」

「それぢゃー2こめ。あんで『通路は白骨でいっぱいだった。』のおしまいにわいつもの [l] がないのかなー?」

「もちろんつけてやってもいいが、ここではユーザーに改行させないで、自動的に次の行が表示されるようにした。 [playbgm] で指定した短いジングルと同期する意味でね」

「それってひょっとして、3こめの質問の [wl] とかんけーあんのかなー? [wl] ってなによもー! すきゃんてぃ見たことないもん!」

[wl] タグは [playbgm] タグが loop=false になっている場合のみ有効に働く。なぜこんなことをしたのかと言えば、お前の二つ目の質問と関係がある」

「ほらーほらーやっぱりー!」

[l] をつけなかった理由にもなるが、shock.mid という短いジングルがループせずに鳴っている間『通路は白骨でいっぱいだった。』の文章が表示されていて、ジングルが鳴り終えると自動的に次の行が表示されるようにしたわけだ」

「なるほどねー。どきーっとかする音楽が一回鳴り終えるまで待ってて、それから自動的に次の行へ行くんだねー」

「そういうこと」

「それぢゃー、実行してみよーかなー」

「してみなさい」

「んーんーんー」

(ただいま実行中)

「んー、なーんかまだ変だもん」

「だろ?」

「きんちょーしたシーンなのに、文字が1こづつ出てくんのわ、変だなー」

「というわけで、こういう時にこそテキスト文章の表示速度を変更するわけだ。こんなふうに」


(前略)

それから、何の気なしに
オルガンの脇の壁際の通路に視線を滑らせた。[l]

[stopbgm]\
[delay speed=nowait]\
通路は白骨でいっぱいだった。
[playbgm storage="shock.mid" loop=false]\
[wl]\
[delay speed=user]\

反射的に左右を見回したぼくは、
無意識のうちに後ずさりをしていた。[l]

(後略)

「これなら文字がバッと一気に表示されるし、短いジングルにも合うだろ」

「ほんとだー。最初と比べてぜんっぜんっ雰囲気が違うねー」

「それから、こんな例も挙げておこう」

[delay speed=100]「眠るな! 寝たら死ぬぞ」[l]
[delay speed=200]「大丈夫、ちゃんと起きてるわよ」[l]
[delay speed=100]「おい、寝るなってば」[l]
[delay speed=300]「大丈夫大丈夫、ちゃんと起きてるから……」[l]
[delay speed=100]「本当か? おい、寝ちゃだめだ!」[l]
[delay speed=400]「起きてるって言ってるでしょう……」[l]
[delay speed=100]「寝るな! 寝るな! 寝るな!」[l]
[delay speed=500]「寝てないわよ……[delay speed=600]あたしは[delay speed=700]寝てなんか[delay speed=1000]ぐう……」[l]
[delay speed=user]

「きゃははー! 雪山で凍死しそーだもんねー!」

「こんな感じで、シナリオの内容によって文字の表示速度を変えてやるだけでも、随分と違った印象になるから試してみるといいよ」

「んねーねー」

「何だ?」

「セリフの途中で何秒か待つような効果を出したい場合は、どーすればいーの?」

「たとえば?」

「たとえば、こんなの」

呆然としているぼくに、彼女はすがりついてきた。[l]

「あたしのこと、[l]嫌い?[l]
 こんなことを言う、女なんて、[l]嫌い?[l]
 こんな時に、誘う女なんて、[l]嫌い?[l]
 こんな時じゃないと、本当の気持ち、告げられない、
 女なんて、[l]嫌い?」[l]

「これねー、全部の行の最後が『嫌い?』になってるけど、そのまえにちょこーとだけ間を置きたいんだよねー」

「ははぁ。でも、間を取る方法がわからないから [l] タグを使っているわけか」

「そーなの」

「それじゃここでまた一つ新しいタグを覚えよう。[wait] タグだ」

「ふーん」

「このタグはうまく使うと面白いことができるけど、ここでは [wait time=***] で覚えておけばいい。**には待つ時間が入り、単位はミリ秒だ」

「それぢゃー、0.5秒待ってみようかなー」

「書いてごらん」

呆然としているぼくに、彼女はすがりついてきた。[l]

「あたしのこと、[wait time=500]嫌い?[l]
 こんなことを言う、女なんて、[wait time=500]嫌い?[l]
 こんな時に、誘う女なんて、[wait time=500]嫌い?[l]
 こんな時じゃないと、本当の気持ち、告げられない、
 女なんて、[wait time=500]嫌い?」[l]

「うん、それでいい」

「なるほどねー、[delay speed=***][wait] を組み合わせんといろんな表示ができんだねー」

「そういうこと。ただ漫然と表示させるんじゃなくて、シナリオの情景にあった表示方法を選択していくことで、ゲーム自体の雰囲気もよくなっていくと思うよ」

「んでも、ゲームを作る側がこんなに勝手にいろいろできちゃって、いーねー」

「何度も言うようだが、それこそがKAGの最大の魅力なんだよ。トランジションやマクロみたいな派手な機能や仕様だけでなく、こういう細やかな部分でもその自由度は保証されていることを覚えておいてくれ」

「わかったもん」

練習日記 6日目 次へ


トップページへ戻る