惰性Log

技術系の話題を中心に書いています

書籍「ゲームプログラミングC++」を軽くレビュー

Amazonレビューにでも書けば良かった気もしますが、ブログの方が気楽なのでここにレビューを書きます。

アフィだと思われないようにAmazonのリンクは控えますが、5000円程度です。

この本を買った目的

私がC++をちまちま書き始めてからだいぶ経ち、それなりにライブラリに頼ってゲームを作ることも出来るようになったのでさらなる高み(?)へ行くために手を取ってみました。あと単純にエンジンとかライブラリに頼らずに作りてえなという意地もありまして、この本の中でOpenGLを扱っているという情報を入手しました。

 買ったのは今年の4月の頭だったので、丁度2月にDirectX12の書籍も出ていたので迷ってはいたものの、流石に基礎もまともに身についてないのにわざわざクッソ低レイヤなDirectX12に手を出す訳にもいかず。それに本の厚さは同じくらいですが、DX12の本はレンダリングに関することしか載ってないのに対してゲームプログラミングC++はオーディオとか入力処理といったゲーム全般について書かれているのでC++一本でゲーム作るならこっちだなという結論を自分の中で出しました。

感想(本題)

読者の対象者として想定されているのが「そこそこC++が書ける人かつゲーム制作自体はあまりやっていない人」のようなので、難易度は丁度良かった(ただ個人的に数学や物理は難しい)です。しかし、所々コードが端折られている箇所がありました。書籍のソースコードは章ごとにGitHubリポジトリに入れられているのでそっちを見ればいいのですが、手を動かしながら読むように設計されているので買う時は注意してください。

本の構成

 全部で14の章の別れており、それぞれ内容が独立しています。各章と概要を書きます(問題があれば消します)。

  1. ゲームプログラミングの概要(クラス設計とかダブルバッファリング、初期化など)
  2. ゲームオブジェクトと2Dグラフィックスの基本(オブジェクト指向コンポーネント指向及びそのハイブリッド指向、SDL2による2Dレンダリングなど)
  3. ベクトルと基礎の物理(ベクトル、三角関数ニュートン力学オイラー積分、衝突判定など)
  4. 人工知能(ステートマシン、探索アルゴリズムなど)
  5. OpenGL(概要、初期化、行列、シェーダ基礎など)
  6. 3Dグラフィックス(3次元座標変換、オイラー角、クォータニオン、3Dモデル読み込み、Zバッファ法、ライティングシェーダなど)
  7. オーディオ(FMOD APIによるオーディオシステムの立ち上げ、ドップラー効果、オクルージョンなど)
  8. 入力システム(SDLの入力APIを用いたキーボード、マウス、コントローラー各種の入力処理)
  9. カメラ(一人称、追従カメラ、軌道カメラ、スプラインカメラの実装など)
  10. 衝突検知(3D空間での衝突検知。AABB、交差判定など)
  11. ユーザーインターフェース(フォント、スタック、ポーズメニュー、ボタン、HUD、ローカライゼーションなど)
  12. スケルタルアニメーション(スケルトンとポーズ、スキニングなど)
  13. 中級グラフィックス(最近傍フィルタリング、ミップマッピング、異方性フィルタリング、遅延シェーディング、Gバッファ、点光源など)
  14. レベルファイルとバイナリデータ(各種データの読み書き、バイナリの読み書き)

おまけ:中級C++の復習(参照、ポインタ、配列、クラス、演算子オーバーロードSTLコンテナ各種、range-based-for文など)

見ての通り、開発に必要な最低限の知識が盛り込まれています。また独立していると書きましたが、全てが完全に独立している訳ではなく、例えば4,5,8章は3章の知識を前提として書かれています。

特徴

  • ある程度の言語経験者向けに書かれている
  • ゲーム制作については未経験~初心者向け
  • 2Dから3Dまで幅広く、全部やれば相当な力がつくはず
  • 基本スタイルはGitHubソースコードと本の解説をにらめっこ
  • 設計手法はオブジェクト指向コンポーネント指向のハイブリッド型(Unreal Engine4でもこの手法らしい。しらんけど)

願望

できればマルチスレッドも取り入れてほしかった…

著者が言うには「おとなしくゲームエンジンアーキテクチャ読め」ということらしい。あんな鈍器買えるかーっ!

追記:ゲームエンジンアーキテクチャ第3版が出るそう(ソースはTwitter)なので多分買います。

さいごに

何か本の推薦文みたいでレビューとは違うような気がする。が、しかし疲れたのです。これが惰性クオリティであります。

とはいえこの本は個人的に名著でした。5000円とか高すぎだろと思っていましたが、読者層が被っていれば値段以上の情報を得られます。ネットで探し集めたくらいじゃ得られないことが載っていました。まあそのために5000円近く払うんですが。