Xbox 360 シューティングラブ。10周年 『開発こぼれ話』その14『XIIZEALからTRIZEALへ』その2

XIIZEALを思い出した。XIIZEALで使用した基板はPS互換基板、PSということは全ての描画がポリゴンなのだ。どんな複雑な3Dゲームも最終的に絵を描画する方法としてメモリに絵に見える数値をセットしてゆくのは変わらない。その部分は良く分からん数式を知らなくても最近までやっていた事なので理解出来る。その部分から勉強する事にした。習作としてXIIZEAL/PC版の開発をスタートした。

ポリゴン描画する場合、転送速度を稼ぐためモデルデータが多角形やトライアングルストリップやカーブを使用して頂点情報等を節約した形で構成されていたとしても最終的には三角形に分割される。
仮ザコ
アクション技能検定の試作時の仮モデル。データサイズを稼ぐために四角形ポリゴンが多いが、プログラムで読み込んで表示する際には三角形に分割される

三角形ポリゴン描画をソフトウェアで実装すればXIIZEALがPC上で動作するはずだ。ポリゴンの描画の仕方はおおよそこんな感じだ。
poly

  1. 表示するテクスチャ uvがテクスチャ座標
  2. パラメータabcそれぞれxyuvの値を持っている abの差分acの差分bcの差分情報をもとに描画に必要な値を計算する
  3. (2)の計算値を使って(1)のテクスチャデータを横方向に1ドット毎Vramにセットして行く

この実装を入れXIIZEALのPC版は完成した。セレロンとかPEN3/4の時代で30~40fps程度の速度。今回のXbox 360『シューティングラブ。10周年』XIIZEALはこの時のプログラムがベースだ。描画部分がセパレートされているので移植し易くなっている。過去に出たPS2版やPocketPC版もこのXIIZEAL/PC版が元になっている。ちなみにそれらの移植は他社によるもの。

ポリゴンをVramに1ドット毎描いて行くなんて事普通はしません。ライブラリとか使えば楽だから。でもそういった事をやっておくと実際の描画にはどういった情報や計算が必要なのか良く理解出来るので3Dソフトで作ったデータをゲームで使う形式に変換するコンバータを作ったりする際に大いに役立つ。実際XIIZEALの後に作ったTRIZEALではコンバーターや描画システムは全て自作だったのでいい勉強になった。