ケータイFlashゲーム制作レクチャー

第5回 アクションゲームレクチャー(4) ゲーム制作の仕上げ

この記事を読むのに必要な時間:およそ 3 分

デバッグして完成!

こうして,4回に渡って制作してきたアクションゲームも作るべき仕様が全て入り,残すは最終デバッグとゲーム調整のみとなった。今回のサンプルゲーム(GameAct_final.fla)は,デバッグとゲーム調整を済ませたものなのでスムーズに動作しているが,実際の制作時には,次のポイントを制作途中や最終デバックの中で調整してきている。

ゲーム遷移の確認と調整
タイトル画面(今回はロゴ画面)からゲーム中へ。ゲーム中の遷移。そしてゲームオーバー画面orゲームエンド画面へ。タイトル画面への戻り。これらについて正しく遷移するか表示タイミングはどうかなどをチェック。
画面表示の確認と調整
全ての画面において,正しく表示されているか,端末上で見やすいかをチェック。
キー入力の確認と調整
端末上でキー入力が正しく行えているかをチェック。
各動作の確認と調整
PCの動作,トラップやメダルの動作,スクロール,スコア,制限時間などが正しく動作するかをチェック。
当たり判定の確認と調整
PCとトラップやメダルは動作していても,当たり判定がしっかり行えているか,判定の辛さ甘さはどうか,端末上で何度もプレイして確認と調整を行う。これは,ゲームの遊びやすさやプレイ難度に関わるので重要。
計算式や判定の確認と調整
例えば,PCのHP(耐久)バーは,見た目に動作していても正しくHPが減少していないかもしれない。あるいは,メダルを取ってスコアが加算されていても,正しい得点が加算されていないかもしれない。仮に,メダルの連続取りでボーナス点がプラスされる仕様だった場合,ボーナスを加算するかの判定や計算式に誤りがあると,メダルを取って加算はされていても正しいボーナス点が加算されない現象が起こる。…などのチェック。
変数の確認と調整
変数は上記した各チェックと関わり合うものであるが,こういうミスの可能性もあり得る。それは,デバッグ用に変数値を変えた場合(例えば,PCがすぐ死なないようにトラップの攻撃力を減らしていた。あるいは,何かのチェックのためにフラグ値を変えていたなど⁠⁠,その値を戻し忘れて納品してしまうケース。
ゲーム難度,ゲームバランスの調整
せっかく作ったゲームが自分にしかプレイできないゲーム難度では意味がないし,その逆に簡単すぎても遊びがいがない。そこで,ステージデザインの調整,攻撃力などのデータ調整,当たり判定の調整,アイテムやメダルの出現調整,ご褒美となるスコアやボーナス得点の調整など,可能な限りゲーム難度やバランス調整を行う。
その他
ゲーム特有仕様の動作確認と調整。サウンドが正しく鳴るかの確認。端末から時間情報や電波情報などを所得している場合のチェック。…などなど。

アクションゲームレクチャーの最後に…

4回に渡り,長々とお付き合い頂き感謝です。今回,連載の最初として基本的なアクションゲームの作り方をレクチャーしてきましたが,Flashゲーム制作に慣れた方には物足りなく思えたかもしれませんし,不慣れな方にはもっとシンプルな内容を望まれたかもしれません。

しかし,まだ始まったばかりですので,今後のレクチャー予定の中には,よりゲーム性高い内容,よりプログラマ技術高い内容,そして,慣れた方にも不慣れな方にも役立つテクの色々も盛り込んでいければと練っていますので,引き続きお付き合いくださいませ。

今回のアクションゲームについては,機会があれば,PCのアクションを増やしたり,エネミーを登場させたり,もっと変化のあるステージにしたりなど,グレードアップしたサンプルでの解説も行えればと構想しています。


[参考]端末の速度差の悩み…

ケータイFlashの制作をされている方なら,常にこの悩みに苦労されていると思う。実際,仕事では,クライアント側からどの程度昔までの端末をフォローするかの指示や相談があったりするのだが,FlashLite1.0は切り捨てたとしても,1.1でも遅い端末は存在するわけで,アクション性高いゲームや画面スクロールが重くなってしまうゲーム,たくさんのオブジェクトが動いてしまうゲームなどは,このまま作ると厳しいですよ~と伝えるものの,企画によっては苦心して作らなければならない。しかし,最近の端末では凝って作っても遊べるものを遅い端末のために犠牲にしていくのは,なんともやるせないし,かといってユーザーは様々なわけで,このジレンマはまだ続きそうである。

ところで,今回のゲームでは,制限時間に「getTimer関数」を使用したが,これも遅い端末では支障が起きてくる。つまり,端末の処理速度が速かろうが遅かろうが時間経過は変わらないわけで,しかし画面表示やアニメ表示は遅い端末は当然重くなる。その結果,速い端末より遅い端末の方がゲーム進行量が少なくなり,例えばスコアを競うゲームの場合,獲得できる得点が少なくなってしまう。今回のサンプルではFlashLiteの機能紹介も含めて「getTimer関数」を使用したが,実際的にはこの使用も悩ましい…。

[参考]画面外の活用

duplicateMovieClip()の使用注意

Flashゲーム制作では,ゲーム中に使用するインスタンス(例えば,発射する弾やゲーム中に登場する何かのオブジェクト)を画面外に置いておき,必要時にそれらを画面内に置いたり動かしたりすることが多くある(そのため画面外を真っ黒や真っ白に塗り潰して隠しておく⁠⁠。また,ゲーム中に何かのオブジェクトを幾つも出現させる必要もあり得る。例えば,障害物が幾つも出現する,パワーアップによって連射弾が撃てるようになるなど。こういった際にはどう対処していくか。FlashLiteの関数には「duplicateMovieClip()」という,インスタンスをスクリプトで複製する関数がある。これを使えば,1つの障害物インスタンスを幾つも複製して配置できる。‥が,しかし,これはとても危険だ。ケータイFlashは,ファイルサイズが許容内だったとしても,動作メモリがオーバーすると動作不具合を起こしてしまうからだ。duplicateMovieClip()を実行する前は動作メモリ内で済んでいても,duplicateMovieClip()を実行してインスタンスが増えた時にメモリオーバーを起こす危険性がある。実際,そういうケースは身近で起きている。だから,どうゲーム設計するかの検討も重要ながら,duplicateMovieClip()を使わず,最初から画面外に必要な障害物数を置いておく設計と,それで賄えるゲーム内容へ仕上げていく方向が無難であり良策と思う。

今回でアクションゲームは終了です! お疲れ様でしたっ!!次回は,ちょっとブレイクタイム気分で,インタビュー記事なども織り交ぜ進めていきます!

著者プロフィール

西村直樹(にしむらなおき)

クリエイティブスタジオ Studio無限界 代表。アニメーターを経て,ゲームクリエイターとなる。ゲーム制作では,企画シナリオ,ディレクション,絵関連など幅広くこなし,ゲームクリエイターとして現在で19年となる。また,ゲームスクール,アミューズメントメディア総合学院にて,創立年から企画系講師を行い,クリエイター育成にも携わっている。現在は,マネジメントを行いつつ,コンシューマゲーム,ケータイコンテンツ,書籍執筆,その他様々なプロジェクトを進めている。

Studio無限界
URLhttp://www.mugenkai.com/


藤田和久(ふじたかずひさ)

プログラマ/テクニカルスーパーバイザー。メインフレームと呼ばれる大型コンピュータのシステム開発から,WebサイトのCGI,そしてケータイFlashに至るまで様々な環境のプログラミングに携わる。現在はStudio無限界の活動の傍ら,都内複数の専門学校において講師として,ゲーム制作,Webサイト制作,システムエンジニアリングなどの授業を担当。 また,Studio無限界とは別にFMS(個人)として,システムエンジニアリングの分野でも 活動している。

Studio無限界
URLhttp://www.mugenkai.com/