現在、掲示板機能は閉鎖中です

使用するファイル

 このページの解説では、以下のファイルを使用します。あらかじめダウンロードし、CatSystem2 の scene フォルダ内にしておいてください。
 スクリプトを実行するには、CatSystem2 の「シーンリスト」ダイアログウインドウを使用します。ダイアログ下部にある「シーンスクリプトをコンパイル」ボタンを押してコンパイルし、シーンリストからスクリプトと同名のシーンをダブルクリックすることで実行できますので、以下の解説と照らし合わせながら動作を確認して下さい。

マクロファイル &macro.txt
Download
 
スクリプトファイル 0213_02c.txt
Download
 

※ダウンロードは、Downloadボタンを右クリックして、リンク先のファイルを保存して下さい。
※マクロファイルは、すでにあるファイルにそのまま上書きしてコピーしてください。

簡単な解説

 今回は 0213_02 シリーズ3部作(?)の3回目です。実はここまでの3回分ですが、オリジナルではひとつのファイルとなっていました。始めから急いでも良いことはないので、最初のうちはゆっくりと進めていきましょうね。
 ではそんなわけで、シリーズ最終回行きますよ~!(と言っても、今回で解説終わりとかそんなことはなく、次回は次のシーンに進みますのでご安心を)

ひと味違う画面切り替えを

 前回、画面の書き替えを行うには drawコマンドを使えばよいと解説しました。ほとんどの場合はそれだけで事足ります。でも drawコマンドでは全画面のクロスフェードしかできません。速度を変えれば瞬間切り替えでもゆっくりとした切り替えでも出来ますが、場面転換したり特殊な効果を出したいときは、それだけじゃ物足りなくなりますよね。
 そんな要望にお応えして、今回はワイプという機能を使って画面を書き替えてみましょう。

 まずは上の画像を見てください。これは画面を切り替えている最中に、間隔をおいて取り込んだ、5枚の連続画像になっています。
 左端の画像から右端の画像へと少しずつ切り替わっている様子を表したものですが、画像の下側の部分から徐々に新しい画像へと書き換わっていっているのが理解していただけますでしょうか。
 テレビや映画などで時折使われる技法ですが、これがワイプという機能です。でも実はアドベンチャーゲームの演出では、このままの手法はあまり使われていません。実際に多用されているのは下の画像のような手法です。

 先ほどの画像とこの画像との違いがわかってもらえるでしょうか。
 どちらも同様に、画面の下側から上側に向かって新しい画像に書き替えられていますが、後者のほうが見た目にスムーズに書き替えられているのがわかるはずです。CatSystem2で言うところのワイプ機能というのは、前者のような書き替え方法ではなく、ほとんどの場合後者のほうの書き替え方法のことを表します。(他のゲームエンジン等ではトランジションと呼ばれたりもしています)
 さて、機能がわかったところで実際の使用方法を解説したいと思います。

