- 2003年のWindows専用TPSゲーム GunZ: The Duel を
→ WebAssembly + WebGLベースでブラウザ上で実行可能にポーティング
- インストール不要で、ChromeでURLを開くだけですぐにプレイ可能 https://gunz.sigr.io/
- Linux、macOS、モバイルまで ほぼあらゆる環境で動作
- 既存のC++コードを ほとんど修正せずに維持
- 新たに書かれたコードの 約99%はAIが生成
なぜ意味があるのか
- 従来のPCゲーム:
- ダウンロードとインストールが必要
- Windows依存
- 今回の結果:
- 完全に同一のゲームをブラウザで実行
- 「似た実装」ではなく 原作そのままを移植
- これまでは「理論上は可能だが現実的には不可能」という領域だった
過去の試みと失敗
- 過去のアプローチ:
- JavaScript + Three.jsで エンジンを新規実装
- 結果:
- マップ描画までは成功
- エンジン全体の再実装の難易度が高すぎて中断
- 結論:
核心的な問題: Windows依存性
- GunZはC++ベースで、Direct3Dに依存
- 問題:
- Direct3DはWindows専用API
- ブラウザ(WebGL)では直接使用不可
- 単純なwasmコンパイルでは解決しない
- つまり:
- プラットフォーム非依存コードだけがwasm化可能
- グラフィックスAPI依存部分が最大の障壁
既存アプローチの限界
- ゲームコードを直接修正
- 自動変換(D3D → WebGL)
- 結論:
核心アイデア: 「翻訳レイヤー」
- アプローチ:
- ゲームコードはそのまま維持
- Direct3D呼び出しを横取りして
- リアルタイムでWebGLへ変換
- 実装:
- D3D9 APIと同一インターフェースを持つ WebGLラッパー
- ゲーム ↔ グラフィックスAPIの間に挿入
- 効果:
- ゲームコードの修正はほぼ不要
- Windows依存性を除去
- 移植コストを ラッパー実装 に限定
AIの役割
- 使用ツール:
- Google Antigravity
- Claude Code(Maxプラン)
- 結果:
- 大規模なコード分析と修正を自動化
- 数週間かかっていた問題を 数時間で解決
- 実質的に人間にはできない作業を代行
- 特に:
- D3D → WebGLラッパー実装の大半をAIが担当
要点まとめ
- 「ゲームを作り直す」のではなく
→ 既存コードをそのまま生かす方向で解決
- 核心技術:
- WebAssembly
- Direct3D → WebGL翻訳レイヤー
- 最大の変化:
- AIのおかげで 大規模レガシー移植が現実的な作業になった
- 示唆:
- 今後は 過去のゲームやソフトウェアのWeb移植の難易度が急激に下がる可能性
10件のコメント
AIもすごいですが、D3D9がインターフェースとしてうまく分離されていたことのほうが大きい気がします。もし直接参照で絡み合っていたら、はるかに難しかったと思います。
一昨日だったかInvenの記事を見ましたが、Direct3Dの翻訳レイヤーを構成して処理したということなんですね。
試しに1分も経たないうちに触ってみたときは、なんだか画質がいまいちだという印象が強かったのですが、それが新しく一から作るという概念よりは翻訳レイヤーを通してそのままだったことを考えると、そうなるのもあり得るとは思いますね...
ただ、元のブログは少し危うい運営をする予定のように思えます。翻訳文だと明記するか原文だと明記しなければならないのに...本人であるかのように見せている感じがかなり強くて...コメントでもその点を指摘している部分があるのに返信がないですね。
(そもそも元ブログの参照記事が全部日本語寄りになっています。)
おかしい部分として、韓貨基準でアンチグラビティのお金が月3000ウォンのプランはありません。画像などはすべて日本語が表示されています。しかもある画像には英語も入っています。
そうであれば、最初から韓国語に変換して使ったのではないかと思います.
お支払いされたというのは5xですが、キャプチャは20xではありますね。まあ、日本にお住まいの方かもしれませんし……
見ていると本人なのではないかという気もします。
sigr.ioにアクセスしたときに表示される文句もエスパの歌詞ですし、
Gunzのプロジェクト名もWhiplash Gunzでエスパの曲名ですし、
velogのハンドルも
aespaで一貫していて、エスパが好きな感じがあるので、本人が翻訳にかけてvelogに投稿したのかな? と思ってしまいます。ご本人がやったわけではないのですね。
でも、GunzのSteam版がリリースされたのに……法的に問題ないのかなと思います。
本当にすごいです。
とても大好きだったゲームなので、また復活させてくださってありがとうございます。
でも、接続している人がいませんね
サーバーもブラウザ内で動いているので、そういうことなのかもしれません。複数人で一緒にやるなら、プレイする人同士で情報をやり取りして、互いにWebSocketで接続する必要がありそうです。
すごいです。AIの真の活用のようですね。