①:由于world-settings.max-auto-save-chunks-per-tick优化效果很小,且这个数值不会影响性能,所以没放入测试(主要是测不出,强行测的话误差大)
max-chunk-sends/gens-per-tick数值 | Thread.sleep(越高越好) | TPS/Chunks/Entities/Tiles | dotick | CPU占用 | 针对提升 |
默认值(81,10) | 0% | 18.89/992/227/19 | 80.66% | 84% | --- |
2 | 0% | 20.00/1043/310/34 | 81.60% | 80% | 4.80% |
1 | 71.51% | 20.00/599/160/9 | 23.45% | 46% | 45.24% |
虽然看着提升很大,但实际肯定不能这样用
①测试的时候是飞行5倍速,速度为54m/s,那么每秒可以移动3.375个区块,同时视野距离为16,那么玩家每移动一个区块就会加载36区块(不考虑斜向)、这样的话每秒就会加载121.5个区块,不考虑网络的情况下(实际上网络没满),max-chunk-sends/gens-per-tick都设置为1时,有80%+的区块被跳过加载了。
正常的玩家疾跑速度是5.612m/s,换算下来在16视野距离时,每秒需要加载12.6个区块,如果是-80%的区块(区块只能加载到最大值的20%)加载折扣肯定让玩家无法接受,因此推荐平均每个玩家只能加载到最大值的70%,也就是8.5区块每秒,对应的max-chunk-sends/gens-per-tick就是0.425(当然,max-chunk-gens-per-tick可以更低,如0.35)。
②这是一个世界性选项,作用在整个世界上,而一个世界又有很多玩家,我测试的时候是独自一人的,所以最终数值要乘以服务器玩家。
③玩家加入的时候,会满速加载区块,大概3~5秒就要加载400~1000区块。为了防止这样的突发事件,还要增加max-chunk-sends/gens-per-tick数值
综上所述,max-chunk-sends/gens-per-tick的设置公式={[V*2+4]*S/320*P}*0.7+5
V=view-distance数值
S=玩家疾跑时的速度,默认=5.612。如果你的服务器玩家普遍加速,这个数值还要上升
P=服务器内玩家最多的那个世界的
平均活跃人数(需要减去挂机人数,这一部分人不加载区块,只要不是核心跑图玩家就都建议去掉)
最终数值
一定要取整(取上取下自由选择),同时max-chunk-gens-per-tick可以适当降低
如:某世界平均活跃玩家为30的服务器,view-distance=12,玩家各个拿着+100%移速的屠龙宝刀
数值就应该设置为26*11.224/320*30*0.7+5=24.11,取整后为24
这样每秒最多加载480格区块,平均每个玩家分到16区块;1名玩家正在进入服务器时,每名玩家也能分到12区块。既能保证玩家不流失体验,又可以略降服务器占用(如果服务器玩家频繁进出,效果会更好)