Hacker News 中文摘要

RSS订阅

展示 HN:Doom 移植到纯 Go 语言 – Gore -- Show HN: Doom port to pure Go – Gore

文章摘要

该项目是一个用纯Go语言实现的最小化Doom游戏版本,由AndreRenaud开发并托管在GitHub上。

文章总结

项目名称: GitHub - AndreRenaud/gore: 纯 Go 语言实现的极简版 Doom

项目简介:
该项目是一个基于 Go 语言实现的极简版 Doom 游戏引擎,移植自 doomgeneric 代码库。该项目完全使用 Go 语言编写,不依赖 CGo 或其他平台相关库,实现了跨平台运行。通过 Go 的跨编译特性,可以在任何支持 Go 的平台上运行。项目支持多种 Doom 版本(如 DOOM、DOOM II、Ultimate DOOM、Final DOOM),并允许用户通过 WAD 文件加载游戏数据。

主要特点: - 跨平台: 可在任何支持 Go 的平台上运行。 - 极简依赖: 仅依赖 Go 标准库。 - 多版本支持: 支持多种 Doom 版本。 - WAD 文件支持: 允许用户加载自定义的 WAD 文件。 - 内存安全: 利用 Go 的垃圾回收机制,避免缓冲区溢出等问题。 - 跨编译: 可以从任何平台编译到目标平台。

缺失功能: - 每个进程只能运行一个实例,因为代码中仍保留了许多全局变量。 - 部分常量被错误地导出为公共变量。 - 缺乏友好的外部 API 用于状态检查。 - 代码中仍存在一些 unsafe 操作。

安装与运行: - 前提条件: Go 1.24+ 和一个 WAD 文件。 - 运行示例: 项目提供了多个示例,包括终端、Web 和 Ebitengine 版本。用户可以通过命令行运行这些示例,体验 Doom 游戏。

WAD 文件获取: - 用户可以从 Doomworld 下载免费的共享版 WAD 文件,或使用自己拥有的商业版 WAD 文件。

平台实现: - 类似于 doomgeneric,项目的输入输出由外部提供。项目定义了一个 DoomFrontend 接口,用于处理帧渲染、窗口标题设置和事件获取。

许可证: - 项目遵循 GNU General Public License (GPL-2.0) 许可证。

项目资源: - 项目主页: GitHub - 许可证: GPL-2.0

项目状态: - 项目已获得 212 个星标和 7 个分支,主要由 Andre Renaud 维护。

评论总结

评论内容总结:

  1. 对Go语言在游戏开发中的潜力表示认可

    • pjmlp认为尽管对Go的设计有批评,但类似项目证明了游戏开发不一定需要C或C++。
      引用: "I love projects like these, as they make the point not everything needs to be C or C++ for game development."
    • alexchantavy幽默地表示希望在工作中通过kubectl run doom来打怪。
      引用: "I'd love to kubectl run doom and kill monsters when I'm supposed to be working."
  2. 对项目技术细节的疑问

    • nottorp询问Go语言中可用的GUI/图形/游戏库,提到项目提到的ebitengine。
      引用: "Say, what gui/graphics/game-ish libraries are available for Go? The ebitengine that this project mentions?"
    • romperstomper对代码集中在单个大文件中表示好奇,猜测是否与Go的模块处理方式有关。
      引用: "Just curios, why everything is in a single large file (doom.go ~46K LOC)? Is it because of how Go handle modules?"
  3. 对项目内容的重复性和命名的评价

    • xxs指出相同的内容在一个月前已经发布过,且文本完全一致。
      引用: "If I recall the exact same topic has been posted a month back; checked - the exact same text - word by word."
    • markpapadakis对项目名称表示赞赏。
      引用: "What an inspired name :)"
  4. 对游戏兼容性的提问

    • dvh询问项目是否支持运行特定的游戏文件(myhouse.wad)。
      引用: "Will it run myhouse.wad?"

总结:评论中对Go语言在游戏开发中的应用表示认可,同时对项目的技术细节、内容重复性和兼容性提出了疑问和幽默的评论。