17173 > 游戏资讯 > 官方公告 > 正文

《人工智能的选择 Heart of the Machine》更新 76:记忆地狱

2026-05-24 20:17:03 神评论
17173 新闻导语

《人工智能的选择》更新76带来性能飞跃与模组支持优化!CPU性能提升60-80%,新增Harmony模组系统,修复多项Bug。体验更流畅的游戏,探索无限机器人等新内容!

好久不见!这次更新的规模就足以说明一切。两个游戏都进行了一些深度的技术升级。这并不是一个侧重于内容添加的版本,但对于本作而言,其更新规模要大得多。

简单来说,这次更新是为了什么?是为了迎接新客人。所谓客人,指的是下个月左右创意工坊(Workshop)支持更新上线后的各位模组制作者(modders)。

详细说明
简单来说,在邀请模组制作者加入并为游戏制作模组之前,我想尽可能地让一切变得井井有条。这样他们能更好地理解游戏,也能避免他们在制作模组后,底层架构又发生变动。这就是此次更新背后的驱动力。

不过,我还有三个其他的重要目标:

  1. 我想进一步提升性能(我确实做到了——在我的开发机上,一些原本只能跑到 95fps 的重负载场景,现在可以达到 145fps)。
  2. 我想“泛化”一些算法,例如这两个游戏共用的渲染系统,使其不仅更易于本作扩展(无论是对我还是模组制作者),也更利于未来的游戏。这一点现在也已实现。
  3. 我想再次尝试原生 Linux 支持。我尝试过,但结果仍比基于 Proton 的 DirectX12 封装器慢约 10%。Unity 修复了原本阻碍本作运行的“反向 Z 缓冲区缺失”问题,所以我能够测试原生移植版,效果看起来很棒……但运行速度明显慢于 Proton。因此,我很遗憾地宣布没有原生 Linux 移植版。但我至少测试过了。我专门搭建了一台全新的 Linux 工作站,在不同的硬件上进行了全面测试。虽然结果让我很恼火,但结论是确定的。
  4. 最后,我希望减少某些地方的编码工作量(同时也让模组制作者少写点代码)。现在代码可以自动读取某些定义和链接,只需进行声明,无需手动分配。这对我以及未来的开发者来说都轻松多了。

我还实现了一系列较小的目标,你可以在下方的说明中看到。我希望消除鼠标碰撞检测中对 PhysX 对象的依赖,并拥有一套在后台线程运行、性能更高的射线检测算法。这些现在都已经实现且运行良好。我还希望切换到硬件加速的矢量数学计算,尽管在不使用 Unity 开发的复杂额外系统(Burst)的情况下,这通常被认为是不可能的。我也做到了。在技术阵地上,我取得了一连串小胜利,这让我感到非常兴奋。

总结
还有人像我一样对这些东西感到兴奋吗?……大概没有。下方的说明只是两周高强度工作的简要总结。核心收获是:现在模组制作者的工作更轻松了,我在本项目及未来项目中有了更多的新技巧,且 CPU 端的性能得到了飞跃式提升。如果你是 GPU 瓶颈,你可能只会感到帧率有极细微的提升,但你会体验到更平滑的帧时间(frametimes),这对所有人都有益。如果你之前是 CPU 瓶颈,那么在某些原本让你帧率跌至 80-90 的场景中,你可能会看到 60%-80% 的性能提升。

总之,这些都是令人兴奋的收尾工作,很高兴它们已经完成了。此外,本次更新还修复了一些玩家报告的 Bug。

如果你在《Heart of the Machine》中度过了一段时光,并愿意留下评价,我将不胜感激。不必言过其实,但如果你一直有写评价的念头,我会非常感谢。Steam 评价分量很重。对于这样一个由单人开发多年、倾注无数心血的项目来说,每一条评价都至关重要。

真实的感受才最重要。无论你的体验如何,分享出来都有帮助。这是让你的声音被听到的有力方式,并有助于决定未来补丁的优先级和解决方向。

感谢阅读,感谢游玩。

