「みく☆ファイト(仮称)」 AVGパートの演出・エフェクト処理が出来た


 冬コミに向けて、目玉Pやゆかりさんたちとでアクションゲーム作ってます(ブースは月西よ31)。
 (前回の日記→[XNA] AVGパートが出来た (あとC#の配列初期値について)


【サイト】みく☆ファイト
【紹介】
右も左もボスだらけ!!


緑の髪のアイツが、多彩なギミックが満載されたステージを駆け抜ける!!
リフレクションシステムを使いこなし制圧せよ!!
とりあえず体験版の敵は黄色いアイツだ!!
ペンギンコスプレのうっう〜さんもいるぞ!!


コミックマーケット75 月曜日 西 よ-31a「みく☆ファイト(仮)制作委員会」にて配布予定
(今回は体験版となります)



 
 で、僕はゲームの合間のAVGパートのプログラムを作っているのですが、やっとエフェクト処理ついたよー。
 遅くなってすみませんm(_ _)m
 今ゆかりさんが、どんどんシナリオスクリプトにエフェクト処理を組み込んでいってくれてます。すごくいい感じになってきた!
 

 開発中のスクリーンショットはこんな感じなの





 AVGシーンの絵はぽてさん画。すごく可愛いい!


 キャラのドット絵は、ゆかりさん。
 参考動画
D
 ゲーム中でもよく動きますよ〜



 ゲーム本体は横スクロールのボス対戦アクションゲームです。
 オールドゲーマーもニヤリとさせすネタ満載です。(→開発ブログ)
 開発の締め切りは12/25。がんばろー!

 

 さて、スクリプトデータについては前回も少し触れましたが、エフェクトについてマニュアル書いたので日記水増しのために貼っておこう。
 あいかわらず仕様はプログラマの都合で決まっています・・・




みくふぁいとAVGパートエフェクト指定説明書

                                                                                • -

2008.12.23 F/T


● 共通部分

 エフェクトは以下のように記述します。


new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_エフェクト名 ,"パラメーター"),


 エフェクトの種類は、「AVGPRM.エフェクト_」で始まる定数で選択してください。
 現状次のエフェクトが使用できます。
・ エフェクト_フェードイン
・ エフェクト_フェードアウト
・ エフェクト_シェイク
・ エフェクト_ターンイン
・ エフェクト_ターンアウト
・ エフェクト_フレームイン
・ エフェクト_フレームアウト


 エフェクトの効果は、パラメーターに文字列で指定します。


 エフェクトは現在選択されている枠(上・下)のキャラクターに対して行われます。
 画面全体に対するエフェクトを使う場合はパラメーターに「frame=0」と書いて下さい。


 エフェクトの実行時間は、パラメーターにtickで指定します。tickはゲームのフレーム数で、1秒間あたり60となります。
 例) 「tick=60」 ※1秒間のエフェクト


 パラメーターはスペースで区切って複数指定できます。



 フェードアウトやターンアウトしたあとは、フェードインやターンインして戻しておかないとその後表示されなくなりますので注意してください。




● 各エフェクトの説明


■ エフェクト_フレームイン
■ エフェクト_フレームアウト

 AVGパートの各パーツが画面に集結(フレームイン)、拡散(フレームアウト)します。
 AVGパートの開始時と終了時などに使用して下さい。


 パラメーターは次の項目を指定できます。

・frame=0 全体指定※必ず指定して下さい
・tick=50 エフェクト時間。フレームイン・アウトが完了するまでにかかる時間


例)new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_フレームイン ,"frame=0 tick=50"),



■ エフェクト_フェードイン
■ エフェクト_フェードアウト

 画面全体またはキャラクターをフェードイン・アウトします。
 フェードアウト時の色やフェードアウトにかかる時間を指定できます。


 パラメーターは次の項目を指定できます。

・frame=0 全体指定 ※画面全体をフェードアウト・インする際に指定してください。キャラ単位でエフェクトをかける場合は、つけないで下さい。
・tick=50 エフェクト時間。フェードイン・アウトが完了するまでにかかる時間
・color=FFFFFF フェードアウト時の色。RRGGBBの16進数で指定します。(白は FFFFFF 黒は 000000 赤は FF0000 です)


例)new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_フェードアウト ,"frame=0 tick=50 color=FF00FF"),
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_フェードイン ,"frame=0 tick=50 color=FF00FF"),

 ※画面全体をピンクにフェードアウトする(その後戻す※もどさないとフェードアウトしっぱなしになります)


例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_フェードアウト ,"tick=20 color=FF0000"),
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_フェードイン ,"tick=20 color=FF0000"),
 ※ 一瞬だけキャラを赤くする




