みなさん、PCのオンラインゲームって遊んだことありますか?
最近はスマホやコンシューマー機とのクロスプラットフォームが当たり前ですが、昔のPCゲームといえばWindows専用で、長いダウンロードとインストールを耐え抜いてようやく遊べる……というのが普通でしたよね。
今回私は、2003年にリリースされた伝説のオンラインTPS「GunZ: The Duel」を、WebAssemblyとWebGLを使ってブラウザ上で動くようにしてみました。
ダウンロードもインストールも不要。やることは、Google Chromeでページを開くだけです。
当時、何時間もかけて準備したあのゲームが、**サイトを開くだけでプレイできる**。これ、古参プレイヤーからしたらちょっと感動しませんか?
しかも驚きなのが、新規で書いたコードの**99%はAI(ClaudeやGoogleのAI)に書いてもらった**ということです。
(※Windows、Mac、Linux、なんならスマホでも動きます。操作は無理ゲーですがw)
実は数年前、JavaScript(Three.js)を使って1からブラウザ版を作ろうとしたことがありました。でも、ゲームエンジンをゼロから再実装するのはあまりにハードルが高く、マップを表示させるだけで力尽きてしまったんです。
GunZのソースコード(C++)は、20年という長い歴史の中でコミュニティによってメンテナンスされてきました。「これをそのままブラウザで動かせれば……」とずっと思っていましたが、そこには**「Direct3D」**という巨大な壁がありました。
GunZはWindows専用の描画API(Direct3D)にベッタリ依存しています。ブラウザにはそんなAPIはないので、普通ならWebGL用に数万行のコードを書き直さなければなりません。正直、個人の趣味でやるには寿命が足りないレベルの作業です。

「自分で書くのが無理なら、AIに全部やらせればいいじゃない」
そう開き直って、最強のAIエージェントたち(Google AntigravityやClaude Code)を雇いました。
私が取った作戦は、ゲームのコードを書き換えるのではなく、**「Direct3Dの命令をリアルタイムでWebGLに変換する翻訳レイヤー」**をAIに作らせることです。
ゲーム側: 「Direct3Dで描画して!」と命令を出し続ける
翻訳レイヤー: 「はいはい、それをWebGLに変換してブラウザに出しとくね」と橋渡し
この「D3D9 to WebGLラッパー」のおかげで、ゲーム本体にはほとんど手を加えずにブラウザ化に成功しました。AIのコーディング能力は凄まじく、数週間詰まっていたバグも数時間で解決してくれたのには、正直震えましたね。
描画以外にも、いくつか面白い工夫を詰め込んでいます。
ゲームサーバーのWebWorker化: なんと、ゲームサーバーもC++からビルドしてブラウザ内で動かしています。1人で遊ぶ分には、通信すら発生しない「サーバーレス」な設計です。
音声の爆速ロード: 元の音声ファイル(WAV)をOpus形式に変換したところ、容量を**88%も削減**できました。おかげで、サイトを開いてから10秒以内にはプレイ可能です。
入力周りの再現: ブラウザの操作をWindowsの入力信号(Win32メッセージ)に変換してゲームに流し込んでいます。おかげで、当時の操作感そのままで遊べます。
正直なところ、私は3DグラフィックスやDirect3Dの深い知識はほとんどありません。それでもこのプロジェクトを完遂できたのは、AIが「実務」を肩代わりしてくれる時代になったからです。
20年前のゲームがブラウザの <canvas> の上でヌルヌル動いている。子供の頃に熱中したロマンを、最新技術とAIの力で蘇らせることができました。
昔、スタイリッシュに壁を走っていた元プレイヤーのみなさん。
ぜひ一度、リンクを踏んで「あの頃」に一瞬でジャンプしてみてください。
ここまで読んでいただき、ありがとうございました!
---
ぜひチェックしてみてください!
コメントはまだありません