このページの解説では、以下のファイルを使用します。あらかじめダウンロードし、CatSystem2 の scene フォルダ内にしておいてください。
スクリプトを実行するには、CatSystem2 の「シーンリスト」ダイアログウインドウを使用します。ダイアログ下部にある「シーンスクリプトをコンパイル」ボタンを押してコンパイルし、シーンリストからスクリプトと同名のシーンをダブルクリックすることで実行できますので、以下の解説と照らし合わせながら動作を確認して下さい。
マクロファイル | ¯o.txt |
Download
|
|
スクリプトファイル | 0213_04.txt |
Download
|
|
※ダウンロードは、Downloadボタンを右クリックして、リンク先のファイルを保存して下さい。
※マクロファイルは、すでにあるファイルにそのまま上書きしてコピーしてください。
実践スクリプト 0213_04 編、このシーンのうちに解説しておきたいことが多いため、今回は同じスクリプトを利用して前編と後編の2回に分けてお送りしたいと思います。
では早速行ってみましょう!
ADV(アドベンチャー)ゲームを作っていると、時にメッセージ自体に彩りを付けたいことがあります。手法としては、それがAA(アスキーアート)っぽいものだったり、メッセージ自体の色をカラフルにしてみたり、その方法はいくつか考えられるかと思います。(現在のCS2では環境設定を変更することで、フォントに固定ピッチフォントだけでなく、プロポーショナルフォントを可変幅で表示することも可能なため、AAを使うのは現実的ではありませんが……)
そこで今回は、メッセージに絵文字(グラフィック)を使う方法を説明していきたいと思います。
実際に絵文字を表示させるために若干の手順がありますが、まずはその書式から見ていくことにしましょう。
準 「心配しなくても雄真には本命をあげるからダイジョウブ」¥@ cg 1 bj01,2,1,3,3,5,2 draw wait wait 30 %move_DU01 1 ¥n
上のスクリプトを見てください。いつもは命令の部分に注目して貰うところですが、今回注目するべきところは1行目、メッセージの部分です。
メッセージの後ろの方に赤い色で表示されている部分がありますね。(機種依存文字なので、ここでは画像で表示しています)
この「」が、CS2のシーンスクリプトにおいて絵文字を表示するための表記になります。では実際のゲーム画面で確認してみましょう。
上の画像と若干違うかも知れませんが、先ほどの「」がハートの絵文字に置き換わって表示されていますね。どうしてこのように表示されるのでしょうか?
この仕組みを理解するために、思い切ってファイルをひとつ消してしまいましょう!
一旦 CatSystem2 を終了し、image フォルダの中にある、"sys_userfont.hg3" というファイルを削除してみてください。間違って他のファイルを消してしまわないようにちゃんと確認して下さいね。もし消してしまうのが不安な方は、違うファイル名に変更してファイル自体は残しておいても構いません。
さて、"sys_userfont.hg3" を消したら改めて CatSystem2 を起動し、再度スクリプトを実行してみて下さい。今度は下の画像のように、「」がそのまま表示されているはずです。
どうやら、さっきの絵文字は先ほど消したファイルが関係しているのがわかりましたね。
では今度は、先ほど消したファイルをもう一度作ってみましょう。実は先ほどのファイルの元になっているサンプルデータがちゃんと用意されているのです。
CatSystem2のセットの中に「サンプル画像」というフォルダがありますのでその中身を確認して下さい。その中に、"CS2用_外字.psd" というファイルがあるのがわかりますか? 先ほどのファイルを作成するには、付属のツールを使用してこれをコンバートすればいいわけです。
が、コンバートを行う前に中身がどうなっているのかちょっと確認してみたいですね。Photoshop や SAI 等の、PSD画像をレイヤー状態のまま読み込めるグラフィックツールをお持ちの方は、"ユーザーフォント.PSD" を開いてみてください。
上は、Photoshopで "ユーザーフォント.PSD" を読み込んだときのレイヤーの状態です。画像自体は、全てのレイヤーが重なって表示されてしまって見づらいですが、この状態であればなんとなくどういうものなのかわかりますね。
ちなみに先ほどの「」は、そのまま同じ数字に対応する「@(1)」のレイヤーの画像(絵文字)に対応することになります。内容が確認できればここではこれ以上することがありません、早速コンバートしてしまいましょう。
CS2のツールの中に、WGC.exe というプログラムがあります。これが画像変換ツールですので起動し、"CS2用_外字.psd" をドラッグ&ドロップで放り込み、WGC の設定メニューを開いてください。
設定が上のようになっていれば問題ありません。もし違うようであれば上のように設定してOKボタンを押してください。
設定が問題なければコンバートを行います。コンバートを確実に行うために、ここでは「全てコンバート!」を実行してください。
正しく実行された場合、"sys_userfont.hg3" というファイルが作成されたはずです。これをCatSystem2 の image フォルダにコピーしてください。そして再度、先ほどのスクリプトを実行してみると……。
どうですか、ちゃんと上の画像のように表示されましたでしょうか? 絵文字は現状「」から「
」までの最大9種類の画像を使用できるようになっています。
ただし当然ですが、先ほどのPSDデータでは5種類の絵文字しか用意していませんので、それ以上の絵文字を使いたい場合には新たに作成して、変換前にレイヤー名も正しく設定しなければいけませんのでご注意ください。
ちなみに、絵文字の画像サイズは決まっていませんので、これより大きな画像を用意しても問題ありません。ただし、CS2上で表示される際には、メッセージの文字サイズに自動的に拡大縮小されて表示されることになりますので、これも気を付けてくださいね。
では次に行きます、今回もメッセージ関連です。スクリプトを見る前に、まずは実行結果のほうを先に見てしまいましょう。
いかがでしょうか? ここではルビ(ふりがな)の使い方を説明したいと思います。
上の画像では、「高峰」の文字に「たかみね」とルビを振り、「小雪」の文字に「こゆき」とルビを振っています。「高峰 小雪」に「たかみね こゆき」と振っているわけではなく、苗字と名前に分けて、それぞれにルビを振っている状態です。
では、こういった表示をするためにスクリプトではどう記述しているのか、確認してみましょう。
[高峰/たかみね] [小雪/こゆき]さん。
いかがでしょうか?
たったのこれだけです、単純明快ですね。
ルビを振るためには、文字とルビを "[" と "]" で挟み込み、間を "/" で区切るだけです。このときに、"/" の手前側に表示する文字を、後ろ側にルビを書くようにしてください。逆にしてしまうと当然、文字とルビが入れ替わってしまいます。
上の画像を見てください。文字とルビを逆に書いてしまった場合はこのようになります。万が一間違って書いてしまった場合でも、一度動作確認すればすぐに気付きますね。
ここでひとつ何か気付いた方、あなたは勘が鋭いです。そうです、ルビには平仮名や片仮名以外に、漢字も使うことができます。もちろん漢字に限らず、記号でも何でもOKです。
たとえば、「すもももももももものうち」という、一見わかりづらい文があった場合でも、「[すもも/・・・]も[もも/・・]も[もも/・・]のうち」などと、強調表示っぽく見せるなど、必要に応じて色々と応用できるかと思いますので自由に使ってみてくださいね。
ここではキャラの大きさを変えて表示する方法、つまり拡大縮小して表示を行うやり方を説明したいと思います。説明を行う前に、まずは表示結果の違いを見ておいたほうがわかりやすいかと思いますので、下の2つの画像を見比べてみてください。
いかがでしょうか? 画像右端の黒髪のキャラ(小雪)に注目してみてください、2つの画像で大きさが違うのがわかりますね。これは右側がオリジナル画像そのままのサイズで、左側はスクリプトで縮小表示している状態になります。
では、これはどうやって行うのでしょうか。早速その方法を説明……と行きたいところなのですが、その前に話しておかなければいけないことがあります。実は、その方法はひとつだけではなく、二つの異なった方法が用意されているのです。
方法が二つもあるとどっちを使ったらいいか困る、と思われるかもしれません。ですが迷う必要はさほどありません。手法としては、プレーンを使わない方法とプレーンを使う方法とがありますが、基本的にはプレーンを使わない方法を選ぶ、ということで問題ありません。
プレーンを使う方法を選択する必要がある場合というのは、「拡大縮小表示を行う」という目的とは別に「プレーンを使う他の理由がある場合」か、リアルタイムで倍率を変化させる必要がある場合に限られます。とりあえず今回はそういった必要性もないシーンなので、プレーンを使わない方法を説明していきたいと思います。
//SE ひょこっ //小雪エプロン私服 //跳ねるような動き cg 0 scale 75% 75% cg 0 bc01s,6,1,0,1 1080 200 wait cg 0 arc 30 0 180 50 10 wait se 0 se103 cg 0 arc 30 0 180 15 10 雄真 「ん?」 //SE ひょこひょこっ //SE ぴょん //何回か跳ねるような動き se 0 se103a cg 0 arc 30 0 180 15 10 wait 雄真 「あれは……小雪さん?」¥@ cg 1 bj01,2,1,4,1,1,b 250 200 draw wait cg 0 arc 40 360 180 30 5 wait wait 10 cg 0 arc 40 360 180 30 5 wait wait 15 se 0 se103a cg 0 arc 30 0 180 15 10 ¥n
では上のスクリプトを見てください。ちょっと長いようですが、関係しているのは色のついている部分だけです。
赤い色で表示されている行が、画像を縮小するための指示をしている箇所に当たります。どうやら、scale というのがそのための命令のようです。まずはマニュアルで scale命令を確認してみましょう。
確認すると、後ろの2つのパラメータが「X方向倍率」と「Y方向倍率」を表しているのがわかります。ということは、どうやら縦と横とで倍率を別々に変えられるようです。でもキャラクターの表示で倍率を別々にしてしまうと、妙に太ったり妙に痩せて表示されてしまうので、それは避けたいところですね。ですから、基本的には倍率は同じものを2つ並べてパラメータの記述をしたほうが良さそうです。
さて、これで倍率を指定する方法はわかりました。ではどういう仕組みで拡大縮小が行われるのでしょうか。
実はこの scale命令自体は実際に拡大縮小を行うコマンドではないのです。ではどういうことかと言うと、これ以降に読み込む画像を(読み込みの際に)自動的に拡大縮小させるための命令なのです。つまり、実際に拡大縮小が行われているのは、先ほどのスクリプトの赤い色の行ではなく、青い色の行で拡大縮小が行われている、ということになります。
そこで、とりあえず青い色の行を見てください。座標などの指定はしていますが、この部分は「ただ画像を読み込むだけ」の命令になっています。要するに、scale命令で倍率が指定された後は、画像を普通に読み込んだだけで、勝手に自動的に拡大縮小されてしまうようになる、ということなのです。
一見、ちょっと困る仕様のように見えますが、立ちキャラのCGを表示する場合、頻繁に表情やポーズを変えることがありますね。そんな場合に、画像を読み込む度にいちいち倍率を指定するのは煩わしいですし、一度スクリプトを組んだ後に倍率を調整したい場合に全部の倍率指定を修正するのは面倒です。なので倍率指定は一カ所にまとめられていた方が実は都合が良いのです。
ただし、この倍率指定が有効なのは指定した特定のバンクの画像だけです。今回のスクリプトでは、"CG 0 scale ……" と書かれているので、この倍率指定が有効なのは、CG の 0番だけになります。CG の 1番や、EG・FG等 の 0番にも影響ありません。他のバンクの画像も倍率を変えたい場合には、ちゃんとそれぞれに倍率指定してあげる必要がありますので注意してください。
さて、ここまでで画像を任意の倍率で表示させる方法はOKのはずです。ですが、それを元に戻す(拡大縮小しない状態にする)ためにはどうしたら良いのでしょうか。そのための方法は二つあります。倍率を 100% に指定するか、一度画像を消去(破棄)するかです。
とりあえず下のスクリプトを見てください。
cg 0 scale 75% 75% cg 0 bc01s,6,1,0,1 1080 200 draw ここでは75%表示 cg 0 bc01S,6,1,0,2 draw ここでも75%表示 cg 0 scale 100% 100% cg 0 bc01S,6,1,0,3 draw ここでは通常(100%)表示 cg 0 bc01S,6,1,0,4 draw ここでも通常(100%)表示 cg 0 scale 75% 75% cg 0 bc01S,6,1,0,8 draw ここでは75%表示 cg 0 bc01S,6,1,0,9 draw ここでも75%表示 cg 0 cg 0 scale 100% 100% cg 0 bc01S,6,1,0,a draw ここでは通常(100%)表示
上のスクリプトで赤い色で書かれている範囲では、CG 0番の画像は75%の倍率で表示されています。そして、青い色の行で倍率が初期化(100%の状態)されていますので、黒い色で書かれている部分では、画像は普通に(100%で)表示されることになります。
いかがでしょうか、これで画像を拡大縮小する方法が理解していただけましたでしょうか。今回は縮小表示しか使用しませんでしたが、100%を超える倍率を指定していただければ拡大もできますので自由に設定してみてください。
ただし、画像は読み込み時に拡大縮小され、拡大縮小された状態のままメモリにおかれることになります。ですから、あまり大きな拡大率をうっかり指定してしまうとメモリを膨大に消費して、場合によっては処理が重くなってPCが固まってしまう危険性もありますので、「試しに 10000% とかやってみよう!」などと迂闊なことをしてしまわないようにしてくださいね。万が一何かトラブルが起こっても一切責任は取れません。なので『迂闊な倍率指定を行うときは自己責任で!』、これをお忘れなきようよろしくお願いしますね(笑)
では今回はこの辺で~。