ゲームを作る最短距離はコレ
バージョン:DirectX9 レベル:入門
ズバリ、すごく分かりやすいゲームプログラミング入門です。
数あるゲームプログラミング(DirectX)入門書の中でも、トップクラスの簡単さです。
この一冊で、ゲームプログラミングの基礎&本質が分かります。
DirectXを上手く簡略化しているので、C言語の初級者にもオススメできます。
DirectXを知らなくても良い
いざDirectXを始める時に立ちはだかるのが、聞き慣れないお約束の数々です(デバイスとかバッファとか)。
C言語に慣れてない人には相当なストレスとなり、ポインタとやたら長い定数の洗礼を受け、泣きたくなります(体験談)。
その対策として本書は、NEGAAという独自のライブラリ(命令集)を使います。
用意された命令を使えば、全体に渡ってDirectXをあまり意識せずにプログラミングが出来ます。
つまり、ゲームのアルゴリズムに集中できます。
また、ライブラリはDirectXを完全に隠すわけではなく、生のDirectX命令も記述できます。
そのおかげで、適度にDirectXが見え隠れするので、学習に丁度よい設計になっています。
2Dでも3Dでも同じ!
さて本書は、変わったアプローチで解説を進めて行きます。
具体的には、まず2Dシューティングを制作し、その後それを3Dゲーム化します。
これが上手くできていて、2Dでも3Dでも「やってる事は同じ」なのが良く分かります。
結局、2Dや3Dというのは画面の表現が違うだけで、アルゴリズムは一緒なんですね。
この考え方は、ゲームに限らず、プログラミング全般に通ずる本質です(本当に)。
とにかく完成させるんだ!
本書は「とにかくゲームを完成させる」一冊です。
2Dと3D、基本アルゴリズム、当たり判定、サウンド、カメラ操作、簡単なエフェクトなど
ゲーム開発で最低限の必要な処理は、全て入っています。
だから、この一冊で、ゲームプログラミングの基礎が把握できます。
私は専門学校で先生もしてますが
「この本の方が、私の講義より分かりやすいのでは?」
とリアルに戦慄を覚えました。
なお、本サイトでも紹介してるはじめての3Dゲーム開発と同じ蒲田茂雄氏の著作です。
あちらも良書ですが、本書はさらに分かりやすくなっているので、C言語の初級者にもオススメできます。
(「はじめての~」は、ライブラリではなく生のDirectXを使ってます)
Amazonで値上がりしている時は、出版元直営オンラインショップで購入すると良いです。
VS2015以降でのビルドエラーについて
VisualStudio2015以降で、NEGAAライブラリを用いたプロジェクトをビルドすると、LNK2019エラーが出る場合があります。こんなの↓
エラー LNK2019 未解決の外部シンボル _sprintf が関数 “public: void __thiscall NEGAA::ShowFPS(int,int)” (?ShowFPS@NEGAA@@QAEXHH@Z) で参照されました。
そんな時は、プロジェクトのプロパティを開き、リンカー → 入力 → 追加の依存ファイル に
legacy_stdio_definitions.lib を追加して下さい。
原因は、VisualC++2015から一部の標準関数( stdio.h や conio.h )がインライン化した影響です。
そのせいで以前のバージョンでビルドされた静的ライブラリでは、上記のエラーが発生したりします。
NEGAAの場合は、_sprintf が引っ掛かったようですね。くわばらくわばら。
マイクロソフトの公式情報(長いので legacy_stdio_definitions.lib で検索だ)
Visual C++ 2015 での互換性に影響する変更点
アップグレード時の潜在的な問題の概要 (Visual C++)
おまけ:DirectX9のSDKについて
本書で使うDirectX9のSDKですが、日本語のダウンロードサイトは既にありません…
現在は↓本家Microsoftのサイトからダウンロードできます。
DirectX9 SDK June 2010