ある開発者が、1990年代のDOSクラシック作品『Wing Commander』を、協力型マルチプレイヤー体験へと変貌させることに成功しました。10年以上を費やしたこのプロジェクトにより、2人のプレイヤーが同じゲーム世界内で別々の機体を同時に操縦できるようになりました。これは、ゲームの内部メモリをリバースエンジニアリングして、機体の座標や速度がどこに保存されているかを特定し、それらの値を異なるマシン間でリアルタイムに同期させるためのネットワークレイヤーを構築することで達成されました。

核心となる技術的課題は、ゲームの640K DOSメモリセグメント内にある特定の変数を分離することでした。開発者は、ゲームを停止している時と機体が移動している時のメモリスナップショットを取得することで、位置と速度を司る正確なバイトを特定しました。しかし、単にこれらのメモリアドレスに書き込むだけでは、レーザーやシークミサイルの発射といった複雑なアクションには不十分でした。これを解決するために、開発者はゲームの元の関数を乗っ取る「トランポリン」システムを作成しました。このゲームは、プレイヤーの進路に応じて異なるコードセグメントを異なるメモリ位置にロードするBorlandのダイナミックオーバーレイを使用していたため、開発者はこれらのジャンプを挿入するための安定した場所を見つける必要があり、最終的にはゲームのUI内の特定の文字列を使用してリダイレクトロジックをホストすることにしました。

機体の位置と速度を示す特定のメモリアドレスを示す64Kデータセグメントの技術図
ゲームのデータセグメント内で機体の位置、速度、および速度を司る特定のバイトを特定するメモリマップfireflyk64.github.io

この図は、機体の動きを司る正確なバイトを特定するために使用されたメモリフォレンジックを示しています。

停止した機体とヨー回転を伴う機体のメモリバイトの注釈付き比較
機体のヨーが調整された際の特定のバイトの変化を示す注釈付きメモリダンプfireflyk64.github.io

この視覚資料は、異なる機体状態のメモリスナップショットを比較することで変数を分離するプロセスを実証しています。

この体験を現代の観客が利用できるようにするため、プロジェクトはEmscriptenとlobbylinkと呼ばれるカスタムのGoベースのロビーシステムを使用してWebに移植されました。このセットアップはWebRTCを使用してピアツーピア接続を確立し、プレイヤーは公開IPアドレスを共有したり、複雑なネットワークポートを手動で設定したりすることなく、ブラウザで直接ルームに参加して一緒に飛ぶことができます。このシステムは毎フレーム機体の位置と発射イベントを正常に同期させますが、このプロジェクトはレガシーソフトウェアを「操り人形のように動かす」ことの極端な複雑さを浮き彫りにしています。開発者は、最も正確なゲーム体験を保証するために、単なるメモリへの書き込みだけに頼るのではなく、元のゲームの物理演算と戦闘コードを流用する必要がありました。現在の実装では、同期されたチャットもサポートされており、一人のプレイヤーが入力したメッセージがもう一人のプレイヤーのVirtual Display Unit (VDU) に表示され、オリジナルのタイトルの没入感のある雰囲気を維持しています。

同期されたチャットメッセージが表示される、異なるコックピットを示す2つのブラウザウィンドウの並列表示
それぞれのコックピットにいる2人のプレイヤー間で同期されたチャットを示す協力型マルチプレイヤー体験の実演fireflyk64.github.io

この画像はプロジェクトの最終的な成果を示しており、2人のプレイヤーが共有されたブラウザベースの環境で相互作用している様子を捉えています。

このアプローチにおける顕著な制限の一つは、元のゲームのデータセグメントの特定のメモリレイアウトへの依存です。開発者はこれらのアドレスを手動で特定してマッピングする必要があったため、このシステムは特定のバージョンの『Wing Commander』に高度に特化しています。さらに、WebRTCとlobbylinkシステムがネットワークを処理する一方で、「トランポリン」システムの安定性は、ゲームの元の実行フローと注入されたネットワークコマンドの間の繊細なバランスの上に成り立っており、レガシーコードオーバーレイの予測不可能な性質によって依然として影響を受ける可能性があります。

最終的に、このプロジェクトは低レベルのメモリフォレンジックと現代のWeb技術の高度な融合を実証しています。ゲームのカメラがエンティティスロット0x3Dに存在すること(元のプログラマーによる「3D」のジョークの可能性)を特定し、それを出発点として使用することで、開発者は1990年代のハードウェアの制約と2020年代の接続性の間の溝を埋めることができました。その結果、オリジナルのゲームのメカニクスを維持しながら、元の制作者が意図していなかった共有体験を可能にする、ブラウザベースのプレイ可能な協力モードが実現しました。