オープニングデモのサンプルスクリプト
どんなゲームでもジャンルを限定せず、オープニングの構造と言うのは大体決まっていたりする。
- 最初にオープニングムービーやロゴ
- ゲームの選択画面:ゲーム開始とかコンフィグとかを選ぶ画面
- 2の選択画面に長時間操作しないでいると、ムービー開始。
- ムービー中にクリックとかすると、2に戻る。
この、2〜4を実現するサンプルスクリプトを作ってみた。
00.txt
*define mov %0,100 numalias bexec,%0:inc %0 ; bexecで使う専用変数を定義 mov %1,100 numalias sp_button,%1:dec %1 ; ボタンのスプライト番号を定義 deletemenu game *start *opening ; オープニングの初期設定 *opening_init ; ボタン(にする予定)の表示 lsp sp_button,":s/24,24,0;#FFFFFF#00FF00#FF0000ゲームを始める。",100,100 ; BGMを流す。 dwave 0,"bgm.ogg" ; bgmではなくて、dwaveのチャンネル0でやるのが味噌 ; オープニングのループ *opening_loop print 10,2000 ; ボタンを表示。2秒かけて。 ;ボタン処理 bclear ; 初期化 bsp sp_button ; 100番のスプライトをボタン化 btime 1,1 ; ",1"が味噌。これでbexecがdwave 0が終了するまで待つことになる。 bexec $bexec,%bexec ; 入力待ち if $bexec="TIMEOUT" gosub *opening_demo ; タイムアウト、つまりオープニングをBGMが一周するまで何もしなかった場合。 if %bexec=sp_button gosub *opening_end:goto *game_start ; オープニング画面を消して、ゲームを始める。 goto *opening_loop ; ループさせる。 *opening_end csp sp_button ; 使ったスプライトを消す。 dwavestop 0 ; 音を消す。 return ; オープニングムービーのルーチン *opening_demo movie "op.mpg",pos,0,0,640,480,click return *opening_init *game_start print 10,2000 ; 画面を整える。 ゲームが始まったよー。\ end
実際に動かす時は、bgm.oggとかop.mpgとかを自前で用意すること。
で、少々動きに嘘があって、関係ないところをチカチカクリックしていても、BGMが一周すると必ずムービーに突入する点かな。
このスクリプトの利点は、BGMの長さがどれくらいか意識する必要がないと言う点。
もし、事前にBGMの長さがわかっているか、BGMの長さを無視してムービーに突入したい場合は、次のスクリプトになる。
*define mov %0,100 numalias bexec,%0:inc %0 ; bexecで使う専用変数を定義 mov %1,100 numalias sp_button,%1:dec %1 ; ボタンのスプライト番号を定義 deletemenu game *start *opening ; オープニングの初期設定 *opening_init ; ボタン(にする予定)の表示 lsp sp_button,":s/24,24,0;#FFFFFF#00FF00#FF0000ゲームを始める。",100,100 ; BGMを流す。 bgm "bgm.ogg" ; オープニングのループ *opening_loop print 10,2000 ; ボタンを表示。2秒かけて。 ;ボタン処理 bclear ; 初期化 bsp sp_button ; 100番のスプライトをボタン化 btime 180000,0 ; bgmの長さが180秒、もしくはそれとは関係なく操作無し状態から180秒でムービーに突入。 bexec $bexec,%bexec ; 入力待ち if $bexec="TIMEOUT" gosub *opening_demo ; タイムアウト、つまり操作無しで180秒経過した場合。 if %bexec=sp_button gosub *opening_end:goto *game_start ; オープニング画面を消して、ゲームを始める。 goto *opening_loop ; ループさせる。 *opening_end csp sp_button ; 使ったスプライトを消す。 bgmstop ; 音を消す。 return ; オープニングムービーのルーチン *opening_demo bgmstop ; bgmを消す。 movie "op.mpg",pos,0,0,640,480,click return *opening_init *game_start print 10,2000 ; 画面を整える。 ゲームが始まったよー。\ end
注意
こんなんメモだけどね。忘れてもその場で作れるくらいのシロモノだけど。