ゲーム製作のトレンド

XNAがにわかに注目されて(でも、私の手元にはまともに動かせる環境がない……。各種Shader必須だなんて敷居が高すぎますぅ<貧乏人)、昔ながらのC言語と環境依存ライブラリでの開発は過去のものとなりそうな今日このごろ。
じゃぁ、未来はどっちだ、というわけで大胆に予測します。はるか斜め上です。あんまり信用しないでね:-)。

C#動的言語というにはちょっとあれですが(でも、VS2005と組みあわせていると動的チックな印象はある)、なんなら、IronPythonXNAとか(動くのかな(^^;)?)、JRuby+Java3Dとか、SqueakのCroquetとか。
あと、動的言語について回るGCによる不定期なパフォーマンスの低下はCPUパワーがどんどん上がるであろう未来に期待してこの際考えない方針で。ムーアの法則まんせー。
てきとーにちゃちゃっと作ったスクリプトがそのままゲームとして動いていて、なおかつそれがプロダクトクォリティになれば最高ですね。

  • 高位レイヤーしかない3D出力ライブラリ

昔々のDirect3D Retained Modeしか使えないみたいな感じ。もちろん、モーションやフレーム間補間もライブラリ任せ。SPUやSMPのCPUやGPUが勝手に分配して計算するので、メニーコア環境でもパフォーマンスのスケーラビリティばっちり。
3Dとは言ってもグラフィックだけじゃなくてサウンドも込みで。
それどころか、物体間の物理的性質までシミュレート。コードなんか何も書かなくてもHalf Life 2って勢いで。
2D表示は「並行投影の画板の上にUI板を乗せる」でいいかと。

  • 極端にマルチスレッド。Futureパターン、コルーチンまんせー

ゲームは状態遷移の塊になるとしても、個々のオブジェクトが1フレーム単位でしか駆動されないなんてのは抽象化が面倒。
そこで、プログラムの基本をマルチスレッドによる逐次処理にしちゃうことに。
スレッド間の調停はFutureパターンと、try/catchに似た割り込み応答で書き散らかして。複雑な状態が勝手に出来上がるくらいでないと。このとき、割り込み先に来るパラメータは例外オブジェクトと直前に実行していた実行コンテキストね。
オブジェクトというよりはアクターとかに近いのかな? じゃ、そのセンで。

  • 出力だけじゃなくて、入力インターフェースもMV分離

ゲーム関連でも、大分MV分離が進んできましたが、まだまだ抽象化が足りない。主に出力系だし。
これを一気に推し進めて、入力デバイスからカスタマイズまでをスクリプトでちゃちゃっと。目標は「PS2WiiNintendoDSとデジタルレバー+2ボタンでほぼ同じ感覚のインターフェース」。


うーむ、今これに似た環境っていうと、BlenderのGameインターフェースみたいな感じかなぁ。あれでまじめにゲーム作ったことないんだよね。一度やってみてもいいかな。Pythonだけど。