ゲームプログラマのためのC++を読んだ

ゲームプログラマのためのC++

ゲームプログラマのためのC++

三宅陽一郎さん監修の本がまたでたという事で購入。
一部の人にとっては待望のその名も「ゲームプログラマのためのC++」です。
どういう本だったか紹介していきたいと思います。

入門書とEffective C++の間くらいの立ち位置の本

本書は所謂C++の入門書ではないことは間違いありません。
C++の構文を教えてくれるみたいなところは一切なく、様々なノウハウやテクニックを教えてくれる本です。
継承の使い方、const、参照、キャスト、テンプレート、例外、RTTI、デザインパターンSTLなど扱う分野はとても広いです。
そのどれもゲームを作る前提の話で書かれているため、例となっているコードもゲームの話がほとんど。
しかし、ゲームにおいて例外やRTTIの話はほとんど見かけないためそういう意味では貴重な資料だと思います。
Effective C++ほど濃くはないものの、そこそこに深い話も多いです。

メモリ周りは特に詳しい

ゲーム開発において一番気になるところはやはりメモリ周りの情報です。
本書はそこに関してかなりの情報量を割いており、ことあるごとにメモリの話が出てくるので安心?出来る内容です。
特にメモリ割り当てとカスタムメモリマネージャ、メモリプールの話はゲームにおいてほぼ必須な内容なので知らない人は知る必要があります。
もちろん知らなくてもゲームを作ることは出来ますが、これを知っているだけで限界をどこまで引き伸ばせるか差が出るでしょう。

パフォーマンス戦略

多くの章ではパフォーマンス戦略やコスト分析の話が載っており、何が重くて何が軽いかの情報があります。
当然便利なものは多くのコストがかかりますが、それを踏まえてもC++のこの機能は使用すべきだろうという指針を与えてくれます。
何よりもまずは計測重視で、重いか軽いかは実際に使用してみて計測してから検討すべきだろうと教えてくれます。
ここらへんは当たり前の話ですが、私が知る限りでは「とりあえず遅いみたいだから使わない」という人は沢山いました。
例外やRTTIは特にその最たるものですが、まずは使わないという選択肢ではなくて使ってみてから考えよう。

何気に詳しいSTL

ゲーム開発においてよく避けられるSTLことStandard Template Libraryですが、この本では積極的に活用しようという事でかなりページを割いて解説してくれます。
もちろんメリットデメリットをしっかりと理解した上で使用するということになっていますが、デメリットよりもメリットが勝るくらいの魅力があるという事を有名なゲーム開発者が教えてくれるというのは素晴しい事です。
この本ではSTLの初級解説から応用方法までしっかりと解説してくれてSTLを知らない開発者を助けてくれる内容になっています。
STLを知らない開発者はこのためにこの本を読む価値があると言ってもいいくらい分かりやすい解説だと思います。
本当に少しだけですが、Boost Libraryの紹介もあったりとこの手の本にしては珍しい内容だと思いました。

最後に

この本を読んでも残念ながらゲームを作れるようにはなりません。
なぜならゲームの作り方は一切解説してくれないからです。
C++を使用していて当然の事を出来るようにしてくれる本です。
そして出来あがるものの品質を何段階か引き上げてくれる事は間違いないでしょう。
大型プロジェクトでの対処法、クラッシュしないゲームの作り方、とても大切な事です。
ですが、それが出来ていない開発者はとても沢山います。
そういった人達に向けてぜひ本書は読んでもらいたい内容だと思います。