ゲームスクリプトの未来

 OSC2008松江のライトニングトークの時は、ゲームプレイコードのスクリプトプログラマという職分が近いうちに日本でも誕生するんじゃないかと話したんですが、まだ全然先のような話がしてきた。

  • 理由1 ゲームスクリプトはイベントドリブンに落ち着く気がする(メインシーケンスをスクリプトで書く時代はこのままだと来ないような……)。企画系スクリプタがイベントフックに簡潔なスクリプトを書いて製作を進め、ネイティブコードを書くプログラマが脇を固めるという構図がまだ当分続くのでは。
  • 理由2 動的型の言語へ C++ の既存担当分野を委譲して、本当に開発効率や生産性が上がるのか非常に疑問。テストでコンパイル言語相当の確実性を稼ぐ動的型言語は、ゲーム特有の「ステートマシンが多すぎて、ユニットテストの有効性が非常に低い」状況でも C++ 同等か以上の生産性を発揮してメリットを現場にもたらすことができるだろうか。静的型言語を採用したメタルギアはひとつの答え。
  • 理由3 本格スクリプトプログラマががっつりコードを書いて、トライ&エラーにおいて時間的優位が見出せないくらいスクリプトの量が増えた場合、コンパイル言語でモジュールを書いたほうが作業も起動もエディット&コンティニューもサクサクということになりはしないか。
  • 理由4 C++ ですら並列化や SPU オフロードしないと重いのに、仮想マシン上のスクリプトにでかい仕事を振って本当にパフォーマンスは大丈夫なのか。あと第7世代では搭載メモリが少ないのでリソース管理を GC つきの言語に直感的な形で任せるのはまだ難しいと思う。
  • 番外編 日本に限っては北米と雇用事情が違うので、スクリプトプログラマは企画課で企画コースキャリアなのか、プログラマ課でプログラマコースキャリアなのか、なにを基準にどう報酬を払ってクラスチェンジを期待して賃上げしていくのか……といったことが、仮に職分として必要でも企業側がまだ答えを出せていないのでは。


 なんか終電でテキトーに書き散らした理由なので、強調表現してる割には「気がする」「思う」ばっかですけど。すません、感覚を適当に文字に落としたというか……

 それでも話を進めるが、
 FPS エンジンなどで、事実上「同じ発明」のうえで、別タイトルの(別コンテンツの) FPS を載せる、というケースでは、スクリプトの有用性が高いため、また話は別になるだろう。しかし、「FPS のエンジンをチャンバラアクションゲームに流用する」とか「それでレースゲームを作る」といったケース*1ではエンジンの上のスクリプトで何とかするより、エンジンを切り裂いて改造するほうが確実でパフォーマンスもよく、開発も早いと思う。

 結局、スクリプトプログラムに比重がいくと、スクリプトプログラマにはゲームコンソールの知識やら、リアルタイム系の開発能力やら、数学やリソース管理などの高い技量が求められる。が、高い技量があるなら直接エンジン弄らせた方がいいじゃないか。技量相応の給料を払って、"エンジン上"のスクリプトを弄らせるのか、"エンジン内部"のネイティブコードを弄らせるのか。

 ……ということを考えたときに、近々の状況では、自分の考えに自信がもてなくなった。

 ただ、理由1は覆される材料がある。次世代機が PS3 を超える変態(褒めてます)ハードウェアになった場合、ネイティブコードを書く作業が今のようにはいかなくなるだろう。理由2とか理由3みたいにスクリプト言語とネイティブコード記述言語を並べて比較できるような類似性が全くなくなった未来へ進んだ場合の話。その場合、「第7世代機の頃の C++ のようにゲームコードを書く」という「感覚」を仮想マシン上へ疎開させる(スクリプトの世界ではまだそういう記述を実現可能なままにしておく)という形で、スクリプトプログラマの職が確立するのではないだろうか。仮定の上の推測というのも何ですが。

 たとえば、関数型言語が未来のネイティブコード記述言語の候補と言われているが、これが現実になった場合、記述性に優れてゲームコードと相性がいい C ライクプログラミングの世界は仮想マシンの世界に疎開させて生産性を保て、という展開にならないか。パフォーマンス最重要視のゲーム開発では、ネイティブ開発言語が「ハードの都合へ人間が合わせる」ことは普通にあるので、「人の都合へ言語が合わせる」人間的なプログラミング言語仮想マシンで担保する、という方向性。


 かつてゲームプログラムがほぼアセンブリか、C言語だったときは、スクリプトシステムのメリットは歴然としていたが、現行機 &C++くらいになってくるとスクリプト言語と生産性がほとんど同等なので、スクリプト言語でがっつり書けるんなら C++ で書けやという先程の話になる。

 しかし、次世代機で「フリーランチまじ終了」なハードウェアが来れば、スクリプト言語でがっつり書けても同じノリでネイティブ側を書けるとは限らないので、専門分野の違うプログラマとして確立していくだろうという妄想。この場合、担当分野が違っても使う言語がほとんど一緒という今の構図とは違う形になっていくでしょう。

 そのときは、スクリプトプログラマが触る言語と、企画系スクリプタが触る言語が違う、3層構造とかいうことになってるかもなぁ……XNAがかなりいい線ついてたりして。スクリプト相当なのが C# 、それとは別に Lua みたいなのを企画さんが触る。しかし、そこまでいったらスクリプトプログラマという形ではないなぁ……VMプログラマとかそんな感じかなぁ。

*1:そんなケースないよ!と突っ込めるくらい、まだ汎用ゲームエンジンというものは出ていない