見出し画像

VGS-Zero版Battle Marineをゲームギアに移植している件

Steamで販売中のVGS-Zero版Battle Marine(以下)を現在ゲームギア(GG)に移植中です。

GG版の進捗はTwitterの方でだいたいデイリー頻度で呟いています。

VGS-Zero とゲームギアは全く異なるゲーム機ですが、VGS-Zeroを開発する前段階でゲームギアやMSX(TMS9918A)のエミュレータを作ってVDPの仕様を学習した関係で、アーキテクチャの細部にそれらのDNAのようなものが意図せず組み込まれているのかもしれません。(互換性はありませんが)

RaspberryPi Zero 2W のベアメタル環境の限界をターゲットに作られたVGS-Zeroの方が桁違いに高性能なので、1990年代(テクノロジー的にはほぼ1980年代)のゲーム機であるGGへの移植は普通に考えれば無謀です。

CPU性能についてはフルアセンブリ言語で書けば(SDCCの最適化がかなり微妙なので)大丈夫だろうという想定でしたが、主にVDPの仕様差がキツイだろうという想定です。

蓋を開けてみると、スプライトやパターンの少なさについてはGGが低解像度(160x144)なこともあり割と何とかなりました。

ただし、VDPウェイトが中々キツイです。

GG実機のVDPだとVRAMへの連続的な書き込みに28Hzのウェイトを入れる必要があり、そのオーバーヘッドがかなり高いです。

Z80にはOTIRなどのOUT命令を連続実行する便利な命令がありますが、VDPウェイトの関係でそれらの命令を使うことができません。

実は、VDPウェイトを再現しているエミュレータは少ないので(※再現しなくてもゲームの再現性に影響しないため)、動作ターゲットをGGエミュレータに絞ればVDPウェイトは気にしなくても大丈夫かもしれませんが、折角GG向けに作るならやはり実機で動かしたいところです。もしかすると、VDPウェイトも完璧に再現した無駄に再現度が高いエミュレータもあるかもしれませんし。

そのため、実機検証環境(IPS液晶版GG+フラッシュカートリッジ)を準備して、実機で動作できるようにテストしながら実装しています。

VDPウェイトの無駄な時間を利用して後続の処理を先回し実行するなどして、少しでも「無駄な待ち」を削るという涙ぐましく、そしてコードが汚くなる努力をしています。

お陰でZ80のどの命令が何Hzなのか大分暗記することができ、コードはメンテナンスが困難なレベルでグチャグチャになっています。

何故ゲームギア?

Battle Marineには「3千本売る」というかなり無謀な目標(参考)を掲げていて、そのためのプロモーション(後パブ※)という体でGGへの移植を進めています。

※プロモーションには「前パブ」と「後パブ」というものがあり、販売前にTwitterで進捗をツイートしたりすることを「前パブ」といい、販売後に「買ってね」とツイートしたり広告を打ったりすることを「後パブ」といいます。(後パブは「後からパブリシティ」の略)

Battle Marineが3千本売れるまで、1日1万回感謝の「買ってねツイート」をしても、当然ながら売上に繋がることはほぼありません。恐らくフォロアーさんからブロックされるなり、ツイッター運営から垢BANされるだけなので総合的に見ればマイナスです。

ですが、「簡単に移植できないレトロゲーム機へ移植」の情報発信なら(少なくとも「買ってね」と呟き続けるよりは)効果的な後パブができるのではないかなと。

GGは以前仕様を細かく調べてエミュレータを作ったこともあり、開発に必要な知見があります。(GGソフト開発は今回が初ですが)

当初、「ゲームボーイアドバンス(GBA)が良いかも?」と思っていたのですが、GBAなら割と簡単にほぼ完全移植できそうだったので、移植が難しいGGを最初のターゲットにしました。

ハードの弱さには甘えない

今回GG版の移植に当たって、ハードの弱さに甘えないことを可能な範囲で心がけています。

「GGだからこれぐらいでも仕方ないよね」ではなく、「GGでここまで忠実に移植できるのか!?」と驚かれるような移植をした方がインパクト(≒パブリシティ効果)がありそうなので。