[expand type=details expanded=false]
更新 76 更新日志
清晰度
  • 此地无记忆:当你进入第 3 章或之后,游戏现在会显示你完成特定项目路径的次数,就像显示游戏中的其他选择(对话、沉思、事件等)一样。一个特性:对于预存数据,它不会显示你曾多次选择过某个项目分支,但它会记录你是否曾选择过它。从该版本开始,它将准确追踪你完成该分支的具体次数。
  • 再见,无用的模组:移除了 NuclearInfantry 和 SimpleEconomy 模组,因为它们除了作为教学辅助外基本没什么用。现在游戏中自带了更好的教学辅助,而且正在使用的模组对实际玩家来说也更有趣。
  • 请总结一下,先生!:当你查看输入/输出屏幕时,如果某一列中有多个相同的建筑,它现在会将这些行折叠为一行,并显示一个向下箭头用于展开,同时显示其中的数量。如果你展开特定建筑类型,它会恢复到之前的操作方式,即可以点击查看具体的建筑。
  • 本地化汇总:对所有非英语语言进行了本地化改进。
生活质量
  • 搜索愤怒的红海:在时间尽头的侧边栏中,左键点击时间线现在可以查看它们。右键点击则会将相机聚焦于它们。
  • 嘿,我的时间线去哪了?:在从一个存档交叉加载到另一个存档时,时间尽头的相机现在会回到默认位置,而不是你之前离开的位置。
  • 这让人发疯:如果你禁用了环境音效,时间尽头的隆隆声将不再播放。
  • 更多的修饰键!:得益于切换到新的 Unity 系统,游戏现在支持 F16 到 F24 键以及“上下文菜单”键(针对拥有此类按键的键盘)。之前游戏只支持到 F15,这让我一直觉得很烦。
平衡性
  • 求你了,他已经死了!:当你被彻底核打击时,现在会更加彻底。之前有些建筑残骸还会立着,现在会被压得更平。
  • 不再丢失物资:如果你花费“勇气”(Daring)进行购买,然后保存游戏,那么加载回旧存档时,你所花费的“勇气”不会返还。这曾困扰了不少人。现在它确保你用“勇气”购买的任何东西都会保留。所以现在你依然无法退款,但也不会丢失购买的物品。“元资源”(Metagame resources)在跨越时间线时也有类似问题,所以这源于此。
为模组制作者增加 Harmony 支持
  • 那个来自《边缘世界》(Rimworld)的模组系统:Harmony 2.4.2 现在随游戏一同发布。游戏会自动加载它,所以如果你是模组制作者,不必担心手动添加的问题。如果你需要对其进行特定操作,它位于 GameData/HarmonyDLLs 文件夹中。
  • 加载时模组自测:Harmony 集成中新增了一个功能,会对现有的任何补丁进行早期的 JIT 编译,如果它们无法工作,系统会发出响亮的警告。这确保了如果基于 Harmony 的模组随时间推移产生不兼容,它会向最终用户发出警告,而不会中断正常游戏。
