セガの現役プログラマが執筆した書籍「ゲームプログラマになる前に覚えておきたい技術」(秀和システム発行)が話題を呼んでいる。全872ページのボリュームにもかかわらず,2008年11月の発行から約半年で6刷と,プログラミング書籍として異例の売れ行きを見せている。著者で,2009年9月1~3日に開催のゲーム開発者会議「CESA Developers Conference 2009」で「著述賞」を受賞した平山尚氏(写真)に執筆のきっかけなどについて話を聞いた。

(聞き手は武部 健一=日経ソフトウエア


写真●セガAM研究開発本部第三AM研究開発部ソフト開発セクションの平山尚氏。1977年北海道生まれ。京都大学大学院修了後,2002年にセガ(当時は子会社のヒットメーカー)入社。PS2用「電脳戦機バーチャロンマーズ 」やPS3およびアーケード用「パワースマッシュ3」などの開発に携わる

この本を書いたきっかけは?

 2007年に新人研修の担当になったのがきっかけです。DirectXといったライブラリに詳しい新人は多いと思ったのですが,それだけだとパソコンや(アーキテクチャにPCを採用している)アーケード・ゲームは大丈夫ですが,プレイステーションなど家庭用ゲーム機の開発ができません。
 そこで基本的な3次元CG(Computer Graphics)やアルゴリズムを教える必要があると思いました。その際に,「一冊これを読んでおけばゲーム・プログラミングを一通り学べる」といった書籍が見付からず,不便でした。「何かそのような本が必要だ」と,自分のWebサイトに書いたところ,たまたま出版社の人が読んでいて執筆することになりました。
 幸い,会社の許可が得られたので,業務時間内に半年かけて書きました。実は書いていて大変勉強になりました。ひどい話ですが,この本を書くまでは本の中身の半分もわかっていませんでした。特に数学や一部のアニメーションの処理は本を書くまでは理解が怪しかったですね。

ゲーム・プログラミングの特徴は?

 これがゲーム・プログラミングというものはありませんが,“頓智(とんち)”の要素がとても多いと言えます。例えばAI(人工知能)なら,本当はサイコロを振っている乱数なのだけど,パラメータを調整して,考えているように見えればいいといった具合です。
 ただ,最近ではそれではどうにもならない部分が出てきています。例を挙げると,布シミュレーションなどは頓智では実現できません。こういうときは臆することなく英語の論文などから理論を持ってこられれば理想的です。もっとも,ゲームはエンジニアリングというよりも“おもちゃ”なので,頓智とアカデミックな理論のバランスを取ることが重要です。

どのようにゲーム・プログラミングを学びましたか。

 ゲームは昔から好きでしたが,大学では遺伝子工学を専攻しており,入社するまで3次元CGの知識はゼロでした。C++も内定をもらった時点では知識ゼロでした。だから大変でした。
 研修が1カ月あってその後いきなりプレイステーション2(PS2)の「電脳戦機バーチャロンマーズ」の開発に参加することになり,当時はライブラリが不十分でPS2のアセンブラでゴリゴリ書く必要がありました。ただ,昼夜を問わず毎日やっていたら3カ月後には「クビにはならないかな」と思えるようにはなりました。何か一つでもできる分野,役に立つ分野があれば,開発チームにいてもいいと思えます。

ゲーム・プログラマ志望者が学んでおくべき言語は何ですか。

 現実問題,C++ができないとどうにもなりません。もっとも,初めての言語がC++というのは無理ですから,プログラムを組むという考え方を学べれば何でもいいのではないでしょうか。
 アセンブリ言語の知識もあったほうがよいけれど,現在,8割くらいのゲームはアセンブリ言語を使わなくても開発できるでしょう。ただ,家庭用でグラフィックスを作り込んでいるゲームは一部でアセンブリ言語を使ったプログラミングをしているはずです。アーケード・ゲームは,現在はWindowsなどを組み込んだPCベースが多いのでアセンブリ言語は使いません。

海外では「DOOM」や「Quake」といった商業ゲームのソースコードが公開されています。日本ではそのような話は聞きません。

 知的所有権を気にしている人が多いからでしょう。私個人の意見としては,普通のゲームのプログラムに,隠すに値することはそんなにないと思っています。