显示 HN: 用 Rust 和 Bevy 创建的自运行太空经济模拟
🚀 太空项目 一个自运行的太空经济模拟器,使用 Rust + Bevy。数百艘自主船只进行贸易、采矿、运输货物,签订合同,耗尽燃料,并在一个活的太阳经济中偶尔破产——市场自行寻找价格,派系征税和补贴,人口在不满时迁移,被遗弃的站点腐烂。一切在一个原生二进制文件中运行,没有运行时依赖。这是什么?太空项目是一个以代理为驱动的经济模拟,封装在一个原生的 3D 客户端中。没有剧本情节,没有玩家目标——你是一个观察者(和上帝模式管理员),看着经济自行运作。每艘船都是一个自治代理,拥有自己的信用、船员、燃料、货舱和一个 GOAP 规划器,决定下一步做什么:追逐最高利润的贸易路线,接受交付合同,寻找船厂进行改装,或者停泊并让船员休息,以免士气崩溃。设施运行生产配方,随着时间的推移退化并自我修复,升级,破产后被遗弃。派系征收税款并发布补贴。人口消费食物,产生劳动力,并在情绪崩溃时打包离开。市场根据覆盖模型和短缺紧迫性乘数定价一切——没有固定价格。它最初是一个 Elixir/Phoenix 原型,因 BEAM 调度器在 Windows 游戏 PC 上表现不佳而重写为 Rust。引擎 (sim_core) 是纯粹的、同步的、无 IO 的 Rust;Bevy 客户端将其直接作为库嵌入,因此模拟和渲染器共享相同的 ECS 世界,没有它们之间的转换。当前规模:约 485 个活动代理(282 艘船 · 93 个设施 · 27 种人口 · 8 个派系 · 60 个天体),在 125 毫秒的预算内,以 p50 ≈ 10-20 毫秒的速度运行。该架构旨在推进到 100k+。🌌 关于未来的说明 这个项目并不会自动发展——这恰恰是重点。这是一个有趣的想法:一个从零开始的太空经济,实际上模拟自身而不是伪装。它超出了我的预期,主要是在与 Claude 深夜配对的会议中。但我不打算将其视为有路线图的游戏,也不积极推动其朝着“可发布版”发展。我将其发布在 MIT 许可下,因为这个项目的基础确实很好,我宁愿让别人做点什么,而不是让它静静地待在私人仓库中。因此:你可以 Fork 它,重新修改,改名,建立一个游戏在其之上,拆掉经济引擎在其他地方使用。构建我没有实现的东西。欢迎 PR 和问题,我会看,但我不能保证频率。如果你想将其带到现实中,请查看 CONTRIBUTING.md——其中有一个“你可以采取的方向”部分,专为你编写。截图 它模拟的内容 系统 发生了什么 船舶 AI (GOAP) 一个前瞻性规划器在抽象世界状态下对每个目标——贸易、交付、加油、改装、休息、探索——进行评分,然后构建一个行为树以执行最低成本计划。当出现更好的选项时,船只在飞行中重规划。 经济 每个站点的订单簿市场以覆盖模型和短缺紧迫性乘数为基础定价 13 种商品。船只在交易时在市场之间移动真实供应。 合同 六种——交付、快递、乘客、补贴、供应、船员任务——具有完整的发布→接受→支付生命周期,声誉限制,自动续期和随时间递增的付款。 设施 运行生产配方(冶炼、精炼、制造、农业、采矿),随着时间的推移退化,使用工具自我修复,升级 1–10,从地方市场补给,并在长期破产时被遗弃。 派系 收集会员设施的税款,为长期短缺发布补贴合同,资助新设施的建设以满足需求,并持有成对关系。 人口 消耗食物和燃料,生产劳动力,在压力下发布食物和乘客合同,当情绪崩溃时物理迁移到更幸福的系统。 船员 汇总饥饿/疲劳/士气,并通过派生任务(驾驶、工程、交易、进食、休息)、技能进展、工资和士气死亡螺旋保护来管理。 建设 长期短缺会产生建设工地,累积交付的货物从 0 → 1.0,然后变为一个真实、持久的设施。 持久性 一切都冲刷到 SQLite;一个模拟从它停止的确切时间点恢复。每个宇宙的 world_seed 保持星云背景和地标在重启之间稳定。 空间 LOD 遥远的船只会以较少的频率进行更新(以速率缩放的状态变化),因此帧预算会在你关注的地方消耗。 深入探讨—— tick 阶段排序、AI 栈、经济反馈循环、运行时所有权——见 docs/ARCHITECTURE.md,其中包含所有内容的海洋图。 快速开始 你需要一个 Rust 工具链(稳定版)。然后: make run # 相当于: cargo run -p client_bevy 启动 Bevy 应用程序到主菜单。开始将打开一个新的宇宙(命名它,或使用默认名称);加载游戏列出二进制目录中的每个存档。存档存在于
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