書評『ゲームエンジンアーキテクチャ 第3版』

待望の日本語訳がひらく次世代ゲーム開発

定評あるゲームエンジンの技術書『ゲームエンジンアーキテクチャ第3版』日本語訳がボーンデジタルから今月出版された。これは昨年2019年に出版された原書第3版の日本版で、初版日本語訳(2010年)、第2版日本語訳(2015年)に続く待望の日本語訳である。以下、本書の読みどころを紹介したい。

本書について

本書を通じて、読者はゲーム開発環境となる「ゲームエンジンのアーキテクチャ(構成)」の全体像を理解することができる。「どのゲームエンジンにおいても中心となる構成要素」だけでなく、開発支援ツール、コンピュータのCPUやメモリ、CGやシミュレーションの数学的な背景までが一冊にまとめらている。この重厚な一冊を持っていることで、ゲーム開発の知識全体を手にしているような心強さがある。同時に本書の重さから、ゲーム開発の荒野に「ゲームエンジンというアーキテクチャ(建築)」を築くためには、これだけの知識を積み上げる必要があるのかと感嘆せずにはいられない。

本書を手にする第一の読者は現役のゲーム開発者だろう。本書を通じて国内のゲーム開発者は自らの知識をアップデートできる。本書は日本のゲーム産業にとって大きな贈り物になるだろう。

だが「まえがき」および「監訳者まえがき」にも書かれているように、本書はもともと大学でゲームエンジンプログラミングを学ぶための教材として書かれている。一般に「大学の授業は仕事の役に立たない」と思われがちだが、本書はトップスタジオのゲーム開発者が大学の授業のために作ったので、大学での専門家教育と業務の両方の長所が詰まっている。つまり技術革新によって生まれる大作ゲーム開発と、学問体系や授業改善サイクルにもとづく教材設計とが一体になってうみだされたのが本書である。本書を通じて海外トップスクールで行われているゲームプログラマ教育の成果を知ることができるだろう。

翻訳について

英語原書では第3版を出すに当たって、新章を追加するなど大幅なアップデートを行っている。日本語版ではそのアップデートに追随するとともに、旧版の訳文も見直したと監訳者のブログでも触れられている。1年という短期間でそれだけの改訂作業を経て出版した仕事は素晴らしい。さらに版元オンラインカタログでは正誤表も公開されているが、いまのところ1文字レベルの誤字と索引のページ番号訂正しかなく、文章の訂正はない。これはゲーム開発の専門書では最高峰の翻訳クオリティと誠実さだ.

さらに本書は翻訳だけでなく、日本の読者向けの訳注も充実している。たとえば「3.1.2 C++言語標準化」では、原著執筆時点ではC++2aどまりだった記述がその後の標準化を踏まえてC++20にアップデートされ、訳注でオンライン日本語文献も案内されている。こうした最新標準化動向はゲームプログラミング教科書で見落とされがちな点なので、学生が社会に出る数年後を見据えたお手本になるだろう(本書ではC++だが、他のプログラミング言語でも同じことが言える。たとえばC言語を教える学校の場合は、民間資格で使われるK&RではなくC99以降にも触れてほしい)。

本書を読むための準備

本書は大学教科書なので、事前にどんな知識が要求されるかが「はじめに」に書かれている。本書が書かれた南カリフォルニア大学は全米大学ランキングのゲーム開発者専攻でナンバー1をとったこともあるトップスクールだが、この科目のために特殊な勉強をしているわけではないようだ。

大学の公開情報からゲームエンジンプログラミング科目の内容を検索すると、この科目の前にC++の入門科目とC++の応用プログラミング科目の2科目を履修することが受講条件になっている。これらは日本の大学でも学べる内容であり、もしもC++の授業のない学生は、その他のオブジェクト指向言語でもよいので、入門科目と応用プログラミング科目の教科書を学んでから読むとよい。

本書の利用法: プロフェッショナル編

本書はデザインパターンだ(p.90-91)と書かれているのが印象的だ。これはプログラマにとっての使い方を説明している。つまり、あるプログラミングの問題を解決したいときに、多くのプログラマが使う解決法(デザインパターン)を本書で知ることができる。プロにとって本書は最初から最後まで順番に読むものではなく、知りたいデザインパターンが見つかればよい。そのためには目次や索引を使って解決法をさがすことが多いだろう。

