Game Update:408920

模板:更新日志
最初由Ipsquiggle发布在官方论坛上。

Originally posted on the official forums by Ipsquiggle.

# 翻译

模板:提示消息
嘿,朋友!

我们今天发布了游戏的实时版本的另一个补丁!我们排除了最近引入的一些bug，清理并扩展了自动化包中的一些新特性，并对崩溃和mod的处理方式进行了大量改进。

此外，还有一个新的色盲模式，可以从选项菜单中选择。阅读所有关于它的内容，并在这篇文章中留下评论!

我还想提一下，和许多其他团队一样，ONI团队也受到了在家工作的转变的影响。我们还不确定这将如何影响我们未来的版本，但我们很高兴提供这个奇怪的pee模拟器，在这些时间为您提供娱乐，我们将继续使它更好!我们仍然在努力改进游戏，所以请报告bug并给我们留下反馈。

谢谢你！

## 全部补丁指出:

### 特性和变化

* 增加前视和后视色盲模式。
* 添加反馈按钮下方的补丁注释作为反馈选项的快捷方式。
* Mod和崩溃屏幕的改进:
	+ 本地Mods屏幕按钮显示“浏览”而不是“订阅”。按下按钮总是会打开一个文件夹到本地目录，现在文本与之匹配
	+ 连接新的艺术崩溃报告屏幕
	+ 在ModsScreen上启用/禁用所有mods按钮安装mods时遇到的错误将出现一个错误对话框。修复错误屏幕上的定位错误屏幕现在有一个“更多信息”按钮，显示callstack，和一个复制到剪贴板按钮在默认情况下，堆栈跟踪中引用的Mods将被禁用(除非它们是dev Mods)。
	+ 在非开发模块加载失败时禁用它们，即使其他模块是开发模块。这导致了mod创建者的无限循环，因为mod崩溃了，而这与他们正在开发的东西没有任何关系可以在错误屏幕上直接禁用或启用Mods。
* 在引擎盖下，计时器传感器现在计数逻辑滴答，而不是时间。时间，这将使他们更准确，更好地保持同步。
* 计数器传感器的改进:
	+ 添加“高级模式”切换来对抗侧屏。高级模式对计数执行%，而不是直接比较，允许实际的二进制计数。
	+ 高级模式:只对一个逻辑单元发送绿色信号，而不是连续发送。
	+ 标准模式:在初始值0之后，计数器传感器侧屏显示计数为“10”而不是“0”。
	+ 柜台侧屏视觉上光。
	+ 改进了计数器的复位行为，使其更加可靠。增加了一些新的锤击声音
* 新的逻辑门声音，变化和混音
* 清扫机器人站的内容总是标记为清除-类似于用户标记的地板矿石清扫。这允许他们的存储优先级在清扫机器人站设置正确
* sidescreen现在有三种通知类型的工具提示。
* 新! !非常糟糕的通知图标
* OR和XOR门背板形状看起来更像他们的符号。
* 将复制设置按钮添加到信号开关、电源开关、色带读取器、色带写入器。
* 计数器传感器描述更新，使其更清楚，它重置下一个信号后达到最大计数。
* 为“报错”确认对话框添加本地化字符串
* 矿块显示他们的元素描述，如果需要在清扫/插座侧屏幕。移除播放器可见的调试消息。
* 修改了反馈窗口的描述\*如果世界生成失败，它会显示一个错误消息，而不是继续选择开始复制
* 如果新种子失败，世界世代将不再重试新种子。这意味着worldgen中的错误将导致失败，而不是在后台悄悄地改变种子。修正了一些种子的世界世代失败，导致了一个充满了阿比西尼亚人的世界。这主要是在火山小行星上报道的，但也可能发生在任何具有世界特征的小行星上。
	+ 注:由于上述两个补丁的组合，少数种子已经改变，以前的种子将失败的第一次尝试，然后成功。这不会影响到绝大多数种子。
* 医疗床严重性滑块要求默认设置为70%。

### 修复