9行目~
	cg 1
	bg 2 bg_otoko
	cg 2 scale 100% 100%
	cg 2 bJ01,1,1,1,1,1,1 400 200
	wipe wipe15 40
	
	……むむ。

 今回のスクリプト内で、先ほどの画像のような切り替えをしている部分が上記のソースです。
 cg命令やら bg命令やら入り交じっているので一瞬混乱しそうですが、注目するのは13行目の wipe命令のみです。この wipe命令を前回解説した draw命令に置き換えれば、ワイプではなくただのクロスフェードになります。要するに、ワイプ機能を使いたい場合は、draw命令の代わりに wipe命令を使うだけと言うことです。
 ただちょっと待ってください。draw命令を使う場合はただ draw とだけ書くか、書き替え速度を変えたい場合にパラメータとして後ろに時間指定を加えるだけでした。でも、wipe命令の場合は、時間を指定するパラメータの前に、何か余分な物が付いているようです。マニュアルで確認すると、どうやら「ワイプ画像ファイル名」ということらしいです。
 ファイル名は拡張子が省略されているので、"wipe15" に画像ファイルの拡張子".hg3" をつけて"wipe15.hg3" というファイルを探してみましょう。このファイルはダウンロードページから落としたワイプ画像というデータの中に入っていますので、今は image フォルダの中にコピーされているはずです。
 さて、無事見つけられたらどんな画像か確認を……しようと思ったら「ファイルが開けません」なんて怒られた人はいませんか? そんな人のために良いものを用意してあります。CS2フルセットの中を確認してみて、tool/plugin/susie というフォルダ階層の中身を確認してみてください。axhg3.spi と ifhg3.spi という2つのファイルが入っているはずですが、これはsusie というツールで HG3形式の画像を表示するための、プラグインというものです。susieプラグインを知らないという方は、google等の検索エンジンで"susie 使い方"などのキーワードで検索してみてください。正しく設定できれば、この susie というツールで画像を確認できるはずです。

 さて、やや話がそれましたが、うまく画像を表示できた場合、"wipe15.hg3" は上のような画像であることが確認できるかと思います。
 先の書き替えの例では、画像の下側から上側に向かって徐々に書き換わっていました。そして、この画像では下側から上側に向かって徐々に(白から)黒に色が変化していっているのがわかるかと思います。ワイプ機能ではこういった画像を使うことで、画像のどの部分を先に切り替えてどの部分を最後まで切り替えずに残すのかを指示して、様々な書き替えパターンを表現することが出来ます。
 サンプルではワイプ画像として何種類もの画像を含めていますので、「習うより慣れろ」ということで他の画像も色々と試してみてください。先ほどのスクリプト内で "wipe wipe15 40" などとなっている部分の"wipe15" を他のファイル名に変えてみるだけですので難しいことを考える必要はありません。"wipe07" でも "wipe08" でも "wipe14" でも、何でも好きなファイルを指定してみてください。
 どうですか、色々な書き替えパターンを確認できたでしょうか。感覚として慣れてくれば、あとはいくらでも好きなようにワイプ画像を作ってみてください。思うようにいったり、予想とは少し違ったイメージだったり、多少は試行錯誤が必要かもしれませんが、効果的な書き換えができたときはとっても爽快な気分になれると思います。基本は「習うより慣れろ」! 色々と試してみてくださいね。
 あ、最後にひとつだけ注意があります。自分で画像を作るときは、ワイプ画像はグレースケールではなくRGB画像で作ってくださいね。(正確にはRGB各8bit の 24bit 画像です)

 余談にはなりますが、wipe命令の他に、wipe2命令というものもあります。これは最初のほうでアドベンチャーゲームの演出ではあまり使われていないと説明した、クロスフェードを行わない、本来の意味でのワイプ機能です。もし使いたい気分になったときはご自由にどうぞ。

マクロで楽ちんコマンド

 スクリプトを組んでいると、以前使った同じような演出や動きを使い回ししたいと思うことも出てきます。そんなとき、あなたならどうするでしょうか。
 とりあえず、前に組んだ演出部分のスクリプトをまとめてコピーして、今組んでいるところにペースト(貼り付け)して、ちょこちょこっと手直しして、はいOK! ……でもまあいいです。コピーする部分が少なかったり、使い回す回数がほとんどない場合は。
 でもでも、何度も使い回ししたい場合や、複数の人間でスクリプトを組む際にみんなで同じ演出(動き)を共有したい場合などに、とっても便利な機能があります。それがマクロ機能です。まずは実際にマクロを使っている部分を見てください。

201行目~
すもも	「ふふふ、冗談ですよ。でも、兄さんがまた約束を破るなんて言い出したら
	どうなるかわからないですけどね~」¥@
	
	cg 1 bd02,2,1,0,5
	draw
	wait
	%move_DU01 1
	wait
	wait 30
	cg 1 bd01,2,1,2,2,1
	draw
	
	¥n

 上のスクリプトの中に、見慣れないコマンド(のようなもの)がありますね。"%move_DU01 1" という部分です。
 これがマクロ機能で、事前に準備しておいた演出を何度でも自由に呼び出せる機能のことを表します。この場合、事前の準備は、&macro.txt というファイルの中で行っています。
 "%move_DU01 1" の中で、空白文字までの "%move_DU01" がマクロ命令になり、後ろの "1" はパラメータを表しています。まずは先ほどの &macro.txt の中で、"%move_DU01" というマクロを定義(準備)している部分を探してみましょう。

%move_DU01
//うなずき
	cg %1[0] spline 15,@,@+20 10,@,@

 上の箇所が、 定義(準備)している部分に当たります。
 1行目の部分はマクロを何という名前で定義するのかを表している部分で、そのままマクロ命令と同じになっています。2行目以降がその中身となります。(この場合、2行目がコメントなので実質3行目部分だけになりますが、必要であれば中身は何行でも何十行でもかまいません)
 スクリプト内で事前に定義してあるマクロ命令を記述すると、その部分がマクロの中身にごっそりと置き換えられる、というのがマクロの基本的な機能です。なので、先ほどのスクリプトでは下のように解釈されることになります。

