SIG-GT12 へ行ってきた
IGDA 日本 SIG-GT12 「ゲームにおけるスクリプト言語の現状」に参加してきた。”みんながすでに地雷を踏んでいる” Lua 言語の紹介と、対象的に "現在進行形"な ECMAScript 実装の CriScript の紹介のあと、豪華メンバーによるパネルディスカッションが行われた。 Cri Middleware の中の人が開発し、社名を冠している CriScirpt が趣味ベースの開発とは知らなかったなぁ。
パネルディスカッションは FPS にみられる欧米のムチャ(≒先進的)なスクリプトゲームコードへのシフトを代弁する方がいる一方で、 FF7 やクロノトリガーの開発で、今で言うところの DSL (ドメイン特化言語)を駆使されていた小久保さんが逆の意見を持たれていて、バランスがとれていてとても面白かった。
興味深かったのは、「ゲームにおいてスクリプト言語を活用するのは、開発を簡単にするためでも楽にするためでもない」という認識だった。これは CriScript 開発者の松田さんが仰っていたのだが、「仮にスクリプト言語を使うことで開発が簡単になったとしても、それは副作用でしかない」「プロフェッショナルな現場で "簡単さ" は重要ではない」ということだった。
それでは組み込みスクリプト言語のメリットは何かというと、そのホスト環境であるゲームエンジンをリビルドをすることなく、リロードによってゲームをすばやく調整できる点にあるということだ。
たとえば Web アプリケーションでは、 Apache をリビルドしなくても、スクリプト言語プログラムを書き替えるだけでアプリケーションの開発や調整が出来る。現在の C/C++ まわりの技術で言うところの「エディット&コンティニュー」の現実的な実現方法として、組み込みスクリプト言語をメインコードへ持っていくという話だった。仕事では、企画系のスクリプタが触る程度にハードルを下げる必要があるというのが、自分の現実だったので、改めて原点に戻る思いだった。
プログラマがスクリプトを弄るという観点から、スクリプト言語には一般的なプログラミングが可能な汎用スクリプト言語としての仕様が求められる。あとで Xtal 開発者の石橋さんが、プログラマとしての訓練や経験を積んでいない企画さん向けには、汎用スクリプト言語を直にいじらせるのではなく、別途 DSL を準備すると自分のポリシーをお話しされていた。つまり、小久保さんが FF7 の頃に使っていたような、企画向けに作られたスクリプト環境を汎用スクリプト言語とは別に提供するということだ。やっぱりそれが「企画」「プログラマ」「ビジュアル」「サウンド」で開発する日本式の終着点だろう。
スクリプトエンジンに CPU 予算を割ける大型の RPG や SLG ではすでにそういう形で開発しているのだろう。僕は今アクションゲームの開発に従事していて、HD映像でフレームレートも極めて高く登場するオブジェクトもかなり多いため、ゲームコードの大半は C/C++ で実装し、スクリプト言語の現実的な落としどころとしてイベントドリブンのコールバックを中心とした仕様を基本とし、毎フレーム動作する AI や個体制御絡みのところはガチガチの DSL で動かしている。そんなわけなので、この日記では少し頭の固い汎用スクリプト言語の用法を書いているけど、行き着く先は、プログラマがゲームエンジンを書いて、スクリプトプログラマがスクリプト言語を書いて、企画が DSL やパラメータエディタを使用する、という3層構造だという点に激しく同意です。
体制の話
ただ、改めて、この過渡期に企業はどうやってスクリプトプログラマを確保して、どういうキャリアパスを提示するのだろうということが気になった。懇親会でも「汎用スクリプトの組み込みは技術的な問題ではなく体制の問題だ」なんてことをトピックに同席した方と盛り上がった。
設計がかの3層構造 --- C/C++、スクリプト言語、DSL --- に到達した時代には、2つ目のスクリプト言語の部分はプログラマ課の仕事になっているだろう。しかし「今の時代」はスクリプト言語に任せている仕事がそこまで大きくないため、 C/C++ コードをがりがり書けて、数学・物理・シェーダ・ハードその他ゲームに関する知識・技術を持ったプログラマをスクリプトプログラムに本格的に配置転換するということは考えにくい。かといって企画さんに全てを任せるにはスクリプト言語周りの仕事は大きなものになりつつあるため、スクリプト言語プログラム部分に、訓練や経験を積んでいないスクリプタ(企画課)による「バグのやばいにおい」が漂う危険がある。 まさに過渡期……
僕がいつも考えているのは、経験豊富なスクリプト言語プログラマをよその業界(具体的にはWeb業界)から引っ張って、技術者として任せちゃえないかということ。ただ、そのとき、日本式の雇用では、なんだかんだでキャリアパスを提示する必要がある。以前もネタにしたような気がするが、現時点ではスクリプトプログラマが、スクリプタとして企画系の出世をするのか、プログラマ系の出世をするのか、本人がどういうキャリアプランを描いて、企業とどう擦り合せるのか結構想像がつかない(僕がいる会社だけ?)。
Web 業界ではスクリプト言語を使うからと言って "スクリプトプログラマ" なんて呼ばないし、技術者としてキャリアパスが描ける業界になっている。この対比の下では、例えスクリプト言語のプログラマがゲーム業界に興味を持ってくれても、そこで技術者人生をまっとうできるとは思わないだろうし、仮に企画課に配属されるようなことがあったら、技術者としての面目を丸潰しにしかねない*1。
そこで、現時点であっても技術職の枠で採用して、5〜10年後を見越してスクリプトプログラム部署の創設に関わってもらい、そこでポジションを確保してもらうというキャリアパスを提案するのはどうかなぁと考えている。ペーペーなのでそういう妄想をしてるだけですが。
また、据え置き機と携帯機では技術の普及が1世代ぶんずれるので、現時点で PS3 や Xbox360 でやるスクリプトの取り組みのレベルの仕事が、5〜10年後には次世代携帯機の仕事になると思うので、そこを見越せば技術者として現役の間は少なくとも仕事が途切れることは絶対にない。
日本にはスクリプトプログラマはゲーム業界人が想像している以上に人がたくさんいて、技術力も凄く高い。だから、背景を整備してルートを開拓すれば、スクリプト周りで人手や質に困ることはなくなるし、職業に就く人から見ても、ゲーム業界は IT 業界に勝るとも劣らない魅力や保障のある職場に映るはずだ。取られたものはしっかり取り返そうみたいな話でもあるけど。
(日本だとスクウェアエニックスが先陣を切りそうだ……)
*1:こういうことは人が働く場所として、結構重要だと思う。働く人側のイメージが合致して初めて雇用被雇用の関係が健全に形成される→マスターアップも頑張ろう、徹夜もふんばろう、よその会社に負けないぞ、となる