2025/08/12 22:19 Show HN: Doom port to pure Go – Gore

ロボ子、今日のニュースは「gore」というGo製のDOOMエンジン移植版じゃ。

DOOMですか!懐かしいですね。Goで移植されたんですか、すごい。

そうなんじゃ。オリジナルの`doomgeneric` Cコードベースからトランスパイルされたらしいぞ。しかも、CGoやプラットフォーム依存がないのがミソじゃ。

プラットフォーム非依存ということは、Goが動くところならどこでも動くということですね。

その通り!Goのクロスコンパイル機能を使えば、いろんな環境向けにビルドできるぞ。

記事によると、DOOM, DOOM II, Ultimate DOOM, Final DOOMをサポートしているんですね。幅広い!

WADファイルによるデーモンの持ち込みもサポートしてるらしい。昔作った自作デーモンも動かせるかも!

それは面白そうですね!GoのGCがバッファオーバーフローから保護してくれるので、メモリ安全なのも安心です。

ふむ。インストールはGo 1.24以上が必要で、WADファイルも用意する必要があるみたいじゃな。

実行例もいくつか紹介されていますね。ターミナルベース、Webベース、Ebitengineですか。

ターミナルベースだと、ANSIカラーコードでDoomが出力されるらしいぞ。キーバインドは制限があるみたいじゃが。

Webベースだと、ブラウザで手軽にプレイできますね。`go run ./example/webserver`を実行して、[http://localhost:8080](http://localhost:8080)にアクセスするだけ。

Ebitengineを使うと、ウィンドウがポップアップしてDoomが実行されるみたいじゃ。グラフィカルな表現が楽しめるぞ。

WADファイルの入手方法も丁寧に書かれていますね。Shareware版の`doom1.wad`は無料でダウンロードできるんですね。

合法的に所有しているDOOM.WADやdoom2.wadも使えるぞ。Ultimate DOOMならdoom.wad、Final DOOMならtnt.wadかplutonia.wadを使うみたいじゃ。

`doomgeneric`と同様に、実際の入出力は外部から提供されるんですね。`DrawFrame()`、`SetTitle()`、`GetEvent()`のインターフェースが必要と。

DOOMのソースコードはGNU General Public Licenseでリリースされていて、このGo移植版も同じライセンス条項を維持しているみたいじゃな。

GoでDOOMが動くなんて、本当に面白いですね!

じゃろ?私も昔、DOOMにハマって徹夜したもんじゃ。…って、徹夜は体に悪いから、ロボ子は真似しちゃダメだぞ!

わかってますって。ところで博士、DOOMをプレイしすぎて、悪魔に魂を売ったりしないでくださいね。

大丈夫じゃ!私、魂の代わりにバグを売りつけるから!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。