■ エフェクト_シェイク

 画面全体またキャラクターを揺らします。
 揺れの量や揺れ方(ランダム、左右に揺れる、左右に首振り)を指定できます。


 パラメーターは次の項目を指定できます。

・frame=0 全体指定 ※画面全体をフェードアウト・インする際に指定してください。キャラ単位でエフェクトを書ける場合は、つけないで下さい。
・tick=50 エフェクト時間。フェードイン・アウトが完了するまでにかかる時間
・shake=20 揺れる量(ドット数)
・wave=10 このパラメーターが指定されている場合は、左右に揺れます。揺れの周期は数値で指定できます。(単位:tick)
・rot=1 このパラメーター(数値は1固定)が指定されている場合は、左右に首振りします。首振り量はshakeの数字で指定できます(単位:度) ※ waveと一緒に指定すると首振りのようにゆらゆら揺れます(waveの数字の周期で揺れます)


例)new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_シェイク ,"frame=0 tick=50 shake=10 wave=10"),
 ※ 画面全体を揺らします



例)new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_シェイク ,"tick=50 shake=10 wave=10"),
 ※ 指定のキャラクターだけを揺らします
 ※ びっくりしたときなどの表現


例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_シェイク ,"tick=40 shake=10 wave=10"),
 ※ 指定のキャラクターだけを左右に揺らします
 ※ 嬉しいときなどの表現


例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_シェイク ,"tick=150 shake=7 wave=30 rot=1"), // ゆらゆら
 ※ 指定のキャラクターをゆらゆら首振りします(2.5秒。7度の傾き、秒2回ゆれる)
 ※ 嬉しいときなどの表現




■ エフェクト_ターンイン
■ エフェクト_ターンアウト

 キャラクターを縦に回転します。
 ターンにかかる時間や、背景イメージ、オブションでTV的エフェクトもかけられます。
 キャラの切り替え時などに使用して下さい。


 パラメーターは次の項目を指定できます。

・tick=50 エフェクト時間。ターンイン・アウトが完了するまでにかかる時間
・bg=0102 背景のアニメーションパターンを指定します。2桁の数字の組を繰り返します。数字は、MF_FaceFrameで定義されている値です(00:通常 01:TV1 02:TV2 03:めがみん)
・tv=1 TV音時的な表現 (tv=1 と tv2を連続して使用するとそれっぽくなります)



例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンアウト ,"tick=10"),
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンイン ,"tick=10"),
※くるっと一回り



例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンアウト ,"tick=20"),
new AVGScript(AVGCMD.キャラ , (int)MF_Motion.ミクアイコン),
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンイン ,"tick=20"),
※ 回転してキャラチェンジ



例) new AVGScript(AVGCMD.背景 , (int)MF_FaceFrame.MEGAMIN ), // 背景をめがみんにする
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンアウト ,"tick=15"),
new AVGScript(AVGCMD.待ち ,1000), // 1秒まつ
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンイン ,"tick=15"),
new AVGScript(AVGCMD.背景 , (int)MF_FaceFrame.NORMAL ),
※ ターン中に背景をチラっと見せる例



例) new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンイン ,"tick=30 tv=1 bg=01010102020101020202"),
new AVGScript(AVGCMD.エフェクト , (int)AVGPRM.エフェクト_ターンイン ,"tick=30 tv=2 bg=01010102020101020202"),
※TVスイッチオン的表現 (ターンアウト時に使うとTVスイッチオフ的表現になります)







● エフェクト以外の追加項目


▼ フレーム背景指定

 キャラ絵背景のフレームのイメージを変更します。


例)new AVGScript(AVGCMD.背景 , (int)MF_FaceFrame.MEGAMIN ),


以下の値を使用できます。
・(int)MF_FaceFrame.NORMAL
・(int)MF_FaceFrame.TV1
・(int)MF_FaceFrame.TV2
・(int)MF_FaceFrame.MEGAMIN


通常は、NORMALで。
必要に応じて追加します。




▼ 自動デモ用、ボタンで即終了設定


 ゲーム前のOPなど、自動ですすむデモシーンではボタンを押すとデモが終了します。
 以下のコマンドをスクリプトの先頭の方に書いておいて下さい。


new AVGScript(AVGCMD.モード , (int)AVGPRM.モード_ボタンで終了), // ボタンを押すとデモ終了(オートデモ用の設定)


スクリプトといいつつ、まんまC#のコードです。VisualStudio上で編集してもらっています。こういうのこそLuaみたいな組み込み言語で書いたらいいんじゃないの?とも思うナリ・・・