すもも	「ふふふ、冗談ですよ。でも、兄さんがまた約束を破るなんて言い出したら
	どうなるかわからないですけどね~」¥@
	
	cg 1 bd02,2,1,0,5
	draw
	wait
	cg %1[0] spline 15,@,@+20 10,@,@
	wait
	wait 30
	cg 1 bd01,2,1,2,2,1
	draw
	
	¥n

 先ほどのマクロ "%move_DU01" の部分が、その中身に置き換えられています。今回の場合は中身が1行だけですのでありがたみは薄いですが、それでもパラメータが煩雑だったりする場合には役に立ちます。それに、スクリプトを組んだ後にマクロの定義部分を調整することによって、マクロを使っている全ての箇所の動きを一括で調整することも出来るのです。
 なので、同じような演出を多用する場合にはマクロをたくさん定義しておくと良いと思います。

 あっと、肝心なことの説明がまだでした。
 "%move_DU01 1" の中で、空白文字より後ろの "1" はパラメータを表しています、と先の方で説明しました。マクロにはパラメータをつけることができるのです。
 パラメータは、定義部分で %1 などと書くことによって、マクロの中身の一部分を置き換えることができるようになっています。上記のマクロの中身を置き換えた例で言うと、赤い文字になっている部分がマクロの内容、そして青い文字になっている部分 "%1[0]" の箇所がパラメータで置き換えられる部分を表しています。
 さっきの例では、パラメータが "1" となっているので、この青い部分が "1" で置き換えられることになります。先ほどのスクリプトをさらにパラメータ部分まで置き換えると、下のようになります。

すもも	「ふふふ、冗談ですよ。でも、兄さんがまた約束を破るなんて言い出したら
	どうなるかわからないですけどね~」¥@
	
	cg 1 bd02,2,1,0,5
	draw
	wait
	cg 1 spline 15,@,@+20 10,@,@
	wait
	wait 30
	cg 1 bd01,2,1,2,2,1
	draw
	
	¥n

 いかがでしょうか、青い部分がパラメータで置き換えられた箇所です。これが最終的にスクリプトとして解釈される内容となります。少しややこしいですね、でも理解するだけの価値があるものですので是非とも慣れてください。

 さて、さらに話がややこしくなりそうですが、マクロのパラメータにはデフォルト値というものを定義することができます。これが何のために必要なのかというと、マクロを使用するときに、パラメータを省略することが出来るようにするものなのです。
 先ほどのマクロ定義では、パラメータ部分が "%1[0]" となっていましたが、この中で [] で括られた赤い部分がデフォルト値を意味しています。
 先ほどの例では、パラメータを省略していなかったため、

	%move_DU01 1cg 1 spline 15,@,@+20 10,@,@

 上のように、パラメータ部分が置き換えられていましたが、もしパラメータを省略した場合、

	%move_DU01 cg 0 spline 15,@,@+20 10,@,@

 このように、デフォルト値として [] で括られた中身である 0 がパラメータが入るべき部分に置き換えられることになります。理解できましたでしょうか。
 もしよくわからない、という場合はパラメータを省略しなければデフォルト値を気にする必要はありませんので、それでも大丈夫です。

 さあ、話がずいぶんややこしくなってきましたが、最後にもうひとつだけ説明することが残っています。それは、マクロにつけられるパラメータはひとつだけではないということです。
 先ほど、パラメータ部分は "%1[0]" などと定義していましたが、この %1 の部分を、さらに %2 や %3 など、最大で %9 までの9つのパラメータを定義することが出来るのです。複数のパラメータを定義した場合、例えば以下のようなマクロを組むことが出来ます。

%em_ai3
	//%em_ai3 [no] [x] [y] [plane]
	//タライ落下
	fg %1[0] waterpan %2[400] %3[0]-540 %4[1]
	fg %1[0]+1 waterpan2 %2[400]-50 %3[0]-10 %4[1]
	fgdisp %1[0]+1 0
	draw 1 %4[1]
	
	fg %1[0] move 14 @ @+500
	wait

 ややこしくなりすぎるので上記のマクロの解説は省きますが、複数のパラメータを使用することによって、まるで新しい命令を作ったかのような記述が出来ることになります。CatSystem2 のスクリプトは比較的シンプルな割に、組み合わせ方が柔軟なため、マクロを駆使することによってあたかも複雑な命令が搭載されているかのようにスクリプトを組むことも不可能ではないかと思います。
 なお、スクリプト内でパラメータを複数使用する際は、それぞれのパラメータを空白で区切ることになりますが、例えば上のマクロを "%em_ai3 2 400 0" などと使用した場合、%1 には 2 が、%2 には 400 が、%3 には 0 が置き換えられ、%4 にはパラメータが省略されたとみなされてデフォルト値の 1 が入ることになります。
 以上で、マクロ機能の説明はだいたい終わりです。実際に使用する際には、リファレンスのほうも確認しながら有効活用してみてください。

 ちなみに、リファレンスには書かれていませんが、マクロの名前には日本語(2バイト文字)も使用することができますので、%move_DU01 などではわかりづらいという場合には、%うなずき などという名前をつけても一向に問題ありません。