跳到正文

Vertigo

作者:Builderb0y

The vertical chunk section syncing mod.

收藏

介绍

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

By default, Minecraft keeps entire chunks synced with players, which is problematic when using mods or data packs which make the world taller. Big Globe for example makes the overworld 2048 blocks tall. The reason why this is problematic is two-fold:

  1. It means there’s a lot more data to sync from the server to the client in multiplayer, which increases bandwidth requirements.
  2. It means there’s more blocks the client needs to keep track of, which increases memory usage.

Minecraft started delaying chunk syncing in 1.21 to adapt to the player’s internet connection, and while this does help a lot,

  • A lot of mods are still on MC 1.20.1, and
  • The problem is still not solved completely. The player is less likely to time out now, but chunk syncing is overall slower.

I didn’t find a mod that can solve all of the above problems during my brief search, so I made my own.

Vertigo attempts to solve these issues by only syncing chunk sections that are near the player vertically. In other words, by lying to the client about what blocks are where. If a chunk section is too far above or below the player, the server will tell the client that the section is empty. Or in other words, full of air.

Mod compatibility

Because the client does not know about all the blocks in a chunk, it is expected that other mods may try to sync data in sections the client doesn’t know about, with undefined results. To help reduce some of these problems, Vertigo does the following:

  • Overwrite PlayerLookup.tracking(ServerWorld, BlockPos) in Fabric’s networking API to not include players which are out of vertical range of the input position. If your mod uses this method to send update packets to players, it will probably work just fine.
  • PlayerLookup.tracking(BlockEntity) delegates to tracking(ServerWorld, BlockPos), so this tracking method should work just fine too.
  • All other tracking methods are unchanged.
  • Include an API which allows:
  • Querying whether or not a specific player knows about a specific chunk section.
  • Listing players which know about a specific chunk section.

Despite this, I do expect some mods to have issues still. If you are an end user, please do not expect this mod to work out-of-the-box with every other mod just yet. Some mods will need to make changes in order to work with Vertigo. If you are a mod developer and think that a conflict is on my end, feel free to open an issue about it.

Q&A

Q: Does Vertigo help with vanilla/non-tall worlds?
A: Not really, unless you have a very small view distance.

Q: Does Vertigo help in singleplayer?
A: It can reduce memory usage in singleplayer, but only with tall worlds or short view distances. It will not help with lag or latency in singleplayer because networking is not the bottleneck there, even in tall worlds.

Q: Does Vergito need to be installed on both the client and the server to work?
A: Yes.

Q: Will things break if I only have it installed on one side?
A: Hopefully not. Vertigo should fallback on the vanilla chunk syncing protocol if it’s only installed on one side.

Q: Does Vertigo affect any server-side mechanics? Like mob spawning or block ticking?
A: No.

Q: What counts as “near the player vertically”?
A: The vertical sync distance is the same as the horizontal sync distance, which is the same as your view distance (or the server’s view distance; whichever one is smaller).

常见问题

Vertigo 支持哪些 Minecraft 版本?

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

Vertigo 怎么安装?

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

评论

登录后评论和评分

Builderb0y 的其他作品

查看全部 →