なぜわざわざゲームオブジェクトクラスなんてつくって下方へ特殊化するクラスヒエラルキーをつくるんだろう。オブジェクト同士の連絡では、オブジェクトリストを持つ方は信号を伝達するだけで、ダウンキャストなりの特殊化はオブジェクト群のそれぞれの内側で行われるような運用をされる。か、もっと無茶をやる。
(snip)
ゲームルールはゲームオブジェクト同士の交互のやりとりを全体として眺めた状態を完全に規定する。プラグイン系のようなゆるい統合ではやっていけない。完全な記述が求められる。新たな種類のゲームオブジェクトが追加されるとしたら、全ての既存のゲームオブジェクトに対する反応が完全に新たにおこされてなくてはならない。ひとつのピースが残りの全部のピースとの接合部をもっている多次元ジグソーパズルだ。無機的な構造物と比べてここが全く異なっている。
[ゲームオブジェクトを一般化して管理しないことの妥当性について - 作業記録]
私は、彼の葛藤を理解する。なぜなら、私もここ数年、ミドルウェア、エンジン、シーングラフを研究することによって、系統的にゲームエンジンやグラフィックスを扱うことに挑戦してきたからだ。しかし、会社の実際の仕事で、私はそれを実践できていない。リアルタイムアプリケーションであるビデオゲームプログラミングは、常にパフォーマンスを要求し、そして、多くのプログラマがプロジェクトに参加する。そのため、パフォーマンスとプロジェクトの初期期間の両方を犠牲にする体系的アーキテクチャは、有益ではない。
C++ のような高級言語は、我々のプログラミングスタイルを変えるよう誘惑する。アマゾンや書店は、オブジェクト指向のプログラミングを書く方法を教える本を陳列している。我々は、これらの本を読み、そして、オブジェクト指向のプログラミングによってゲームオブジェクトクラスを扱えないか考え始める。大規模システム設計におけるオブジェクト指向アーキテクチャについての十分な議論があることは確かである。しかし、(特に日本において)、ビデオゲームアプリケーション設計のための議論は十分とは言えない。
欧米では、開発者は、ゲームオブジェクト設計を議論する。しかし、彼らの大半は、 FPS 、及び、 RTS を開発する。これらのジャンルは、オブジェクト指向の設計と相性がよい。しかし、ゲーム全てが FPS/RTS であるわけではない。そのため、多くの日本の開発者は、ゲームオブジェクトクラス設計を議論しない。他のジャンルでは、ゲームコアが統括的にゲームをコントロールすることが必要である。そして、ビデオゲーム開発において最も重要なことは、調整と調節である。恐らく、我々の世界における理想的なアーキテクチャは、エンターテイメント制御装置を調整と調節が容易なように 1 つの場所に集めることだ。ビデオゲーム開発者は確定された仕様書より娯楽感覚を重要視しなければならない。
大規模システム設計を教える本にと一緒に我々がソースコードを書くならば、ゲームアプリケーションはプログラマの虚栄心を満たすだろう。しかし、そのアプリケーションは、ビデオゲームプログラムとして悪いものである。我々の理想的なプログラム設計は、大規模システムと異なるであろう。そして、ビデオゲームのオブジェクト指向設計は、大規模システムのオブジェクト指向設計と異なるだろう。従って、それらの本は、すべてのことを我々に教えてくれるわけではない。我々は、自分で答えを発見しなければならない。まだ日本もそして欧米もその答えを見つけてはいない。
0 件のコメント:
コメントを投稿