译者注:本文作者是 slicedlime,Minecraft 开发者之一。原文发表于 Reddit(需要梯子)。
关于 Minecraft 1.15-pre1 性能的一些话
我已经见到许多针对这次预发布版的性能方面的抱怨和担忧。他们大体上可以分为两类:
- 什么时候服务端性能才会被提升?
- 我的 FPS 在 1.15-pre1 掉光了!
我们一个一个谈。
什么时候服务端性能才会被提升?
我看到很多人提到了一个声称多线程服务端是性能调优之必要手段的反馈意见,同时还有许多人询问什么时候才会开始提升性能,因为 Minecraft 1.14.4 的服务端跑起来太悲剧了。
简单的回答是:性能已经在提升了。尽管多线程很好,但它并不是提升性能的首要方式——它意味着大量的开发工作、结构调整和错误风险。
然而,Minecraft 1.14.4 包含的一些错误会叠加导致对服务端性能的剧烈影响。这些错误已经被修复了。关于服务端性能我最近从一些跑着快照版本的人们只听到了正面评价。
我并不是在说性能现在已经完美了——我在发表关于性能的公开声明时总是很谨慎,因为在很多不同的场景下性能会明显不同。但是,我们的缺陷跟踪系统中的性能问题已被关闭,并且我在 1.15 快照性能依然低下的反馈中寻求过更多信息,而没人回应任何一个案例。
这让我开始认为,由于「修复服务端性能」从未在更新日志中被显式地表述,玩家会假定提升从未发生——或者更糟,人们会留下印象:如果没有实现多线程服务端性能就好不起来。如果你在跑一个快照版服务端并且遇到性能问题,请让我们知道好让我们接下来可以想办法处理。
我的 FPS 在 1.15-pre1 掉光了!
是的,它会这样。然而,尽管看起来吓人,但这是有意的。
这里的问题是:Minecraft 1.14.4 和早期的 1.15 快照在游戏分配计算时间——确切地说是区块渲染——上有一个错误。游戏把 最高 FPS 设置 当成了 最低 FPS 目标 。这表示为了实现高 FPS,游戏表现得总是缺乏执行时间,于是它跳过了区块渲染。这意味着可用时间被人为封顶,导致 FPS 计算很高但区块渲染非常慢。基本上,快速输出画面帧是很容易的,只要你跳过需要处理的事情。
一个有意思的副作用是,如果你取消了最大 FPS 的限制,你的电脑越强大,区块渲染延迟越严重。结果你们都看到了——用鞘翅飞一飞世界基本就变空白了。
简而言之,这是因为问题「我应该渲染另一个区块吗?」总是得到「不,这会降低 FPS」的回答。这有点像作弊式写书法:光翻页,不写字。
而现在的抱怨就有点像写书的时间太久我无法接受,但实际的结果是你一页只看到了三四个字。
回到预发布版,我们现在尝试的第一步是设定 FPS 最小值为 30。如果负载够多,游戏会试着做出限制,所以你的 FPS 永远不会低于 30;如果负载变小,我们会让 FPS 变高一些。差不多所有游戏都是这样(或者应该是这样,我认为),只是其中具体的数值可以设定。我们当然会继续调整这些性能相关的数值——但不要落入认为 FPS 低就表示游戏质量差的误区。
我完全认同还有很多问题等待解决——特别是跟卡顿相关的和其他类似的。这是正确渲染世界的性能上的第一步,而我们会以此为基础把它尽可能做好。
我一直在想的一件事是我们可以把目标 FPS 做成 options.txt 中的一个选项——如果你觉得对于你的电脑 30 FPS 不是一个好的目标,这基本上是把 FPS 和区块渲染之间的权衡交给你来处理。
作为结语:请相信我们在竭力地提升性能。这个版本是迈向正确方向的一步,但我们离终点还很远。性能提升会在 1.16 及以后继续做下去。
感谢花这些时间读这些话。告诉我们你的想法吧!