本書の利用法: 学校編

南カリフォルニア大学のゲームエンジンプログラミング科目では、本書を教科書にして一学期で学ぶ。これは110分の授業30回分で、課題はWindows DirectX 11とVisual StudioでGitを使って提出する。細分化された日本の大学で同じ授業をするには、2科目3科目にまたがる合同授業として行うことになるだろう。

本書は幅広い知識体系をどうやって効率的に学ぶのかという、教育手法の面でも参考になる。たとえば2Dと3Dの説明だ。日本のゲームCGプログラミングの教科書では、まず2Dプログラミングを説明し、それを理解したら3Dプログラミングの章に移るものが多い。これはゲーム技術の発展をそのまま再現してみせているわけだが、本書では基本的に3Dで説明して、説明に影響がない場合は2D図を用いている(p.301)。授業においても、一つの課題で複数のことを学ぶよう工夫しないと、時間がいくらあって足りないだろう。

さらに本書の一部は、大学の専門科目で使うだけでなく、高校の授業や大学の一般向け科目でも使うことができる。たとえば,高校理科の物理学で「自然界では起こらない物理計算に意味があるのか?」と疑問に思う高校生には、本書の「あなたのゲームに物理は必要ですか?」(本書 p.685)「剛体力学」(p.714)を読んでもらいたい。あるいは「あとで役にたつ数学分野だけ教えてください」「線形代数が何の役に立つかわからない」という大学生には、本書p.301を読んでプロのゲーム開発者と数学の関わりを知ってもらいたい。

こうした参考資料として本書の一部だけ使う場合は、授業中に言及するだけでなく、本書を学校図書館のリザーブブック(その学期の貸出を禁止する図書)として学習コーナーに展示し、手にとってもらうのもよいだろう。ただし本書の目次の前頁にある著作権上の注意は、こうした学校図書館での利用が想定されていないように見えるので、第2刷でのアップデートを期待したい(原著では図書館利用を含むアメリカの著作権法の例外条項について記載している。日本の著作権法規定については,国内の教科書出版社の著作権表記が参考になる)。

本書を出発点にして

本書は学部の教科書として書かれており、第一線で活躍するにはさらに進んだ専門書や論文へ進む必要がある。そのために巻末の参考文献一覧では、日本語訳情報もついており、よい手引きになっている。

「本書だけでいっぱいいっぱいなのに,いきなり専門書や英語論文に進むのはちょっと…」という人は、最初から順番に読み通すのではなく、興味を持った章の資料を調べてみよう.1時間以内のGDCの技術講演をさがして、自動字幕つきで見るのもよいだろう。たとえばGDCの数学系チュートリアル「Math for Games Programmers」は資料が公開されている他、GDC VaultやYouTubeで検索できる。

おわりに: 本教科書の中の日本

本書には日本発の『鉄拳』や『ルイージマンション』の画面を使った解説だけでなく、日本発の基礎研究についても開設されているので、その一つを紹介しておこう。「5.7 乱数生成」の章の「メルセンヌ・ツイスタ」は広島大学の松本眞教授のウェブページをもとに書かれている。ただし実装情報が更新されておらず、SFMTはオリジナルのメルセンヌ・ツイスタより約2倍速く、dSFMTはさらに速い、といった数値が書かれていない。さらに本書ではメルセンヌ・ツイスタの、どの実装を比較しているのかよくわからない記述になっているので、実装する場合には自分で情報を集めて計測する必要がでてくる。そこで教科書に書かれている広島大学のウェブサイトを開いてみた。そこからさらにリンクをたどって,ポケモンBWの乱数調整について触れているスライド(2004)を見つけてつい読んでしまった。(一般市民向け講演なので専門的な話ではない)。
もしも教科書に広島大学へのリンクが載っていなければ、メルセンヌ・ツイスタ発明者がメルセンヌ・ツイスタを採用したポケモンの乱数調整について説明するスライドを見つけることもなかっただろう。
ゲームの技術体系はこうした(関係ないように見える)数学をはじめとする世界の研究者の仕事の上に成り立っており、教科書からオンライン公開された学術情報が辿れることのありがたさを実感できた。

(IGDA日本 アカデミックSIG 山根信二)