代码升级
  • 整理大数据源:大规模重构了游戏 XML 底层数据表在游戏运行期间的存储方式,以及从磁盘加载这些数据的方式。这使得代码更清晰、更简洁。总的来说,这从游戏中删减了约三万行代码,并触及了另外 15 万行代码。这并不会让游戏运行速度变快,但它让模组制作者和我的编码效率更高,且现在的格式让我更乐于邀请更多模组制作者加入。对于新进入代码库的程序员来说,犯错的难度大大增加了。
  • 数学计算快了 1.89 倍甚至更多:对构成游戏底层逻辑的数学计算进行了更大规模的重构。任何基于三角函数、矩阵运算或简单的矢量数学计算,现在都使用 SIMD,这本质上将乘法、除法、加法和减法的计算量减少了 1/3。随着时间的推移,这会产生显著影响。这触及了约 20 万行代码。这让主线程的热路径(hot-path)有了一定程度的速度提升,但比预想的要少。在 95fps 的情况下(目标是 140fps),这大约带来了 3fps 的提升?所以是 98fps?从表面上看,这是一个相当小的增益。
  • 这是让数学计算真正变快的关键点:特别是添加了一个新的 SIMD 加速版 Matrix4x4,允许将这些数学计算以字节一致的方式转换为 Unity 格式,以便提交给 Unity 的 GPU API。通常,所有这些类型现在都有零调用转换方法,因此效果非常好。
  • 这一点比听起来更重要:大量的数学计算,现在有了全托管框架(换句话说,不必深入 C++ 内存),现在可以并行处理,事实也确实如此。在后台线程上,这之前会导致 IL 分支,从而导致无法进行多线程处理,但框架的改变解决了这个问题。这让我的机器从 98fps 提升到了 130-140fps,这是一个非常巨大的提升,将使所有游玩该游戏的机器受益。
  • 当模组出现问题时,应该立即清晰可见:现在增加了很多额外的内部自检功能,会在加载时通过反射运行,这不仅减少了代码量,还能在游戏启动时向玩家发出警告,提示存在问题的模组。
  • 在高竞争情况下节省 10-20ms:线程模型已更新,对多种重复发生的任务使用“专用热线程”。这使得这些线程能够更快启动,并且缓存未命中率更低,总体运行速度更快。
  • 这不快,但代码写起来更舒服:线条绘制、圆形绘制、方框绘制和其他类似功能的暴露方式现在与厂商无关,且比以前略微高效。这主要提高了这些功能对我及模组制作者的代码可用性,但如果绘制数量巨大,会有轻微的速度提升。
  • 这快得惊人:游戏不再使用 GameObject(Unity 的组件)来进行检测鼠标交互的碰撞体。现在使用了一套完全自定义的系统,以更高效的方式进行计算,同时也节省了约 90MB 的托管内存。总的来说,这让游戏运行更平滑,并减轻了 GC(垃圾回收)的压力。这多亏了新版本中所有的数学改进才得以实现。
  • 这曾是多日的痛苦,但代码编写更清晰了:对游戏模式的处理方式进行了重大重构。处理逻辑现在统一到一个数据表中,而不是两个,性能略有提升,且现在的代码更容易理解。
  • 事实证明这直接带来的收益很少:游戏已从 .NET 4.7.2 迁移到 .NET Standard 2.1,这解锁了 System.MathF 类的使用。经过详细的基准测试,事实证明 System.Math 在对比该类以及 UnityEngine.Mathf 时表现更好。Arcen.Universal.MathA 类是所有计算的路由入口,它已更新了激进内联版本,在平均情况下提供 1.3 倍的速度提升,最高可达 5 倍(平方根是最大的离群值),且精度没有变化。
  • 输入升级:游戏现在已更新为仅使用较新的 Unity 输入系统。之前使用的是新旧混合版本。这速度更快,代码也更整洁。
  • DirectX12 现在是默认选项,但 DX11 仍然可用:游戏已更新至 Unity 6.000.3.15f1,从 2021.3.45f1 升级。这带来了一些平台特定的速度改进。其中之一是 DirectX12 现在成为 Windows 上的默认选项,并带来了一些速度提升。Unity 编辑器本身的速度提升也让我工作起来更快,且总体上更具前瞻性。
  • 翻译自动化:底层文件现在都使用新的 Unity 键码,而不是旧式键码。这意味着在许多情况下,它们在 XML 和设置文件中的名称已经改变。游戏会自动读取旧键码并将其转换为新键码,因此这对任何人的自定义键位绑定都不会产生影响。如果你有大量的自定义键位绑定,为了以防万一,你可以备份 PlayerData\Settings\settings_controls.dat 文件。
  • 但如果翻译失败,我保存了你的数据:向游戏的控制绑定添加了架构版本。现在是版本 2。如果它发现你正在加载旧的 v1 架构,它会在 PlayerData/Settings/settings_controls_v1.datbak 中制作一个副本。这样即使出了问题,你也不会丢失大量的自定义键位设置。我不认为会出问题,升级过程对我来说非常顺利,但我就是这么谨慎。
  • 据我所知,微软还没攻克这一点:更新了 ConcurrentDictionary,使用了一种新的枚举器样式,该样式为零 GC,不涉及 yield,结果与之前相同,在有条目时比以前快 1.9 倍,在字典为空时比以前快 4 倍。这在主线程的几个地方会用到,所以很好。
模组指南
  • 更新以反映新现实:模组指南已进行了实质性更新,该指南随游戏一同发布,也可以在这里阅读:
  • 确保每个人都能理解你的模组:有一个关于如何翻译模组的新指南,它也包含在游戏本身中,并位于此 Wiki 上:
  • 超越我的核心模组框架:有一个关于如何在此游戏中使用 Harmony 的新指南,它同样随游戏发布,并位于 Wiki 上:
新模组:无限机器人(Infinite Robotics)
  • 部分玩家的需求:有一个名为“无限机器人”的新模组,它允许你超过内部机器人上限,而不会被游戏阻止或提示报错。这是玩家要求的一个选项,但它也兼作一个示例案例,展示了如何使用内置版本的 Harmony 将模组应用到我没有明确使其变得过于“模组友好”的游戏部分。本质上,这是一个你可以修改任何东西的好案例。如果你不熟悉 Harmony,那是一个最初为《边缘世界》开发的插件,但现在适用于所有 Unity 游戏和 .NET 游戏。
