(本文p292。)

ゲームエンジン・アーキテクチャはノーティドッグ(NDI)のエンジニアが書いたゲーム開発のかなり広範なトピックを扱った書籍の日本語訳。

NDIにはかなり深刻なLisp文化が有る:

この本はかなりブ厚いので、以下のポイントを書店で確認しようと思っても家に持って帰ってゆっくり読みたくなること間違いなし！

Schemeが出てくるポイント NDIでは上のプレゼンのようにRacketをScheme処理系として採用している。このため、前置コロンのキーワード記法やnewによるオブジェクト生成記法を採用している。 p292. エンジンサポートシステム >> Schemeのデータ定義。deftypeとdefine-exportとdefineだけで2通りの記法が出てくる。C++のソーステンプレートやエンジンにロードされるバイナリの生成に使用している。C++側にもScheme風のシンボルシステムが存在することがわかる。

p617. アニメーションシステム >> アクションステートマシン。ここで出てくるのはdefine-state。 p618. ここでsyntax-rulesを使ってデータ定義言語を拡張している 。

p811. オーディオ >> セリフを定義する。ここではdefine-dialog-lineとdefine-conversation-segment。『ここで、先頭のシングルクォートはハッシュ化さえた文字列IDを示す』←Scheme的なquoteを一般的に解説した文。

p940. ランタイムのゲームプレイ基本システム >> ノーティドッグのDC言語。ここではSchemeコードは一切出てこないが、DC言語はRacketのバリアントでゲームに内蔵されたVMで動作する。 というわけで、代表的なSchemeの言及は上記の4箇所に出てくるが、うち3箇所はデータ記述言語としてSchemeというかS式を使用している(実際にはプログラムとして処理されているので、p618のようにsyntax-rulesを使って拡張もできる - ruby界でよく使われるDSL的な用法と言える)。ゲームロジックの記述に使用されるDC言語はRacketConのプレゼンでずっと詳細に語られている。

強いところにScheme有り？ この本の重要なところは(もともと大学の講義資料なので)網羅性を確保している点で、このようにグラフィックス、アニメーション、物理、オーディオでそれぞれ同じくらいの紙巾を取っている。



(写真取るときにパースついちゃったけど)

彼らはグラフィックスで賞賛を受ける傾向に有るが、アニメーションやオーディオについても深い考察を提供している。実際、(本文中で語られるように)SonyのSDKはグラフィックス/アニメーション(Edge)/オーディオ(SCREAM)の各分野で彼らのライブラリを含んでいる。

もっとも、彼らのゲームエンジン自体がライセンシに提供されているわけではないので、Schemeによるデータ定義がSDKとして採られていることにはならない。つまり、Schemeは彼らのゲームの"secret sauce"の一部を成しているとも言える。...まぁ汎用性をこの部分で提供するのがいかに難しいかという点でもある。