* 进一步修复了在自动保存期间和触发通知程序时拖放的结构修正了没有保存建筑物切换任务的问题。
* 修正火箭模块仪表不匹配其父模块的偏移量修复了当解构一个tile时崩溃的问题
* 计数器传感器默认为“关闭”状态时，第一次建立。
* 计数器传感器不再发送绿色信号为其初始“零”状态，使菊花链可能不需要重置。
* 复制设置适用于液体储层和气体储层
* 信号开关和电路开关侧边现在正确缩放UI缩放。信号开关现在初始化在正确的动画基于它是打开或关闭，而不是总是默认关闭。
* 信号开关不再需要重复操作。
* 信号选择器/信号分配器上的控制输入现在只从自动色带的第一个位读取。
* Canister emptier不再与bottle emptier共享自动瓶串
* 当暂停时，可以同时切换多个信号开关/电路开关，并对玩家控制的切换侧线屏的功能进行全面改进。
* 当自动化覆盖关闭时，如果它们不在屏幕上，自动化带桥现在正确地脱色
* 轻音频混合和性能修复周围的生物修正了同一个基站可以产生2个扫描的问题现在可以通过语言模块翻译MOTD字符串
* Sweepy修复:
	+ 用于清扫生产的精炼金属将不再像清扫杂波一样从清扫基站清除。这将修复一些无限的循环与清扫站。
	+ 改进了被困时的清扫状态
	+ 修复了Sweepy的空状态项。添加了通用状态的状态项。向基站描述添加占位符字符串来描述清空行为。修正了死亡动画有时会被空闲动画打断的问题。修正了允许Sweepy神奇的改变物体温度的错误。

修正一些被愚弄的人死后还在继续对话的问题。修正了当一个被愚弄的人向另一个被愚弄的人打招呼时崩溃的问题。

* 一对夫妇修复试图检索的时间表，一个死亡的欺骗。修正了当一个生物在他们被争论之前死亡的崩溃。修复了当一个建筑或植物在其房间被更新时被摧毁的崩溃。修复非常老的保存的成就崩溃。修正翻译模组启用时的回缩循环问题。
* 防止软锁时，模态对话框渲染后的崩溃报告屏幕。
* 沙盒工具中对滑动器和文本输入字段的单独限制。应该允许非常负的热枪值和禁止<1刷大小值。
* 沙盒画笔大小限制为50
* 如果保存的数据不适用，沙箱设置恢复为默认设置(更新id加载在基础游戏中)。质量、温度和电刷半径值最好夹紧。
* 进一步修复在建筑物进行更换时从建筑工程中退还二次物料的问题调整读者/作者和丝带艺术重叠更好和显示适当的动画
* Wheezewort描述更新
* 充值说明更新
* 修正了清扫移动到充电站的空白状态项
* 使“无穷大”和“-无穷大”可译。
* 在隐私政策描述中添加关闭颜色标签修复沙箱备份保存文件路径在非windows机器
* 有可能修复损坏的Linux“浏览日志文件”链接修正定时器详细信息屏幕上红色持续时间提示的颜色
* 悬停工具提示正确地为逻辑描述字符串使用选择的颜色模式复制人如果有挖掘兴趣，就不能再获得“和平主义”特征。这可以防止当他们同时拥有挖掘兴趣和和平主义时，他们的数据会重新出现的错误。
* 在等待复印机执行该操作时，门开关按钮再次动画
* 从抄本中删除重复的“教程:日程安排”条目
* 修复Pip法典条目中的拼写错误
* 重量板现在正确地检测当一个元素直接凝固在他们的顶部修正了当生物下蛋时死亡的崩溃
	+ 也清理场景中未激活的鸡蛋
