背景:
- 1.14.4 有严重的区块性能问题,生成、加载和保存都消耗大量的算力。即便 paper 有异步区块加载,但如果主线程需要一个区块,异步加载完成之前也只能等待(卡死主线程)。
- 经过研究 Minecraft 和 paper 的反编译代码,初步判定是刷怪不受控,并且 bukkit 中刷怪速度的相关设定在刷怪逻辑中完全没有被调用,导致无论如何设置,服务端每 tick 都在扫描玩家附近的区块尝试刷怪。
- 新的刷怪机制修复了单个玩家刷怪上限的问题,导致会更快地刷出更多的怪。
- 新的区块逻辑代码中使用了大量的 stream 方法导致性能严重下降。
以上,也就导致了现在各位看到的问题。
所以在 Minecraft 实际有望修复性能问题之前,做出一部分改动:
- YASUI 保持开启随机刻调整,不再进行 AI 和红石压制
- 地狱门的搜索半径由 128 格降低为 32 格,如果要建造地狱门,请对准坐标。
- 恢复单个玩家的刷怪上限、刷怪范围和刷怪频率到(一个在服务器上看起来)比较正常(多数人可以接受)的数值
- 临时降低视距为 8 区块。此设置会在区块性能恢复到可接受值后回滚到 10
原因是无论如何调整,在人多的情况下 TPS 都是番茄炒蛋(因为要不断加载区块、扫描区块、疯狂刷怪...等等)。于是只好提高刷怪效率(实际提高刷怪塔的产能)来弥补游戏体验。 经过与 paper 的开发者讨(吵)论(架)之后决定更倾向维护原版机制和游戏体验,后面会对 yasui 也做出一定的功能性修改。
注意这些变动不代表放宽高频红石和密集养殖的限制。
以上策略会根据 1.14.4 后续补丁释出做修改。