オススメ機能
Twitter
お気に入り
記事履歴
ランキング
4Gamer.net
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
QRコードでLINEの4Gamer
アカウントを友達登録すると
月〜金の週5回,21時に厳選
ニュースをお届けします!
※購読にはLINEアプリが必要です
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った
特集記事一覧
注目のレビュー
注目のムービー
印刷2016/03/19 19:36

イベント

[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

Brian Provinciano氏(Developer,Vblank Entertainment)
 GDC 2016最終日の北米時間3月18日,「MS-DOS」の名前が入った奇妙なセッションが行われた。題して「From PS4 to 1.44MB Floppy: Porting 'Retro City Rampage' to MS-DOS」(PS4から1.44MBフロッピーディスクへ。Retro City RampageをMS-DOSへ移植してみた)である。「いまどきMS-DOSもないだろう。これは色物セッションに違いない」と思って参加してみたところ,意外や意外,かなり真面目な内容だった。
 Retro City Rampageの開発元である,Vblank EntertainmentのBrian Provinciano氏によるセッションの概要をレポートしよう。


現行世代のゲームを1.44MBのフロッピーディスク1枚に収めろ


 セッションのテーマになっている「Retro City Rampage」というゲームは,8bitゲーム機風のレトログラフィックが特徴のアクションゲームだ。

PC版Retro City Rampageの画面。ゲーム画面の外枠がブラウン管テレビを模したデザインになっているなど,細部まで凝ったゲームだ。
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 ビジュアルがレトロなだけでなく,多数のプラットフォーム向けにリリースされているのも特徴である。現時点での対応プラットフォームは,PC(Windows),MacOS,Linux,PlayStation 4PlayStation 3,PlayStation Vita,Xbox 360にWii U,さらにニンテンドー3DSとiOSにも対応といった具合で,実に多彩というか,移植が趣味なんじゃないかと言いたくなるほど多い。MS-DOS版は,これに加わったもう1つのプラットフォームというわけだ。

MS-DOS版Retro City Rampageの動作要件。推奨はPentiumだが,486DXでも動作することになっている
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 Provinciano氏がMS-DOS版の作成にあたって目指したのは,i486クラスのCPUで十分に動作することと,メモリ使用量を4MB以内に抑えること,そして,ゲーム全体を記憶容量1.44MBのフロッピーディスク1枚に収めることの3点だったという。
 フロッピーディスクといわれても,見たことがない読者のほうが多かったりするかもしれないが,ペラペラの薄い樹脂の円盤上に磁性体を塗って,磁気でデータを記録する記録メディアのことだ。。大昔のPCにはHDDすらなかったので,フロッピーディスクからOSやプログラムを読み込んで,実行していたのである。

Provinciano氏が掲げた3つの目標。わざわざフロッピーディスク1枚に収めなくてもいいような気もするが,それがこだわりというものだ
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った


MS-DOS向けの開発環境がそもそもない!?


 さて,目標を設定しては見たものの,実現には当然ながら,いろいろと困難が多かったそうだ。まず第一に,開発環境がない。「最近のシステムなら良い統合開発環境があったり,素晴らしいドキュメントが整備されているが,MS-DOSのプログラミング環境はすべてここにある」と述べてProvinciano氏が表示したのは,廃棄されたコンピュータの山である。説明するまでもないが,MS-DOS向け開発環境など,すべてゴミになっているということだ。

Provinciano氏が「MS-DOSのプログラミング環境はすべてここにある」として表示した写真は,どう見てもゴミの山です……
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 「486DXをネイティブで搭載するマシンは,ebayで探さないことには手に入らない。また,ドキュメントは(紙の)本であり,これまたリサイクル品を探さないと手に入らない」とProvinciano氏。なにはともあれ,動作要件相当のPCと統合開発環境,そして,もとになるRetro City Rampageの主要プラグラムコードをあまり変更することなく,MS-DOS向けにコンパイルできる環境が必要だったという。

開発機かWindowsでクロスコンパイルできる環境が欲しかったとProvinciano氏。既存のコードをさほど変えずにコンパイルできるとなおいい
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 開発環境としては当初,懐かしい人もいるだろう「Borland C++ 5.02」に目をつけたものの(※最終バージョンでもMS-DOSアプリの開発ができた),C++のTemplateが使えないために放棄。最終的に,「Watcom IDE」を選択したそうだ。Watcom IDEというのは,かつて商用だった「Watcom C++」コンパイラを含む無料の開発環境である(関連リンク)。

紆余曲折を経て,開発環境にはWatcom IDEを選択
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 開発環境は決まったが,MS-DOSと今のOS環境とでは,いろいろと事情が違う。「まず違うのはグラフィックスだ」とProvinciano氏は述べた。MS-DOS時代のグラフィックス表示には,VGAと呼ばれたグラフィックス表示回路のハードウェアにアクセスする必要があり,ゲームエンジンやOSやドライバソフトなどで多層化された現在のOSと違うのは当然である。
 筆者もかつて,MS-DOS上でVGAハードウェアにアクセスする方法を書いた解説書を出したことがあったりするので,Provinciano氏の話は,説明を聞かなくてもよく分かる話だったりする。

Provinciano氏が示したVGAにおける表示の概念図。これは,VGAの640×480ドット16色モードを示したもので,4つのプレーンに書き込まれた4bitの値で,16色カラーパレットの色が選ばれて表示されるという仕組みだ
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 MS-DOS版Retro City Rampageでは,VGAの「MODE 13H」を使うことになったそうだ。「MODE 13Hは256色が表示できるモードで,1ドットが1byteに対応する。そのため,とても簡単で速い」と,Provinciano氏は選択の理由を述べている。
 VGAの詳しい説明が講演の趣旨ではないので省略するが,MODE 13Hは,320×200ドットで256色表示が行えるVGAの画面モードのこと。もとを質せば,VGAよりも古い「MCGA」というゲーム向きのグラフィックスシステムで導入された表示モードだったりする。

Retro City Rampageでは「MODE 13H」を使用。もともとがゲーム用の表示モードみたいなものなので,当然の選択だ
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 もう1つ,開発で大きな問題として立ちはだかったのが「システムタイマーの割り込み」(IRQ0)だそうだ。「(MS-DOSにおける)システムタイマーの値(※割り込み周期)は55ms。これでは60fpsで表示しようとしても,1フレームに1回のタイマー割り込みすら入らない」(Provinciano氏)。だが幸いなことに,タイマー割り込みの周期は変更できるので,Provinciano氏は最小値である13.75msに変更することで対応したという。
 ところで,「ゲームなら,V-Sync割り込みを使うのが当たり前では?」と思った人もいるかもしれない。実のところ,MS-DOS時代のVGAは,V-Sync割り込みが標準ではなかったのである。そのため利用できないPCもあったので,V-Sync割り込みを前提でゲームを作れなかった,というわけだ。思えば不自由なアーキテクチャだったものである。

システムタイマーの割り込み周期は55msだったが,変更して対応できた
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 そのほかにも,ゲームパッドは直接I/Oポートを読まなければならないとか,サウンドカードは標準搭載ではないので,PCスピーカー(※ビープ音のことだ)を使うといった具合に,いろいろな制限があったそうだ。そうした問題を乗り越えて,Retro City RampageはMS-DOSへ移植されたのである。


MS-DOSへの移植が新たなアイデアのヒントをもたらす


 さて,こうした苦労を経て,3つの目標はどれくらい達成できたのだろうか。
 最初の「486DXでも動く」という性能面だが,これについてProvinciano氏は,なかなか印象的なことを述べている。MS-DOS時代のゲームで性能を最適化するなると,すぐに「アセンブラを使う」という発想にとなるところだ。しかし,Provinciano氏曰く「大抵の場合は,アルゴリズムがアセンブラを上回る」ことが分かったそうだ。
 ただし,コードの書き方によって効率には善し悪しが生じるので,そこは注意が必要とのこと。下のスライドはその例だが,これはMS-DOSに限った話ではなく,現代のアプリケーション開発でも起きる一般的な話である。

左右とも,同じ処理をしているコードだが,生成されるマシンコードの効率はだいぶ違う。この例は,Watcom C++での話だが,現在のコンパイラでもこういったことはある
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 メモリ使用量を4MBに抑えるという目標は,MS-DOSのメモリ割り当てシステムに問題があったものの,とくに支障なく乗り越えられたという。一方で,記憶容量1.44MBのフロッピーディスク1枚に収めるという目標は,かなり苦労があったそうで,いろいろと工夫したものの,1.58MBになってしまったそうだ。

いろいろと工夫したけれど,1.58MBになってしまった。さらに200KBは切り詰めなければならない……
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 そこで,まずアセットを簡略化した。下のスライドで一目瞭然だが,もとになったプラットフォームの画面に比べると,装飾がだいぶ少なくなっている。さらに,コリジョン判定用のオブジェクトをあらかじめ作っておくのではなく,メモリに読み込んだ後で生成するといった手法も取り入れることで,なんとかデータ量を減らしたそうだ。
 しかし,それでも1.44MBには圧縮しきれなかったので,コンテンツの一部はやむなくカットしたそうである。こうした多大な苦労を経て,MS-DOS版をフロッピーディスク1枚に収めることができたと,Provinciano氏は述べていた。

左がもとになったもので,右がMS-DOS版の画面。見比べると分かるが,MS-DOS版は看板や壁の文字,屋上のオブジェクトが省かれている
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

それでも入りきらなかったので,エクストラキャラクタやミニゲーム,擬似3Dレースシーンが削除された。対応言語も英語のみに
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 フロッピーディスク1枚に収まったRetro City Rampageだが,HDDへのインストーラも付属しているとのことだ。

HDDへのインストーラー画面。右上のプログレスメーターあたりが,いかにもDOS風味
[GDC 2016]PS4のゲームをMS-DOSに移植? 8bit風アクション「Retro City Rampage」開発者が21世紀におけるDOSゲーム開発を語った

 さて,この話を読んで,「無駄なことをしているなあ」と思った人もいるだろう。2016年にもなって,MS-DOS用のゲームを作る技術が,何の参考になるのかと。だが,Provinciano氏は,講演の最後に「MS-DOSへの移植から得た経験は,ほかのプラットフォームにも活かすことができる」と述べている。
 たとえば,高速化に適したコードの書き方やデータ削減のテクニックは,どのプラットフォームでも有用であろう。スマートフォン向けゲームのように,データ量はなるべく削減したいというときにも,役立つ考え方はありそうだ。

 とはいうものの,やはりProvinciano氏は,レトロなハードウェアでのプログラミングが好きでたまらないのだろう。グラフィックスの描画テクニックを説明するところで,スーパーファミコンのROMカートリッジに使われていたメモリ管理チップの話が飛び出したりと,セッション中にはたびたび,ゲーム開発オタクっぷりを炸裂させていたからだ。
 そんなProvinciano氏のオタクっぷりが詰まったRetro City Rampage。さすがにMS-DOS版をプレイするのは厳しいだろうが,興味が湧いた人は,プレイ可能なプラットフォーム版でプレイしてほしい。

「Retro City Rampage」公式Webサイト(英語)

4Gamer GDC 2016関連記事一覧


  • この記事のURL:
line
4Gamer.net最新情報
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:12月17日〜12月18日