新模组:末日过载(Apocalypse Overkill)
  • 另一位玩家的要求:有一个名为“末日过载”的新模组。如果你正在经历核末日,那么全威力核弹将被用来打击你拥有的绝对每一个建筑。根据你建筑分布的广泛程度,这可能导致城市彻底毁灭,从而导致后世界末日场景“变砖”。所以请小心使用——它看起来很酷,但主要是一个供实验的“娱乐”东西。通常游戏最多只有 10 枚全威力核弹,然后使用微型核弹来清除前 10 枚未击中的剩余建筑。
Bug 修复
  • 所有的配送无人机都去哪了!?:修复了两个热补丁前的一个回归问题,当时装饰性的配送无人机无法正确解析 XML,导致它们没有在城市中飞行。
  • 等等,现在无人机太多了:修复了自 2023 年以来 XML 数据中存在的一个问题,导致远程配送无人机因为被赋予了不可能的航程范围而从未生成。我决定现在就修复它,这样会有更多的空中交通。它不应该影响性能,虽然刚进入城市时看起来可能有点拥挤,但这似乎还不错。
  • 滚动烦恼:修复了一个回归问题,该问题导致在不同标签页之间点击时,它们无法正确回到顶部。这是 UI 框架修订后出现的问题。
  • 这本不该如此复杂:完全重构了照片模式下的截图方式。它们现在包含你所看到的全部内容,而不是丢失部分信息。
  • 这只是我的疏忽:修复了在远距离缩放模式下,蜂群图标非常小的问题。这种情况一直存在,但我直到现在才注意到。
  • Oerl 的另一次复仇:修复了一个与跨存档加载相关的极其隐蔽的 Bug,即如果你在“击败 Oerl”(Defeat Oerl)项目激活时加载存档,那么在你加载进新存档的第一帧会收到一条(无害但令人担忧的)消息。我可能是唯一遇到过这种情况的人,我一度认为这是新回归问题的征兆,但它只是一个一直存在且极其罕见的边缘案例。
  • 那不是数字……:修复了城市载具(主要是四处飞行的配送无人机)长期存在的三大问题,由于某些移动模式,它们的位置可能会变成 NaN(非数字),导致无法恢复。
  • 肮脏的非数字:修复了另外 13 个可能发生的 NaN 退化问题,虽然我不确定它们是否真的发生过。这让事情变得干净。
  • 可能只影响我:如果加载语言文件时发生坏事(例如文件在 Excel 中被打开并锁定),游戏在加载时不再会卡住。
  • 好吧,我有点偏执:如果字体表格式错误,游戏将不再报错。它现在允许字体在缺少后备方案的情况下不会崩溃。这种情况以前从未发生过,但这种保护措施防止了情况变得奇怪,特别是在未来可能会有人自行模组化添加语言的情况下。
  • 我想这几年前就坏了:游戏现在正确地允许你将 Escape 键设置为按键绑定,而不是直接退出控制绑定屏幕。
  • 而且这个从来没起作用过!:游戏现在正确地允许你通过控制绑定屏幕设置鼠标和手柄按钮,而不仅仅是键盘按键。
  • 这只是愚蠢,是我的错:修复了 ArcenInput 在有文本框时每帧调用多次查看文本框的极其愚蠢的错误。每当屏幕上有文本框时,这只会增加延迟和内存压力。
  • 这就是为什么你在某些存档中无法遇见某些人的原因:修复了一个 Bug,如果建筑的父级 POI(兴趣点)由于某种原因未设置,它将永远无法恢复。这导致在许多新地图中 WW4 启动条件往往无法实现,尽管它在我的测试用例中仍然有效。当发现这种数据不匹配时,它现在会以一种非常高效的方式自我修复。
[/expand]

完整说明请见此处。

1.0 版本的新内容

如果你错过了从抢先体验(Early Access)开始到 1.0 版本发布期间的变化回顾,你可以在这里阅读:


与机器连接

想要保持同步或分享你的想法?加入这些平台的对话:

💬 – 分享反馈、获得直接回复以及讨论《Heart of the Machine》的最佳场所。
📜 – 与社区讨论策略、分享想法并交流技巧。

【来源:steam】
我想了解这个游戏:
官网 专区 下载 礼包
关于人工智能的选择 Heart of the Machine,Heart of the Machine,更新,模组,性能优化,Harmony,Linux,Unity,Bug修复,渲染系统,Steam的新闻
17173 首页全新改版规划中!现向各位玩家征集真实使用意见,你的想法将直接影响新版页面设计~动动手指填写问卷,快来共创你心仪的页面布局吧! 参与问卷