* 修复旧的黑客有清扫总是下降他们的内容加载。这是为了防止它们将当前内容放入一个不相关的fetch中。现在，arm只有在新fetch与当前请求不匹配时才会丢弃所有东西固定不相关的实体采取的质量时，组合相同的元素在一个细胞修正了当清理器掉落物品时崩溃的问题修正计数器在接收复位信号时不改变输出信号的问题修正不一致的定时器传感器行为依赖于帧率这将重置所有定时器传感器保存文件目前在预览分支。修正了如果一个鼠标按钮在一个帧中被点击两次的奇怪输入。这导致了面积测量数字停留在周围，“幻影”结构，和其他奇怪的东西。
* 正确地加载已本地化的字符串键用于清除状态消息修正了自动清理有时会在任务实际完成之前丢弃内容的问题

### 优化

* 删除了我们的数组中占帧数5%以上的验证
* 对管道流量进行小的优化
* 桥梁优化节省约3%的帧时，一个稳定的流元素通过导管桥
* 在保存过程中减少内存使用:状态机不分配额外的内存
	+ 直接将保存的数据压缩到filestream中，而不是使用单独的缓冲区
	+ 将Sim的序列化直接移到主缓冲区
	+ 根据上次加载或保存来估计反序列化缓冲区的容量
	+ 设置动画符号覆盖时节省~1%帧时间
* 保存数字时减少内存使用。这个游戏里有很多数字…
* 减少写入编码字符串的内存使用量
* 减少报表管理器内存使用，同时保存
* 略微提高了提取差事的算法的速度
* 获取差事的数据查找速度略有提高

### 改装

* 在KMonoBehehaviour的try-catch中为LogException添加钩子以获得mod支持
* 删除IEffectDescriptor;在任何情况下，除了一个，它只是延迟到游戏对象，所以没有理由注入BuildingDef。这使得所有的效果描述符使用相同的接口，简化了事情。支持mods的存档版本
	+ 这将允许modder在未来发布他们的mod版本同时进行测试和发布。现在没有立即要做的改变。但是，下一个补丁可以用来更新测试分支上的mods，而不会破坏它们以供发布玩家使用!
	+ mod的“当前”最新版本仍然保存在mod的根文件夹中。
	+ 存档/以前的mod版本可以移动到一个“archived\_versions”文件夹中，最后的好版本可以在一个名为“archived\_versions.yaml”的顶级文件中指定。它的结构是这样的

archivedVersions
- relativePath: archived\_versions / 0
lastWorkingBuild: 10000
- relativePath: archived\_versions / 1
lastWorkingBuild: 10001

# 原文

Hey friends!

We're putting out another hotfix on the live version of the game today! We've knocked out a bunch of recently introduced bugs, cleaned up and expanded some of the new features from the Automation Pack, and added a lot of refinement to the way crashes and mods are handled.

Additionally, there's a new color blindness mode which can be selected from the options menu. Read all about it and leave comments on this post!

I'd also like to mention that like many other teams, the ONI team has been affected by the transition to working from home. We're not sure yet how this is going to affect our future releases, but we're glad to provide this weird pee simulator to amuse you during these times and we're going to keep making it better! We're still here and still working hard to improve the game, so please report bugs and leave feedback for us.

Thank you!

## FULL PATCH NOTES:

### Features and Changes

* Add Protanopia and Deuteranopia color blindness modes.
* Added Feedback button below patch notes as shortcut to feedback options.
* Mod and Crash Screen Improvements:
	+ Mods Screen button says "Browse" instead of "Subscription" for local mods. Hitting the button always opened a folder to the local directory, now the text matches that
	+ Hook up new art for crash report screen
	+ Enable/Disable all mods button on ModsScreen
	+ Errors encountered while mods are installed will now bring up an error dialog.
	+ Fix localization on the error screen
	+ Error screen now has a "MORE INFO" button that reveals the callstack, and a copy to clipboard button
	+ Mods referenced in the stack trace will be disabled by default (unless they are dev mods).
	+ Disable mods that are non-dev mods when they fail to load, even if other mods are dev mods. This was causing infinite loops for mod creators when a mod was crashing that had nothing to do with what they were developing
	+ Mods can be disabled or enabled directly on the error screen.

