Zobrist Hash

Game Programming Gems4(ISBN:1584502959)の内容は、くだらない。1,2もそうだが、3,4はかなり退屈な内容だ。まあ、洋書ならば6000円程度で買えるので高いとは思わないが、訳本(1,2しか出ていないが)は12,000円+税もするのでとてもお勧めは出来ない。

以前、自分の掲示板で「Gemsはどうですか?」と聞かれて、「こんな本買うぐらいなら、まずはそれぞれの分野の教科書買ったほうがいいですよ」とか答えたことがある。それを聞いた馬鹿が2chに「やねうらおはGemsを否定している」だの「Gemsの価値がわかっていない」だの何だの書きやがったのだが、何度でも言うぞ!

「こんな本買うぐらいなら、まずはそれぞれの分野の教科書買え!」

内容のレビューも書かずにこういうことを言うのは説得力に欠ける気もするので、順番にレビューしていくぞ!まずは数学の章からだ。数学の章の最初の記事は

Zobrist Hash Using the Mersenne Twister

だ。だいたいだなぁ、Zobrist Hashなんてものは1970年に考案されて、コンピュータチェスプログラムの紹介記事にでも載っているような内容なんだ。*1 AIプログラムの教科書にもふつうは載っている。

そのHash生成に使ってるテーブルに乱数を必要とするのだが、rand()関数を使うと完全にランダムでないから、Mersenne Twister法(以下MT法)を使いましょうってのがこの内容だ。MT法も、いまどき乱数の生成はこれしかないっていう状況において知らないほうがおかしい。この記事が、MT法の解説記事なら評価できるが、Zobrist Hashで使うテーブルをMT法で使って生成してるだけの記事だ。

さらに言えば、Zobristのテーブルなんてものは別に事前に生成しても構わないわけで、そんなに巨大なテーブルを生成するのでなければ高速な乱数である必要はないし、乱数がrobustであるに越したことはないが、それほど巨大なテーブルでもない限り、C言語のrandで十分だ。つまり、MT法のメリットなんかどこにもないのだ。実装する手間がかかる分だけ余計なお世話という感じだ。

他には数学の章では、
Using the Covariance Matrix for Better-Fitting Bounding Object
という節がある。これは、共分散行列を使って3D上の点列にフィッティングさせるという話だ。こんなものは、3Dの教科書に載っている。実際、これと同じ内容を3D記事として私がホームページに以前に書いている。どこにも目新しさの欠片もない。

昨日書いたGPUによるNNも、GPUの解説でもなければNNの解説でもない。「GPUをNNの学習に使えますよ」っていうだけだ。もう、その1行だけでいいんだ。何ページにも渡って教科書としても役にも立たないような紹介記事を書いてもらってもホント無駄なだけだと思う。

まあいいや。疲れてきたのでこれくらいにしておこう。そんなわけで、出版されてからずいぶんと経つGems3の翻訳本が出ないのも、なんとなく察しがつく気はする。じゃあ、Gemsシリーズは買うに値しないのか?と聞かれるとそれはそれで違う気はする。Gems以外にゲームプログラミングのまともな本というのは少ない。これも歴然たる事実だろう。Gemsの内容レベルに匹敵する、ゲームプログラミングの教科書的な良書があればいいのだが..そういう本って日本ではあまり売れないのよね..。