DirectXやOpneGLなどの低レイヤーのグラフィックライブラリを学べる本を紹介します。
ここで紹介する全ての本を私は実際にトライして、自分のゲームエンジンに実装しています。
しかし低レイヤーの知識を得ることは、とても難易度が高いです。
その上で役に立った書籍の良かった点などをそれぞれレビューします。
当記事はアフェリエイトリンクを使用しています。
なぜゲームエンジンを自作するのか?
自分で作ってみたいという好奇心
エンジニアという生き物は、なんでも自分で作ってみたくなるものです。
UnityやUnrealEngineがどうやって動いているのか?
自分で作ったら面白いのではないか?
こういったエンジニアの好奇心を満たすことができます。
ゲームエンジンを利用するための知識
UnityやUnrealEngineも結局はDirectXやOpenGLといった
低レイヤーの描画エンジンの上で動作しています。
特に描画部分のエラーは特に、低レイヤーと密接に関係していることが多いです。
そのため低レイヤーを学ぶと、どうやって3DCGを描画しているのか?
という仕組みを深く学べるため、非常に役に立ちます。
また最適化という観点でも、低レイヤーの知識は活用できます。
ユーザー側、利用者にはほぼ見えませんが、
リアルタイム3DCGの最適化は徹底的です。
どうやって学ぶのか
Webサイト
以下のようなサイトが有名です。
私も最初はWEBサイトでDirectXに入門しました。
やはり日本語の記事は少ないです。
ほとんどは、三角形の描画までの解説記事が多いです。
海外のチュートリアルもありますが、少し古く現在の環境で動かすのが難しいことも…
とりあえずどんな感じか、入門してみるのは良いと思います。
動画
実はYoutubeにてDirectXやOpenGLの解説動画が多数あります。
Youtubeの自動翻訳でもかなり理解できるので、おすすめです。
本
日本語の書籍という点では
DirectX9時代は多数書籍がありました。
DirectX11時代の書籍は、現在は入手が厳しい印象があります。
そのため、DirectX12の本が現在入手でき、最新に近い情報となります。
DirectX12を勉強するなら本で勉強すると近道かもしれません。
なお本を読んですぐ理解できるようなライブラリではないです。
そのため、完全に理解するための補助輪としての本という認識が良いと思います。
本のレビュー
DirectX 12の魔導書
内容としては以下のとおりです。
- 初期化
- MMDモデルの読み込み、描画
- MMDモデルのアニメーション
- 影やSSAO
- クラス化
この本で学べることで一番良いのが、
MMDモデルのアニメーションです。
ほとんどの3Dゲームで必要になるボーンアニメーションですが、
DirectX標準では、(ほぼ)実装がありません。
実際にゲームエンジンとして使う際は、MMDモデルではなく
FBXやGLBを使いたい所ですが、ユースケースとして大変参考になります。
一応チャプター9でリファクタリングという形でクラス化するのですが、
ほぼ1つのスーパークラスにする形でした。
正直クラス化といっても、すぐに再利用できるコードではないです。
必要な機能を切り分けて、自分のゲームエンジンに組み込むのが大変でした。
自分が書いたプログラムで、MMDモデルがヌルヌル動いてくれるのが感動しました。
この感動はプログラミング人生の中でもかなりの体験でした!
ゲームプログラマになる前に覚えておきたい技術
DirectXやOpenGLの使い方ではなく、
フレームワークに依存しない、ゲームの作り方の本です。
特に、3Dの当たり判定や最適化のテクニックはとても勉強になります。
序盤はコンソールを使ったゲームを作り
アルゴリズムの基礎的な部分を鍛えます。
3Dゲーム制作はこの本のオリジナルライブラリを使います。
最終的にはロボットゲームを作れます。
UnityやUnrealEnigneを経験した方なら、とてもオススメです。
ある程度のC++の前提知識は必要です。
完全な初心者の方は頭爆発するかもしれません。
数学?何それ美味しいの?
事前に数学を勉強しておくと良いかも
総合的にゲーム(エンジン)を作る知識を学べます
Direct3D12 ゲームグラフィックス実践ガイド
グラフィックに特化した本です。
PBRマテリアルと、Assimpを用いた描画を扱っている本です。
終盤ではIBLやHDRなどにも触れられているため
グラフィックつよつよエンジンを作りたい人におすすめです。
途中でクラス化するのですが、結構まとまっているように感じます。
最終的にMesh Shaderにまで触れられており、
DirectX12のグラフィック機能を突き詰めたい人は必須書かも
Mesh Shaderの情報は、
公式ドキュメントか海外書籍にしか書かれていない内容です。
逆にグラフィック以外はほぼ触れないため、
ゲームにするには、さらに実装が必要です。
が、この本を完全に理解できるなら、全然簡単かもしれませんね
現代のグラフィックにおいて、PBRは必須!
きれいなモデルを描画できて、楽しい!
ゲームプログラミングC++
流れとしては
STD2 (OpenGLのラッパー) → OpenGL →当たり判定、アニメーション、レベル管理
といった流れです。
難易度としてはかなり高いと思います。
こちらもGitHubにサンプルコードがあり、にらめっこする形
かなりの量の内容を扱うため、結構ハイスピードで進行していきます。
C++の知識に関しては、ほぼ触れないため
UnrealEngineのC++を経験した方にチャレンジしてみると良いと思います。
OpenGlをC++、日本語で学べる書籍は意外と少ない & 入手できないのでオススメです。
3D数学も解説されています。ベクトルは予習してもいいかもしれません。
またバイナリや、人工知能に触れられているのもGOOD!
表紙にも書いてありますが、
3Dプログラミングの「基礎力」がつくと思います。
正直ゲームエンジン時代では、ほとんど考える必要のないことが多いですが、
ベースの知識として知っておくと役に立ちます!
終盤FPSっぽいサンプルになるのも楽しい!
まとめ
ゲームエンジン時代では正直、低レイヤー(DirectXやOpenGL)の知識は、
必須ではないです。
しかし、低レイヤーの知識があると、デバッグ、エンジン改造、描画最適化など、
クリティカルな用途で役に立ちます。
低レイヤーを扱える人が少ない時代だからこそ、基礎力は武器になると思います。
特に大規模ゲームなど、コスト度外視で限界まで最適化したいというニーズもあると思います。
そのため、ゲームエンジン時代でも低レイヤーの知識を学ぶことはオススメです!
コメント