Show HN:我们的太空游戏内置了一个能跑 Linux 的 RISC-V 模拟器

查看原文 HN 讨论

文章摘要

这是一篇 Show HN。独立游戏工作室 Against All Odds 正在开发一款太空星球改造游戏《SEEDS - Echoes Beneath the Sands》,游戏里有一台完全模拟的 Linux 电脑。帖子最初链接的是工作室首页,有人抱怨首页看不出技术内容,团队成员(HN 用户 nor-and-or-not)便专门写了一篇技术博客,于 2026 年 10 月 3 日发布,管理员应提交者要求把链接换成了这篇文章。以下内容综合这篇博客和作者在帖子正文里的自述。

游戏和团队。 按帖子正文的介绍,这是一个成员都出身于 demoscene(演示场景)的小型独立工作室,这款游戏已经做了大约三年。主角 Naxiah 为一家星际种子和地球化设备分销商工作,负责把种子和设备送到遥远星系、启动新星球的生态。途中她坠毁在一颗荒凉的小星球上,好在船上带着设备,可以建起基地活下去,但这颗星球当然并非无人居住,有外星人和各种太空生物,还有一个叫 ROBO RB-23 的机器人一路陪伴。游戏用 Object Pascal 编写,跑在团队自研的游戏引擎 PasVulkan 上,物理引擎、RISC-V 64 位模拟器 PasRISCV、类 JS/Lua 的脚本语言 POCA 也都是自己写的,其中不少以自由开源软件发布。按评论区的说法,团队一共三个人,其中之一是 demoscene 传奇组织 farbrausch 的成员 BeRo。目前游戏是沙盒模式,自动化功能刚起步,生存和剧情模式还在开发,Steam 页面已经上线,正在为抢先体验版打磨。

为什么要在游戏里模拟一台真电脑。 博客开头说,玩家在基地电脑的程序选择器里打开星球概况、统计数据之类的工具时,运行的都是原生 Linux 程序:即使你在 Windows 上玩,这些 ELF 二进制也是在一台模拟的 64 位 RISC-V 机器上、在 Alpine Linux 里执行的。配图说明写着“这是一台真正的 RISC-V Linux 机器,不是假终端。拿到 root 了?”。PasRISCV 和配套前端 pasriscvemu 都以宽松的 zlib 许可证开源。

模拟了什么。 作者解释,可以只模拟用户态,也可以模拟一整台虚拟机,他们选择了后者:显示和存储设备、中断,事无巨细都模拟到位,让运行其上的内核以为自己在一套完整的硬件上。指令集是 64 位 RISC-V,作者特意提到它和 x86、ARM 这些专有架构不同,是开放标准,基于它造硬件不用为指令集本身付授权费。技术上支持多核(SMP/多 HART)、RV64GC 和 RVA23,包括虚拟化扩展、向量扩展以及标量和向量密码学扩展。

帖子正文还提到,他们打算在游戏里做一批可以在基地电脑、街机或飞船上玩的小游戏,已经有一个 2D 太空射击和一个街机小游戏的原型,还有一张能玩国际象棋和“某个方块游戏”的全息桌;而且“当然,它也能跑《毁灭战士》”。博客结尾说 Linux 是这款游戏的一等平台,并透露创作和开发团队有三分之二的人以 Linux 为主力系统。

HN 评论精华

本帖 98 分、约 37 条评论,规模不大但气氛友好,几乎每条评论都有团队成员 nor-and-or-not 的回复。

先要链接,再要文章。 verst 在 Steam 页面上看到 PasVulkan 和 PasRISCV 都是开源软件,请求给出链接,nor-and-or-not 贴出了 PasRISCV、pasriscvemu、PasVulkan 和脚本语言 POCA 的 GitHub 仓库,并说明 farbrausch 的 BeRo 占了团队的“三分之一”。karpour 说自己很久以前有幸和 BeRo 短暂待过同一个 demo 组,BeRo 是他见过最不可思议的开发者之一。sippeangelo 抱怨链接指向首页,什么技术内容都没写,首页读起来像“第 1001 个太空版生存建造游戏”。nor-and-or-not 先是在评论区贴出一大段 PasRISCV 的技术介绍(谦称自己不是这方面的专家,BeRo 才是),随后干脆写了上文那篇正式的博客,dang 应要求换了链接,sippeangelo 回了句“太棒了,谢谢!”。

0x10c 的影子。 AntiRush 和 pinewurst 都想到了 0x10c,那是《我的世界》作者 Notch 当年宣布、玩家可以给飞船上的模拟 16 位 CPU(DCPU-16)编程的太空游戏,后来没做完就放弃了。Den_VR 一句“确实没做完”,DougN7 说那是他曾经最期待的游戏之一。nor-and-or-not 说抽屉里还留着三件深蓝色的 0x10c T 恤,而且可以在 SEEDS 的电脑上运行许多 DCPU 模拟器、解释器和汇编器来和星球互动。seanhunter 提到《Stationeers》,它允许玩家用一种类 MIPS 的汇编语言 IC10 编写自动化,但脚本长度上限是很大的限制,所以 SEEDS 内置一个如此灵活的自动化平台很吸引人,他表示抢先体验一上线就买。

玩家的脑洞。 PunchyHamster 描述了自己构想过的类似太空游戏:设定是“能抗深空辐射的技术也限制了算力”,所以气闸、空间站和飞船子系统都跑在 8 到 64KB 的慢速微控制器上,点了相应技能的玩家可以破解它们、改写程序,可用的语言从汇编、Rust 到 BASIC 和 MicroPython;高级反汇编器还能给出高级语言源码;甚至可以像现实中刷汽车 ECU 一样,解锁同一款引擎被软件锁定的功率档位,或者在空间站的大型主机上装密码嗅探器。nor-and-or-not 说他会玩,取决于游戏里用什么语言。vessenes 建议设置延迟极高的深空中继,接到 IPv6 路由器上,让游戏里有一点对外连接,只是非常慢,直到玩家研究出“安塞波”(科幻中的超光速通讯装置)技术;nor-and-or-not 回答,看着 ping 一个个超时会让人非常沮丧。hexapus 建议做多人模式并开放游戏内网络,让玩家自己写聊天程序、在“银河互联网”上分享各自改造星球的进展。nor-and-or-not 说合作模式已经在 alpha 测试,很可能抢先体验一开始就有,基于 BeRo 开源的网络库 RNL;完整的多人模式需要更多规划,会在正式版之后作为更新推出。gavmor 问自动化能做什么,得知可以塑造地形、放置物品后说要“把它塞满希尔伯特曲线”,nor-and-or-not 回答小外星人们一定会很喜欢、仔细探索一番。

技术问答。 HexDecOctBin 问用的是 Free Pascal 还是 Delphi,他说之前试过 Free Pascal,感觉语言停滞了,比如变量只能像 C89 一样在作用域开头声明;nor-and-or-not 说他们主要用 Free Pascal(在 Linux 上很好用,也能交叉编译 Windows 版),开发中也会在 Windows 上测 Delphi 构建,始终保证两者都能编译。snvzz 问在 RISC-V 宿主机上运行游戏时,虚拟机里的 RISC-V 代码会不会直接原生执行,并认为几年后大多数宿主机都会是 RISC-V;nor-and-or-not 说理论上可以,前提是那台机器上一路到 Vulkan 的完整软件栈都齐备,客户机也仍需沙箱隔离,除此之外,做一层把 RISC-V 指令直通给宿主机的薄包装没有障碍,现在还不支持,将来也许会。azalemeth 问会不会上 GOG 或 itch.io,回答是正式版计划登陆 GOG。