* Under the hood, Timer Sensor now counts Logic Ticks rather than Time.time, which will make them more accurate and better at staying in sync with each other.
* Counter Sensor improvements:
	+ Add "Advanced Mode" toggle to Counter sidescreen. Advanced Mode performs a % on the count, rather than a direct comparison, allowing for actual binary counting.
	+ Advanced Mode: sends a Green Signal only for one logic tick, rather than continuously.
	+ Standard Mode: After its initial 0, Counter Sensor sidescreen displays its count as "10" rather than 0.
	+ Counter sidescreen visual polish.
	+ Improved counter's reset behavior to be more reliable.

* Added some new hammer strike sounds
* New logic gate sounds, changes and remixing
* Sweepbot Station contents are always marked for clearing - similar to user marked sweeps on floor ore. This allows their storage priority to be set right on the Sweepbot Station
* Notifier sidescreen now has tooltips for the three notification types.
* New !! icon for VERY BAD notifications
* OR and XOR gate backpieces shaped to look more like their symbols.
* Add Copy Settings button to Signal Switch, Power Switch, Ribbon Reader, Ribbon Writer.
* Counter Sensor description updated to make it more clear that it resets on the next signal after reaching max count.
* Add localized string for "Reported Error" confirmation dialog
* Ore chunks show their element description if necessary in Sweepy/receptacle side screens. Player visible debug message removed.
* Revised description of the Feedback window
* If world generation fails it displays an error message instead of continuing to selecting starting Duplicants
* World generation will no longer retry with a new seed if a seed fails. This means that errors in worldgen will cause failures instead of silently changing the seed in the background.
* Fixed world generation failing on some seeds resulting in a world filled with Abyssalite. This was reported primarily on Volcanea Asteroids but it could happen on any asteroid type with world traits.
	+ Note: due to the combination of the above two fixes, a small number of seeds have been changed where previously that seed would fail on the first try and then succeed. This will not affect the vast majority of seeds.
* Medical Cot severity slider requirement default is set to 70%.

### Fixes

* Further fixes for constructions getting dragged around during autosave and when the Notifier triggers
* Fixed building toggle errands not being saved.
* Fix rocket module meters not matching the offset of their parent module
* Fix crash when deconstructing a tile
* Counter Sensor defaults to the "off" anim state when first built.
* Counter Sensor no longer sends Green Signal for its initial "zero" state, making daisy-chaining possible without requiring to reset.
* Copy Settings works correctly for Liquid Reservoirs and Gas Reservoirs
* Signal Switch and Circuit Switch sidescreens now scale correctly with UI scaling.
* Signal Switch now initializes in the right animation based on whether it's on or off, instead of always defaulting to off.
* Signal Switch no longer says it requires Duplicant operation.
* Control Inputs on the Signal Selector/Signal Distributor now only read from the first bit of an Automation Ribbon.
* Canister emptier no longer shares auto-bottle strings with bottle emptier
* When paused, multiple Signal Switches/Circuit Switches can be toggled at a time, and general improvements to the functionality of the player controlled toggle sidescreen.
* Automation Ribbon Bridges now correctly de-tint if they are offscreen when the Automation Overlay is closed
* Light audio mix and performance fixes around creatures
* Fixed issue allowing for 2 Sweepys to be produced for the same base station
* MOTD strings can now be translated by Language Mods
* Sweepy fixes:
	+ Refined metal for sweepy production will no longer be cleared from the Sweepy base station as if it were swept clutter. This should fix some infinite delivery loops with the sweepy station.
	+ Improved Sweepy status item when trapped
	+ Fixed empty status item for Sweepy. Added status items for common states. Added placeholder string to base station description to describe emptying behavior.
	+ Fixed the dying animation sometimes being interrupted by the idle animation.
	+ Fixed bug allowing Sweepy to magically change the temperature of things swept.