もちろん、スペック的に有利なVGS-Zeroには敵いませんが、例えばMSXの「ゴーファーの野望」のように「本家とは別物だがユーザーから支持される異色の移植作」であれば目指すことができる筈です。

私はそういう文脈が割と得意です。(東方VGSもある意味その文脈)

私と同世代(40代)のゲーマーは子どもの頃、本家(アーケード版など)と似つかない家庭用移植にガッカリした経験が少なからずあると思われますが、実のところ私は「がっかり移植」も含めた家庭用移植作が結構好きです。現代の「完全移植が当たり前」の世界ではほぼオーパーツ化してしまった体験ですが、無茶なハードに移植するからこそ出来る創作性に惹かれる方は少なからず居ると思っています。

現代でそれをやるとコストが無駄に高くなるからオーパーツ化してしまったものと思われますが、私の同人活動なら私の人件費は無料なので、人経費まわりのコストであれば無限に無茶をすることができます。

GG版は完成後はカートリッジ形式での販売を予定しているので、Steam版とGG版を両方買って遊べば、あの頃の失われた何かを得ることができるかもしれません。

ただし、ダウンロード販売ではなく物理メディアで、同人ソフトなので少ロット生産&原価の関係でお値段の方はVGS-Zero版と比べるとかなり高くなってしまうかもしれませんが…

そういった事情もあり、(開発途中ではありますが)なるべく多くの動画をツイッターで公開するようにしています。ストーリー重視のゲームではないので、買わなくても動画だけでだいたい雰囲気は伝わるかなと。

プロット作成

今回のGG移植は私の単独作品ではなく複数の関係者が絡んでいます。

プログラムは全部私が書いてますし、グラフィックも音楽も大半が(少なくとも動画で公開している範囲のものは)私が創ったものですが、プログラム以外のところで色々な方々の協力を得ながら開発中です。仕事では普通のことですが同人活動でそれをするのは初めてなので新鮮かも。

複数の関係者が携わってひとつの作品を開発する場合、ディレクションやらマネジメントが大切だと思われがち(※実際大切)ですが、作品の世界観などを関係者間で共有することが最重要だと思っているので、普段は私の頭の中にしかない本作のストーリープロットをテキストに書き起こしてみました。

【起】
敵の陽動作戦に嵌められ本拠地が手薄になった所を敵国から急襲された所から物語は始まる

【承】
本部待機要員だった主人公に 「主力艦隊が合流するまで単騎交戦せよ」と指令が下る

【転】 
・交戦の結果、敵前衛艦隊の無力化に成功(LV7クリア)した主人公だったが、味方の応援が来る様子は無い
・敵主力艦隊が迫りくる中、司令官から「SHI-NU GA YOI(死ぬがよい)」と入電(LV8開始)
・今回の件は、陽動作戦に嵌ったことを含めて主人公抹殺を企図した司令官の謀略だった

【結1】(LV8をクリアできなかった場合の結末)
・瀕死の重傷を負った主人公だったが辛くも敵兵に救われ一命を取り留める
・単騎戦闘する勇気と戦力を称賛された主人公はそのまま敵国軍へ迎え入れられる
・獲得階級は敵国軍での最終階級である(※だからSteam版のアチーブメントの階級章に敵キャラの意匠が描かれている)
・敵国に寝返った主人公 vs 軍事クーデターにより皇帝となった元司令官 …to be continued Battle Marine II ※これは嘘 ^^;

【結2】(LV8をクリアした変態シューター限定の結末)
・激戦の末、敵主力艦隊を単騎で無力化に成功した主人公だったが限界を迎えた自機が爆発してしまう
・その後、主人公の姿を見た者は居ない
・これがあの「バトルマリーン伝説」の史実である
(称号「伝説の水兵」を獲得)

Battle Marine ストーリープロット
(※VGS-Zero版)

まぁ、全部後付けで考えたのですが、「何故ひとりで闘っているのか?」「SHI-NU GA YOIとは?」「階級章に何故敵キャラの意匠が?」「伝説の水兵とは?」あたりの伏線(?)をうまく回収できているのではないでしょうか。

世界観やキャラクターのデザインは私の領分ではないのでしてません。

さて、ここからどんなキャラクターや世界が生まれるのかな。

この記事が気に入ったらサポートをしてみませんか?