こちらでは、2020/12/13発売、ゲーム開発用参考書「ゲームエンジンアーキテクチャ 第3版」について紹介。
日本語 第2版の発売が2015年、そこから約5年ぶりとなる刷新で、原著は2018年に出ており、個人的に待ちかねていた本。
この書籍の見どころ、どういった方に有益か、等を簡潔に紹介。本書は非常に大ボリュームな書籍(994ページ)で、僕自身もまたこれから熟読する部分も多いです。自分への備忘録を兼ねた記事の意味合いもあり、今後追記していく可能性も高いです。
「ゲームエンジン・アーキテクチャ 第3版」概要
『アンチャーテッド』『The Last of Us』シリーズでリードプログラマを勤めた著者ジェイソン・グレゴリーがミッドウェイ、エレクトロニック・アーツ、ノーティードッグにおける20年近い経験をもとに、ゲームエンジンソフトウェア開発の理論と実践の両方を解説します。本書では、AAAゲームスタジオで使用されている技術と手法を幅広く、詳細に解説されており、それらが実際のゲーム会社で用いられている商業クラスのゲームエンジン上でどのような役割を果たしているかを説明しています。
本書の特徴
– ゲームエンジンソフトウェア開発の理論面と実践面の両方をカバー
– 特定のエンジンやAPIに依存しないように書かれた技術的な解説
– 必要となる数学的背景をすべて網羅
– 初心者向けの包括的な解説書ながら、シニアエンジニア向けの内容もカバー
第3版の特徴
従来版と同様、この第3版でもゲームエンジンのアーキテクチャを包括的にカバーしており、さらに下記の点について内容を更新し、新しい章を追加しています。
– コンピュータとCPUのハードウェアとメモリキャッシュ
– コンパイラの最適化
– C++言語標準化
– IEEE-754浮動小数点表現
– 2Dユーザーインターフェース
– 並列および並行プログラミング
本書は入門書としての役割を果たすことを目的としていますが、ゲーム開発技術のさまざまな側面に触れているため、経験豊富なゲームプログラマにも新しい発見や新しい視点をもたらすことでしょう。また豊富な参考文献と引用を提供しており、ゲーム開発プロセスの特定の分野をより深く掘り下げたい人にとっては絶好の出発点となっています。
↓全て表示↑少なく表示
目次
- 1章 イントロダクション
- 2章 仕事用ツール
- 3章 ゲームのためのソフトウェアエンジニアリングの基本
- 4章 並列・並行プログラミング
- 5章 ゲームのための3D数学
- 6章 エンジンサポートシステム
- 7章 リソースとファイルシステム
- 8章 ゲームループとリアルタイムシミュレーション
- 9章 ヒューマンインターフェイスデバイス
- 10章 デバッグおよび開発のツール
- 11章 レンダリングエンジン
- 12章 アニメーションシステム
- 13章 コリジョンと剛体力学
- 14章 オーディオ
- 15章 ゲームプレイシステムの概要
- 16章 ランタイムのゲームプレイ基本システム
- 17章 まだやることがあるってこと?
本書の特徴
好評を博した『ゲームエンジンアーキテクチャ』の第3版の登場です。
『アンチャーテッド』『The Last of Us』シリーズでリードプログラマを勤めた著者ジェイソン・グレゴリーがミッドウェイ、エレクトロニック・アーツ、ノーティードッグにおける20年近い経験をもとに、ゲームエンジンソフトウェア開発の理論と実践の両方を解説します。本書では、AAAゲームスタジオで使用されている技術と手法を幅広く、詳細に解説されており、それらが実際のゲーム会社で用いられている商業クラスのゲームエンジン上でどのような役割を果たしているかを説明しています。
本書の特徴
- ゲームエンジンソフトウェア開発の理論面と実践面の両方をカバー
- 特定のエンジンやAPIに依存しないように書かれた技術的な解説
- 必要となる数学的背景をすべて網羅
- 初心者向けの包括的な解説書ながら、シニアエンジニア向けの内容もカバー
本書は入門書としての役割を果たすことを目的としていますが、ゲーム開発技術のさまざまな側面に触れているため、経験豊富なゲームプログラマにも新しい発見や新しい視点をもたらすことでしょう。また豊富な参考文献と引用を提供しており、ゲーム開発プロセスの特定の分野をより深く掘り下げたい人にとっては絶好の出発点となっています。
第3版での追加項目
第3版の特徴
従来版と同様、この第3版でもゲームエンジンのアーキテクチャを包括的にカバーしており、さらに下記の点について内容を更新し、新しい章を追加しています。
- コンピュータとCPUのハードウェアとメモリキャッシュ
- コンパイラの最適化
- C++言語標準化
- IEEE-754浮動小数点表現
- 2Dユーザーインターフェース
- 並列および並行プログラミング
注目の項目・内容
以降では個人的に注目の項目・内容を簡単にピックアップ。
2章「仕事用ツール」
バージョン管理や、IDE(Visual Studio)、プロファイリングツール、メモリリーク検知など、開発効率化から、ゲームの性能アップや保守に役立つツールが挙げられており、こういった知識は即実用して、すぐに効果を得られるのが非常に大きい。
特に「2.2 コンパイラ、リンカ、IDE」の項目が個人的にはお気に入りの項目。
特にVisual Studioに関するTipsは単純にプログラムを勉強しているだけでは意外と知り得ないTipsが多い。例えば以下のようなもの
- コンパイラ・リンカの最適化の具体的内容
- ウォッチウィンドウでのプログラム実行、ポインタから配列展開
- データブレイクや条件付きブレークの活用法
- 最適化ビルドからのデバッグ(逆アセンブリ、レジスタ、メモリ直接参照等)
この辺の知識はプロジェクト構築レベルから参画したり、多くのデバッグ経験を積んだプログラマなら、その経験から把握していることは多いと思います。逆にまだゲーム開発見習いのエンジニアは、体系だってこういった知識を得られる場所はなかなかないです。しかしながら、これら知識があるとないでは、業務効率化に大きな差が生まれる非常に重要な知見といえます。
4章「並列・並行プログラミング」
第3版から追加された一大項目。マルチコアCPUが当然の今、現場でどれだけ関わるかは別としても、ゲーム処理が並列・並行に処理されるのは絶対であり、低レベルな部分を制御したいならその知識は必要。並列プログラミングに関する書籍は少ないことからも非常に有益。
並列・並行プログラミングという言葉からは、安易に「マルチスレッドプログラミング」を想定してしまうが、それにとどまらず幅広い内容を基礎から解説しています。例えば以下のようなもの。
- 並列・並行性の概念の整理(暗黙的・明示的な並列性、並行性、それぞれの違い)
- CPUストールをなくすための内部的な仕組み(暗黙的な並列性)
- マルチスレッドプログラミングの各要素解説(並行性の実装)
- SIMD(SSE)、GPGPUなどの局所的・大域的な並行処理活用法
マルチスレッドプログラミングに関する書籍や知識は多少なりあっても、こういったより低レベルな部分の”並列性”から理解できるのは非常に有益。3章で主に触れられるキャッシュ・メモリアクセスの最適化と合わせて、単純なプログラム実装の最適化以上のマシンに合わせた高レベルな最適化を実現するのに必須の項目です。
11章~14章「レンダリング、アニメーション、物理、オーディオ」
エンジンのコアシステムとなる各機能・概念の解説。
レンダリング、アニメーション、物理(Physics)、オーディオ(サウンド)、それぞれの分野だけで専門のエンジニアがいるのが当然なほど、それぞれ単体でも奥深い項目。そのため各ゲームプログラマがこれらの最新知識をすべて把握するのは今や至難のわざ。ですが、これらの最低限の知識は、ゲーム特有の特殊機能の実装や、高度な最適化など、ハイエンドなゲームを作るためには備えておくべきこともまた事実。
そのために、本書の各章はそれぞれの分野のコアとなる概念を広く、ほどよく掘った原理的な内容まで紹介しており、全体の把握にはむしろ最適ともいえる内容。各分野の専門家にとっては物足りない内容となるだろうが、専門家以外が各ジャンルの現代の最低限の知識を仕入れるのに非常に有益。
ハイエンドゲーム開発に携わるなら、これらの専門家にならずとも、本書で取り上げている内容・ワードを頭にいれておくことで、他セクションとの円滑なやりとり・理解のもとゲーム開発ができるでしょう。
15章~16章「ゲームプレイシステムの概要」
ゲームプレイシステムは、アプリケーションに密接に関わってくるため、プロジェクトによっても変化しやすい層ですが、最新の3Dゲーム開発に有効なベストプラクティスといったものはある程度は存在。
例えば、多数オブジェクトの管理や、各オブジェクトの柔軟な拡張のためのコンポジション指向での実装、広大なマップのロード管理、並行性等を考慮したゲーム更新、など。
こういったゲームプレイシステム実装方法のマニュアル化は難しい(アプリに依存して変わりやすい等)こともあり、あまり書籍がない。そのため本書でとりあげているこれらの章の内容は貴重で、ゲームシステム層実装者はもちろん、ゲームアプリ層(Unity,UEなど既存エンジンを使う層)実装者にとっても、読んでおくべき内容と言えます。
ちなみに、ゲームプレイシステムの実装方法に関する本はあまりないといってますが、以下の書籍は実装パターンとして非常に参考になる1冊です。
まとめ:何にせよ手元においておくべし良書、そして他の参考書へ
以上、ようやく発売となった「ゲームエンジンアーキテクチャ 第3版」についての簡単な紹介でした。
各注目の項目を挙げましたが、何にせよゲーム開発に関する知見をここまで網羅的に取り扱っている書籍は他にないといえるでしょう。ゲーム開発全般を取り扱う参考書でも、「1からゲームを動かす」という部分にフォーカスする書籍が(当然ながら)多く、本書のような開発現場視点でのTIPSや、各コア機能をほどよく掘り下げた解説書はないです。
ただ、レンダリング・アニメーション等、まだまだ最新技術が発展中の分野は当然まだまだ学ぶことは多いです。本書内でもいわれてますが、そういったジャンルはこの本をきっかけとして、より興味のある知識探求への出発点として活用するのが良いです、各専門の参考文献も多く載ってます。
トータルとして、ゲーム開発者なら手元においておくべき一冊といって間違いないでしょう。
また、以下ではゲームエンジン・アーキテクチャを始めとしたゲーム開発の芯を学べる書籍他にも紹介しているので合わせてのぞいて見てください。
いじょうでっす。
コメント