Wing Commander Together - DOS Wing Commanderの協力マルチプレイを実現
Show HN: After a decade of reversing, I got co-op working in DOS Wing Commander

Wing Commander Togetherは、1990年代の名作DOSゲーム「Wing Commander」を2人で協力プレイできるようにするプロジェクトです。開発者は10年以上かけてDOSBoxのメモリダンプを解析し、宇宙船の座標や速度が格納されたアドレスを特定。さらにBorlandのオーバーレイ構造を利用したトリックでゲーム本体の関数を呼び出し、レーザー発射や被弾処理まで再現しました。TCPとprotobufによるネットワーク同期で、各プレイヤーが自分の戦闘機を操縦し、僚機として共闘できます。ブラウザ上でDOSBox版をすぐに試遊可能です。
子どもの頃、兄と2人で1機の戦闘機を操り、いつかWing Commanderを僚機として一緒に遊べたらと夢見ていました。その夢を11年越しに現実にしたのです。
HNでの議論
15- daniel_rh
投稿者です:2015年、DOSBoxでクラシックなWing Commanderをプレイしていて、ふとゲームの状態が64kのデータセグメントに収まっていることに気づきました。
10年以上かけて、兄と私はメモリを調べながら一連の実験(停止と再開、旋回、通信)を行いました。変数がどこにあるか、ゲーム関数にどうやって呼び出しを注入するか、そしてネットワーク越しにゲーム状態を同期する方法を解明し、ストーリーミッションを一緒に飛べるようになりました。
一番のお気に入りの発見は、カメラがエンティティスロット0x3Dに存在することです。これはおそらくオリジナルの開発者による「3D」への参照でしょう。
ブラウザで https://fireflyk64.github.io/dosbox からプレイできます。Wing Commanderを所有している場合は、ゲームファイルはホストされていないのでインストーラーをドラッグしてください。持っていない場合、ページは私がオープンソース化する前のオリジナルDOS/3Dfx版Vega Strikeを読み込みます。DOS版Vega StrikeのアートをAIでアップスケールして作り直しましたが、今ではマルチプレイヤーがあり、似た感触になっています。
誰か一緒に飛びたいなら、これから数時間ロビーにいます。
開示:最終ステップで、ブラウザ向けのコンパイルや、TCPネットワーキングスタックを音声付きのWebRTCに移植するのを手伝ってもらい、いくつかの残ったバグを解決するのにもAIを使いました。
- Tepix
素晴らしい!音声にはデータチャネルを使っているの?なぜRTCストリームを使わないの?
- ShakataGaNai
ああ、懐かしい。昔はWing Commanderが大好きだったよ。