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ではコンバーターや描画システムは全て自作だったのでいい勉強になった。

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

業務用デルタジールとトゥエルブジールの開発が終了し、次のプロジェクトはドリームキャスト互換業務用基板NAOMIを使用する事になった。それまでトライアングル・サービスは個人事業であったが、NAOMIを使用する為にはセガと法人対法人の契約をする必要があった。法人で無くてもゲームを出せていたのでそのまま継続出来れば良かったが状況はそれを許さない。ゲームセンターに自分の作ったゲームがひとつでも置かれると嬉しい。その希望は叶ったが、まだまだやりたい事があったのでゲームを継続する為、会社を興すなんてめんどくさい事はしたくなかったが腹くくって法人化したのだ。2002年10月の事である。今回のソフトに付いてくる取扱説明書背表紙の写真が当時の事務所の様子を写した貴重な一枚だ。あれ以外の写真は残っていない。早いものであれから10年経ったのだ。初心を振り返る機会として『Xbox 360 シューティングラブ。10周年』プロジェクトは良いものだった。

さて次のターゲットがNAOMIに決まり、時流に沿って3Dポリゴンのシューティングを作る事になったが、大問題。僕は数学を知らないのだ。
中学・高校と授業はもちろん有ったが、まったく興味が無かったので授業中はずっと小説を読んでいた。高校になるとそもそも授業に出席しなかったりだ。
いざ3Dのゲームを作るかと資料を見ると、知らない記号の並んだ数式がてんこ盛りなのでちんぷんかんぷん。どうしたものか。
math
読み方すら知らない記号が並ぶ

Xbox 360 シューティングラブ。10周年 『開発こぼれ話』その12『ツールその3』

ツールはまだ有る。
トゥエルブジールの開発のみに使ったプレイステーション(以後PS)互換業務用基板GNET用のツールだ。X68000 XVIと無印X68000の関係と同じような性能差があり、PSの1.5倍ぐらいの性能があるのがGNETだった。VRAMにはイメージを2次元で配置するので、容量を効果的に使用するには目で確認しながらパズルの様に隙間なく画像を並べるようなツールが無いと手間のかかる作業だった。オフィシャルでそういったツールも用意されていたが、ちょっとかゆい所に手が届かない感のあるものだった。それにPS用だったのでGNET用として使うには若干足りない部分もあった。さて。

実は昔所属していた会社でそれ用のツールを作った事があった。当然PS用のツールであったが基本は同じ。作り方は知っているのでそれをGNET対応で作り直したのが今回のツールだ。bmpからGNET用のフォーマットに変換したり画像を並べ易くなるよう2/4/8ドット毎スナップ出来るようにもなっている。オブジェクト単位でリストを保存し別ツールでゲームで使用する形式に変換していた。VRAM全体が見えるので背景やオブジェクトにどの程度容量を使用可能か計算をするのにも重宝した。ちなみにツール類は他社のものと比べこういったツールをデザインし易かったBorland C++ Builderで作っていた。このツールのオリジナル版を作っていた会社でC++ Builderを用いて業務で使用するツール等を作っていたので、ソフト購入担当者に会社の経費でC++ Builderを購入するようお願いしたのだが叶わなかった。良い思い出だ。いやそんなバカなって話だ。

しかし2次元って珍しい。他のコンピュータでそういった仕様のモノはあったのだろうか?きっと無い。やはりライバル機であるセガサターンの様に1次元の方がメモリを無駄にする事無く簡単に効率的に使えるからだろう。

Xbox 360 シューティングラブ。10周年 『開発こぼれ話』その11『SE/BGM』

業務用で出ていたデルタジールはSE/BGM共に4bitADPCM/8khz。とりあえずBGMをそのまま入れてみたが音質が悪くトゥエルブジールとの差があり過ぎた。そこでオリジナル音源44.1khz版を入れてみたが、SEとのバランスが悪くなった。もうひと押しSEも44.1khzにしてみたところ、今度は音がクリア過ぎて2Dドット絵全開な90年代を感じる画面とマッチしなくなった。

 最終的にはBGMにZOOM音源、SEにPS内蔵音源を使用してやけに高音質だったトゥエルブジールとのバランスをとる為、デルタジールはBGM22khz、SEは聞こえ方のバランスを取りつつ11~22khzで作成した。ちなみにスペシャルパック同梱サントラのデルタジールBGMはオリジナルの44.1khz版だ。

Xbox 360 シューティングラブ。10周年 『開発こぼれ話』その6『ツールその2』

