クラスまみれのゲームプログラミング入門

はじめに

 どうしてゲームプログラミングの入門書を読んでも、実際の開発に生かし切れないのでしょう。それはたいていの解説書が旧式のC言語仕様に基づいて記載されており、プログラムの可読性を低くしているうえに、ほとんどの解説書が、画面の切り替え方法といったゲームエフェクトや、単体のキャラクターを動かす程度のテクニックのみで、ゲーム特有の「複数同時処理」について言及していることがほとんど無いからではないでしょうか。

 ゲーム開発ほど、クラスの概念がふさわしいものはありません。例えば、シューティングゲームの敵には、耐久力、移動パターン、発射するミサイルのパターン、得点などなどのデータが保持される必要があります。


ゲーム用パソコンならドスパラへ!Galleriaシリーズが大人気!

 そこで、TNKソフトウェアは、苦労を強いるゲームプログラミング解説に対し、「楽して開発」を前提にしたゲームプログラミング入門コーナーを立ち上げることにしました。C++のクラス構築の基本から、タスクシステムからDirectX9によるスプライト処理、キャラクタの同時進行など、オブジェクト指向ならではの手法をこらしたプログラミングテクニックをご紹介します。

 このコーナーに記載されている内容は、リンク元(個々のページへの直リンクも可)を明記することを条件に、自由に使っていただいてかまいませんが、技術の腕を向上させたいのであれば、これらの解説は参考程度にとどめて、独自にコードをカスタマイズするのが一番よいでしょう。

本解説の鉄則!

1.WinMainを除き関数はすべてクラス内に置く

 せっかくクラスを使うのだから、いっそのことすべてクラスのみでプログラミングしてしまいましょう。そもそもオブジェクト指向を極めたJavaやC#にはクラスしかないわけですし。

2.externは使わない

 ファイルをまたがって変数を共有できる宣言子・externは、その数が増えるほど管理がややこしくなります。クラス内にstaticを使うことはあれど、externは一切使いません。

3.とにかく楽をする

 いちどクラスを構築すれば、あとはどのようなタイプのゲームにも応用できるようにします。ただし、楽をするために相当苦労しなければならないのは言うまでもありません。


 なお、このサイトではアーカイブファイル群は「Visual C++ 2008」プロジェクト形式で配布されています。無償で配布されているExpress Editionでも開くことはできますが、より効率的な開発をしたいのであれば、条件付きのブレークポイントや、デバッグ中のコンパイルができるStandard Edition、学生であればProfessional Edition相当の機能が提供されるアカデミック版をおすすめします。

 複雑なゲームになってくると、物理演算を始めとした数値処理のテストプログラムや、マップ作成ツールなどを自作する必要が出てきますが、こういったAPIがあまり関与しないソフトウェアの開発にはC++よりもC#で開発する方が断然効率的です。Standard Editionならば、ひとつのソフトウェアでC++とC#の並行開発が可能ですので、こういった面でも開発に便利です。Express Editionもアップグレード優待の対象となっているので、エキスプレス版をダウンロードした上でアップグレード版を買うのがお買い得(最新版はVisual Studio 2010なのですが、Standardに相当する価格帯の商品がない)。ちなみにStandardとProfessionalの主な違いは、Microsoft Office向けアドインの開発、モバイル機器向けの開発、データベース開発といった、ゲーム開発とは縁が薄いものが多いので、無理してプロフェッショナル版を買う必要はないでしょう。