きましたねぇ〜、ゲームプログラミングの一番搾りとでもいいましょうか、コテコテのシューティングゲームを作るために必要な知識、皆さんと一緒に学んでいきたいと思います。この講座で進めるのは、最低限のシューティングテンプレートの製作です。あとは、ルールの取り決めや演出の拡大などを行い、最終的にはオリジナルのシューティングゲームを作っちゃいましょう!
一言でシューティングゲームといっても、縦にスクロールするのか横にスクロールするのか、2Dなのか3Dなのか、はたまた戦闘機型なのか対人の銃撃戦なのか、、、その種類は様々です。
スペースインベーダーなどがこれにあたります。左右にのみ動けるだけで、上下には移動できないものがほとんどです。私が生まれる前からありました…。
自機を上から見下ろす、トップビューのシューティングゲーム。今現在も熱いプレイヤーを育てている、元祖シューティングゲームでもあります。敵機がリズミカルに次々と表れ、爽快感を味わえるものが多いのではないでしょうか。最近では、怒首領蜂などが有名ですね。
今回からの講座では、この縦スクロールシューティングを作っていきます。
こちらも元祖シューティングゲームですね。グラディウス、パロディウスなんてのはゲームが苦手である管理人山本もプレイしたことあります。スクリーンが天と地に別れ、障害物が出てきたりすることが多いので、知能戦を堪能できます。
3D空間の中で、一点を狙い打っていくシューティングゲーム、ガンシューティングってやつですね。こちらは対人の銃撃戦を想定することがほとんどなため、戦闘機モノはあまりないです。
戦闘機でフライトを楽しみながら、敵機を撃墜していくゲーム。シューティングというより、航空技術を重視したフライトシミュレーションに射撃機能を付けたといったほうがいいですね。こちらは、専用のジョイスティックなどでプレイすると面白いですな。
さてさて、これから作る縦スクロールシューティングゲームですが、一体どんな仕組みで動いているのでしょうか?プログラマーが押さえておかなければならないポイントについて、サラッと触れてみましょう。
シューティングゲームは、オブジェクト化しやすいゲームの一つです。オブジェクト化の対象は、自機、敵機、弾、爆発などですね。
これらのオリジナルクラスにリンクする形で、下記のクラス(ABDX提供)を使っていきます。
ABDXが提供する4つのコールバック関数InitProc、QuitProc、InputActionProc、RenderProcに処理を書き込みます。
特に注目すべきポイントは、InputActionProc、RenderProcのゲームループ部分です。ゲーム進行は、すべてこの中に書き込む形になります。
ここで、あれ?おかしいなというところがあるのですが、お気づきでしょうか?それは「自機の移動」という処理があるのに、「敵機の移動」と「弾の移動」が無いという部分です。3者とも、ゲーム進行を行うInputActionProcに必要な要素ですが、なぜか敵機と弾だけの移動処理が見当たりませんね。実は、敵機と弾だけは、次の移動先が確定しているため(キーボード入力に左右されない)、描画のタイミングで処理してしまおうという理由から、このようになっているのです。まぁ、描画と同時期に行うか、InputActionProc内に書き込むかは皆さんの自由ですので、ご了承くださいな。
処理の流れを掴んでしまえば、シューティングゲームなんてのは、意外とスマートにコーディングできるんですねぇ〜。次の章では、早速、背景と自機の描画に挑戦してみます。10回程度の章をクリアすれば、自分だけのオリジナルシューティングゲームの開発に乗り出せます。あなたはそこまで辿り着けるかな!?!?
講座インデックスへ戻る | ©2005 Discoversoft |