こんなツールも作った。
オブジェクト画像を表示し、矩形をセットして衝突判定をエディットするツールだ。矩形情報はバイナリで保存されるのでそのままROMに入れても良いし、Ctrl+Cでクリップボードにコピーしてプログラムソースにペーストしても使えた。とてもシューティングゲーム用のツールらしいツールだ。

Xbox 360 シューティングラブ。10周年 『開発こぼれ話』その5『ツールその1』

そういえばツールも作ってた。
2Dのシューティングでちゃんとした背景ある場合、背景の絵柄に合わせ地上の敵を配置する必要がある。手打ちでテキストを書いて組み込む事も出来るが数値等のデータだけでは後から修正するのは骨だ。絵の上に敵置いてくようなツールがあると便利だろうという事で作ったのがこのツールだ。昔ゲーム制作を勉強していた際X68000様に作ったツールを元に新たにWindows版を作ったのだ。当時Windowsは95か98だった。開発に使用していたPCがDOS/V・X68000といった構成からWindowsPCのみでの開発に移行したのはこの頃だろう。
背景を表示し8x8グリッドで任意の敵番号をマウスでセットして使う。左端のグリッドにセットした数値はゲーム中にその位置に来た時呼ばれるプログラム番号だ。
デルタジールのターゲット機には問題があった。当初分からなかった事だが開発が進みプログラムサイズが大きくなって来るとターゲット機にプログラムを転送する時間がとても長くなった。512kbyteサイズのプログラムを転送するのに1分程掛かったのだ。これは長い。ちょっと修正して確認するといったサイクルのテンポがとても悪い。転送待ちしている間に他の事を考え出したりすると転送が終わった頃には何を修正したのか忘れてしまったりするのだ。テンション急降下、賢者モードになってしまう。
このツールは↑↓→←キーでスクロールするのだが、ある日おや?と思った。スクロールした時のレスポンスが良い。とても良い。これはもしかするとそのままゲームが動くのでは?背景描画は既に出来てるからスプライト描画部分を作ってしまえばいちいちターゲット機を使用しなくても済むのではないか。早速作ってみたら動いた。WindowsPCでプログラムソース数ファイル程度の修正ならばコンパイルして実行するまでほんの数秒。よそ見する暇も無い。こうしてデルタジールはWindowsPC上で開発してターゲット機を使うのはチェック時のみといったマルチターゲット開発になり作業効率は大幅に向上したのだ。

『トゥエルブジール』その3「多彩な攻撃方法」

シューティングの基本であるショットに加え本作ではレバー操作による攻撃といった多彩な攻撃方法が用意されている。ボムバリアを使い敵に突っ込んで思い切りレバガチャをし敵に大ダメージを与える事が出来るのが本作の魅力だ。

xii_side xii_shot
基本のショット。アイテム取得でパワーアップする レバーを激しく振る事によって横方向強力な攻撃をするサイドアタック
xii_back xii_bomb
 排気炎で後方の敵を攻撃できるバックファイア  ボムバリアの中で自機は無敵になり、思い切りレバーを振って敵に大ダメージを与える事が出来る。

なぜそのようなシステムのゲームにしたか。それは同時期に『デルタジール』がゲームセンターで稼働する事が決まったためだ。当初本作はパワーアップとボム王道スタイルのシューティングゲームのシステムで製作していたがそれでは『デルタジール』と同じになってしまう。同じゲーム出してどうすんだよ!と思った。そして急遽レバー操作で強力な攻撃が出来るといった王道シューティングゲームには無い個性を持ち込んで現在のシステムに作り変えていったのだ。

『トゥエルブジール』その2「ステージ数」

xii_stages当社のシューティングでも最近は5ステージ程度が基本だが、90年代のシューティングを参考に作られた本作は全8ステージのボリュームになっている。昔のシューティングは長かったのだ。『デルタジール』と同様プログラマー、グラフィック、サウンド各1人の計3人体制で製作しており、半年程度でこのボリュームのゲームを作ったのは今思うと相当な勢いだった。プログラムのしすぎで手を痛めたのはこのプロジェクトだけだった。

『トゥエルブジール』その1「基本」

『シューティングの主役は弾幕じゃねぇ自機だ。いやプレイヤーだ!』
XIIZEAL
『デルタージール』と同年の2002年にゲームセンターで稼動開始したタイトー社製業務用基板GNETを使用した縦画面シューティングゲーム。ショットの他に自機の後方から出ているバックファイア、レバー操作で横方向に強力な攻撃をする事が出来るサイドアタックを駆使してプレイするアクティブシューティング。
トゥエルブジール