* Fix some instances of dupes still carrying on conversations after death.
* Fix crash when a dupe greets another dupe right as they're dying.
* A couple fixes for trying to retrieve the schedule of a dead dupe.
* Fix crash when a critter dies right before they get wrangled.
* Fix crash when a building or plant is destroyed while its room is being updated.
* Fix achievement crash for very old saves.
* Fix retry-loop when a translation mod becomes enabled somehow.
* Prevent softlock when a modal dialog is rendering behind the crash report screen.
* Separate limits for sliders and text input fields in sandbox tools. Should allow very negative heat gun values and prohibit <1 brush size values.
* Sandbox brush size limited to 50
* Sandbox settings revert to default settings if the saved data is not applicable (update IDs loaded in base game). Mass, temperature, and brush radius values are better clamped.
* Further fix for refunding secondary materials from construction when a building is replacing itself
* Tweaks to the Reader/Writer and Ribbon art to overlap better and display the proper animations
* Wheezewort description updated
* Sweepy Recharge description updated
* Fixed blank status item for Sweepy moving to charging station
* Make "Infinity" and "-Infinity" translatable.
* Add closing color tag to privacy policy description
* Fix sandbox backup save file path on non-Windows machines
* Potentially fix broken "Browse Log Files" link for Linux
* Fix color for red duration tooltip on Timer details screen
* Hover tooltips properly use selected color mode for logic description strings
* Duplicants can no longer get the "Pacifist" trait if they have a Digging interest. This prevents the bug where their stats would reroll if they ever had both Digging interest and Pacifist.
* Door toggle buttons once again animate while waiting for a Duplicant to perform the action
* Remove duplicate "Tutorial: Scheduling" entry from the codex
* Fix typo in Pip codex entry
* Weight plates now properly detect when an element solidifies directly on top of them
* Fix crash when creature dies while it's laying an egg
	+ Also cleanup the inactive egg left in the scene

* Fix old hack that had sweepers always drop their contents on load. This was to stop them from putting their current contents into an unrelated fetch. Now the arm drops everything only if its new fetch doesn't match the current request
* Fix unrelated entities taking on mass when combining same elements on a cell
* Fix crash when a sweeper has to drop an item
* Fix Counter not changing output signal when receiving reset signal
* Fix inconsistent Timer Sensor behaviour dependent on framerate
	+ This will reset all timer sensors for save files currently on the preview branch.

* Fix strange input if a mouse button was clicked twiced in a frame. This caused the area measurement numbers to stick around, "phantom" constructions, and other oddities.
* Properly load localized string keys for Sweepy status messages
* Fixed Auto-Sweepers sometimes dropping their contents before their errand was actually finished

### Optimizations

* Removed validations in our arrays which were were taking up over 5% of the frame
* Minor optimize to ConduitFlow
* Bridge optimizations save about 3% of the frame when a steady stream of elements are passing through conduit bridges
* Reduce memory usage during save:
* State Machines don't allocate extra memory
	+ Compress save data directly into the filestream instead of using a separate buffer
	+ Move our serialization of the Sim directly into our primary buffer
	+ Estimate our deserialization buffer capacity based on last load or save
	+ Save ~1% frame time when setting animation symbol overrides

* Reduce memory usage when saving numbers. And there are a lot of numbers in this game...
* Reduce memory usage for writing out encoded strings
* Reduce Report Manager memory usage while saving
* Slight improvement to the speed of the algorithm for fetch errands
* Slight improvement to the speed of data lookup for fetch errands

### Modding

* Added hooks to LogException in KMonoBehehaviour's try-catches for mod support
* Removed IEffectDescriptor; in every case except one it just deferred to the game object anyways, so no reason to inject the BuildingDef. This makes all effect descriptors use the same interface, simplifying things.
* Support archived versions for mods
	+ This will allow modders in the future to publish versions of their mod simultaneously for the testing and release builds. There's no immediate changes to be made right now. However, next patch this can be used to update mods on the Testing branch without breaking them for Release players!
	+ The "current" most up-to-date version of the mod continues to live in the root folder of the mod as always.
	+ Archived/previous versions of the mod can be moved into an 'archived\_versions' folder, and their last good version specified in a top-level file called 'archived\_versions.yaml'. Its structure looks like this:

archivedVersions:
- relativePath: archived\_versions/0
lastWorkingBuild: 10000
- relativePath: archived\_versions/1
lastWorkingBuild: 10001