2012年10月4日木曜日

「ゲームを動かす技術と発想」感想

堂前 嘉樹 著「ゲームを動かす技術と発想」を読みました.

読み終えて,自分がゲームプログラマになる前にこの本が出ていれば良かったのにな,と思いました.

自分のように大学出身のプログラマだと,専門学校生のようにゲームプログラミングについての知識が豊富なわけでも無いので,専門分野から少しでも外れると用語が分からなかったりします.

この本は,ゲームプログラマとしてやっていく上で必要な基礎を一通り解説していて,しかも,何故そうなっているのか,など理由をしっかりと説明してくれているため,手っ取り早く基礎を押さえるのに良いと思います.また,そういったことを教える際の参考にもなると思います.

ゲームプログラマにとってプログラムを書くのも重要ですが,デザイナに技術上の制限を理解してもらった上で色々と工夫をしてもらえるように,ちゃんと理解してもらえる説明をすることも重要だと思っています.

先日,デザイナの方からモーションを付けたらモデルの表示がおかしくなった,と相談を受けました.どうも頂点カラーが出ていないとのこと.しかし,自分は頂点カラーとモーションの関係が分からなかったため,先輩に聞きに行きました.
答えとしては,モーションが入っているとマテリアルが変わるから,頂点カラーが使えない,ということでした.
おそらく先輩にとっては常識だったのでしょうが,自分もデザイナの方もそんなことは知りません.何故モーションが入っているとマテリアルが変わるのか,聞いてみても違うからなぁ,というくらいしか答えは返ってこず,結局デザイナの方にはそのまま伝えることに.デザイナの方は,使えないなら仕方無いけどね,と渋々他の方法で表現してくれることに.

で,ちょうどこの本を読んでいたら,モーションが入ると頂点カラーが使えない,というよりも使わない理由が書いていました.おそらく,この本に書いてあるような説明ができていれば,デザイナの方も納得した上で仕事をしてもらえていたと思います.

他にも,自分の知識不足から不要な手間を取らせてしまうことが多々ありました.分かってはいるけど,デザイナの方に分かってもらうための言葉を知らなかったりもありました.

この本の前書きには,ゲームプログラマを目指す人,ゲームプログラマと接する機会の多い人向けの本です,ゲームプログラマとのコミュニケーションを円滑にするアイテムになって欲しい,と書かれています.
自分としては,特にゲームプログラマとのコミュニケーションを円滑にするアイテムとして,この本は素晴らしいと思います.

とりあえず,困ったときのために,会社の机に置いておこうと思います.

------------------------------------------------------------------------------------------------------------
著者の堂前さんが,少々はネタバレもOKということだったので,その辺も考慮して,この本の良い点を挙げておきます.

第1章は,本当に基本の基本.コンピュータがどうやって動いているのか,という内容で,さすがにプログラマならこのくらいは知っておきましょう,というレベルです.
でも,最近はメモリを意識しなくてもやっていけるので,メモリにプログラムを読み込む,というのを理解せずにプログラマになる人もいるのかも.

第2章は,メモリ管理周りの話です.据え置き機と携帯機ではメモリ容量の単位が違って驚いた話や,過去と現在を比較してのコラムが面白いです.昔はこんな努力までしていた,とか.実際に仕事でやってきた経験に基づいた内容,という感じでCD-ROMなどのディスク上でのデータの配置にまで気をつかう,などは読んでいて面白かったです.

第3章は,CPUとGPUについて.この章も,本当に仕事中にこういうのが必要だったんだろうな,というのが伝わってくる内容です.こうするとメモリは節約できるけど,デバッグは面倒になったよ,とか,こういう手順だと描画処理が間に合わないから1フレームずらして,とか.この章に限らず,全体的に図が多く,分かりやすいです.

第4章は,コンピュータ上での数値の表現方法と演算方法について.これは,プログラマであれば聞いたことがある内容ばかりでしょうが,それをプログラマ以外に説明する場合に,参考になると思います.図の書き方を参考にしたいです.

第5章は,3Dを扱う上では必須の行列やクォータニオンといった数学について.5.4までは他にも色々と詳しい本があるので,そちらを読んだ方が良いでしょう.で,5.5からが個人的には良いな,と思っているところで,数式上こうなるよ,とかこうすると解けるよ,という解説は色々ありますが,何故こうする必要があるのか,これだけ容量を食うんだよ,と言った現実の問題も絡めた上での説明はあまり見たことが無い気がします.
あと,最後のまとめの,数学に対する姿勢も個人的に好きです.

第6章は,アニメーションとかモーションについて.普通に考えるとパラパラアニメの各コマ毎に全てのデータを持っていれば良いけど,それだと必要なデータのサイズがこんなことに.でも工夫すると,徐々に減っていってこれだけで実現できるよ,という説明の仕方は,何故そんなことをするの,と言う部分が分かってとても良いです.
あと,IK(Inverse Kinematics)の説明や,骨格データなども知らなかったので参考になりました.

今日はこの辺で.

全体的に,技術書にありがちな文章とコードが多くて図があまり無い,とかではなく,色々と分かりやすい図が多くて読みやすい気がします.