跳到正文

Asahi

作者:hugeblank

Remove jittering of the moving sun caused by client desync!

收藏

截图

介绍

中文介绍正在准备中,下面暂时显示原文。

Client side Minecraft mod that removes daylight cycle rubber-banding caused by server lag!

If you ask for forge I'll steal your kneecaps

The problem

Every second (20 ticks,) the server sends a packet that syncs the world time between the client and the server. Since clients have no reference for the tick rate of the server, they assume that the server is running at the standard 20 ticks per second. As such, when the server is lagging, that 20 ticks takes longer to process, leading the client to display the sun ahead of where it is on the server. When that sync packet comes in the vanilla client snaps the sun to the server position, causing the issue that this mod fixes.

The solution

A rolling weighted average, and some interpolation! First, we take samples of the last 10 seconds of the amount of ticks that passed on the server per tick on the client. Then, since the sample from 10 seconds ago isn’t as relevant as the sample in the last second, we weigh each of them exponentially less compared to the first. Taking the average of this weighted list, we can effectively predict the movement of the sun over the next second. The margin of error in the suns position caused by the prediction varies, but it is imperceptbile in comparison to the snap-back that happens with the vanilla logic.

Without Asahi:

Daylight cycle without Asahi

With Asahi:

Daylight cycle with Asahi

Please note that this gif is from an earlier version of the mod, the interpolation used has only gotten better since!

Circular Sun is part of a resource pack provided by vanillatweaks.net

Config

{
  // If the time received by the server is `skipDuration` or more seconds from the client time,
  // skip to the server's time, bypassing interpolation. 
  // Play around with this value if the daylight cycle is absurdly fast.
  "skipDuration": 60,
  // Amount of prior factors to use in the rolling average interpolation. 
  // Play around with this value if you notice the sun bouncing back and forth a lot without settling into position.
  "interpolateSamples": 10,
  // Initial daylight cycle tick per game tick. 
  // Increase/decrease this value if another mod is present that speeds up/slows down the daylight cycle  
  "initialFactor": 1.0,
  // The standard tick rate with relation to the resolution of the daylight cycle. 
  // Change if playing with mods that increase/decrease the standard tick rate OR the resolution of a daylight cycle (24000 ticks).
  // Note that to my knowledge there are no mods that do this.
  "standardTickRate": 20
}

常见问题

Asahi 支持哪些 Minecraft 版本?

Asahi 支持 Minecraft Java 版 1.14–26.1.2,共 46 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

Asahi 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅客户端。

评论

登录后评论和评分

hugeblank 的其他作品

查看全部 →