Hold That Chunk
Madis0 opened this issue ยท 18 comments
CurseForge link
https://www.curseforge.com/minecraft/mc-mods/hold-that-chunk
CurseForge Mod Distribution
Allowed
Modrinth link
https://modrinth.com/mod/hold-that-chunk
Source/other link
https://github.com/dlee13/hold-that-chunk
Mod file size
18.87 KiB
What it does
Essentially #46 or #184, but instead of cancelling unloads, it delays them
Why should it be in the modpack
Unload delaying is said to improve memory usage; the mod is already on Modrinth and has a FOSS license unlike Farsight
Why shouldn't it be in the modpack
Not sure if it can improve on the issues people have had with Bobby, no full parity with Farsight
Categories
Performance optimization, Graphics optimization, Works like OptiFine/Bedrock Edition/Forge/etc
Additional details
No response
I just tested out the latest FO v4.2.0-beta5 with Hold That Chunk v1.1.0 and its new "ignoreServerRenderDistance":true setting enabled.
Unfortunately I'm still getting the same result. With client Render Distance set to 32 and server view-distance set to 12, I can still only see 12 chunks distance. When moving around the world, chunks stop rendering when they fall outside the 12 chunk limit instead of the 32.
I'll be switching back to Farsight again. Could I suggest keeping that as the default option until HTC has been tested a bit more?
{"ignoreServerRenderDistance":true}
Is that the full config file that gets installed? Currently, config reading will error if any keys are null. So chunkUnloadDelayInTicks
being missing will cause the ignoreServerRenderDistance
setting to not be read. The default ignoreServerRenderDistance
setting is false.
The relevant config reading code:
try {
chunkUnloadDelay = Math.min(jsonObject.get("chunkUnloadDelayInTicks").getAsInt(), 20 * 60 * 60 * 24);
ignoreServerRenderDistance = jsonObject.get("ignoreServerRenderDistance").getAsBoolean();
} catch (Exception e) {
HoldThatChunkMod.LOGGER.error("Could not parse config", e);
}
In hindsight, I realize now that I should've put each of the config value getters in separate try blocks.
Is that the full config file that gets installed?
Yes, at a glance I did think that this same try
would actually substitute that missing value, but I didn't fully read it so you're right, it reaches catch
for either of the rows.
I'll release another version soon to fix this, will either be including the full config or updating the mod, whichever is first ๐
Edit: released 4.2.0-beta.6 with HTC 1.1.1
I have some thoughts. Is Bobby / Farsight (or HTC) really the best match for this modpack? The goal of this modpack is performance right? In my experience bobby/farsight hampers performance. Which is logical as the client has to render more chunks.
10 chunk = pi * 10 ^ 2 = 314
16 chunk = pi * 10 ^ 2 = 804
24 chunk = pi * 10 ^ 2 = 1809
32 chunk = pi * 10 ^ 2 = 3216
64 chunk = pi * 10 ^ 2 = 12867
Am I right? Of course there is culling, but still. For example I have 1440p 170hz monitor. I don't want to settle at 50-60fps if I want to have a nice big world view. Sodium is fast, but asking it to render 10x to 50x more chunks isn't fair.
From my playing experience, I think most suitable one is "Distant Horizons". It barely affects performance as it only renders a low quality cached approximate image of outer chunks. You don't need high quality for those distant chunks, they are so far and thus naturally look small that mostly not noticeable with "Distant Horizons". Though this mod is far from stable, have bugs. But maybe it can benefit from having exposure / beta tester from being included in this modpack? Is there any similar mods? FarPlaneTwo doesn't seem to have fabric / 1.19 versions.
Hold That Chunk isn't a replacement for Farsight - it doesn't let you set your render distance higher than what's on the server
I've added Farsight back in to my own install (in addition to HTC) and it works fine, but I think HTC is probably redundant and should be removed
How come? The idea of Farsight and Hold That Chunk is to keep chunks that the client loads when they move away from those.
Vanilla MC would remove the chunks from memory, reducing the render distance back to what the server sets, while these two mods would keep them as long as they are in the radius of the client-set render distance.
I tested using Hold That Chunk and it did not render chunks outside the server's viewdistance, but immediately removed them. I assume from the description that it was retaining them in memory but not rendering them until they came back within range. When using Farsight, it keeps rendering chunks all the way up to the client's Render Distance setting.
Alright, seems like you're right and I did misunderstand the purpose.
As the mod still has a cool unloading feature which might improve the performance over the other two, I have requested this: dlee13/hold-that-chunk#6
Thanks for your input, @sarim!
The idea of why Farsight was included in the first place comes down to two things:
- OptiFine has a feature that allows extended rendering distances (can't remember whether it always worked or there were options for it)
- The feature should not negatively affect players as long as their render distance itself isn't high
What I didn't consider was the fact that with Farsight the chunks still persisted in memory, even hours later after the player is nowhere near the chunks that got cached. Interestingly enough, not that many memory issues have been reported since, so the game/mod must do something right about it... ๐
Hold That Chunk accepted my feature request, which seems like a nice middle ground to me - any chunks that are older than 1 hour (configurable) get removed from cache, so the memory buildup cannot get too high.
Distant Horizons is being considered in #240 and per screenshots and mod's own claim of being in alpha, it's not ready. I get your exposure point, but I do not intend to add any performance mods that are knowingly in testing state because the potential risks are too high, my great userbase expects the pack to be as stable as it can.
As of 4.2.0 CurseForge (+ MultiMC, MultiMC (auto-update)) versions will use Farsight and Modrinth version will use Hold That Chunk.
- Curseforge will not use HTC because it is not deemed ready yet, but will do as soon as it is
- Modrinth will use HTC for extended testing, because it is itself experimental and because most people will not install Farsight manually anyway (feature parity)
Just letting you know - Hold That Chunk has caused a weird issue for me where sometimes new chunks (new as in outside my set render distance, not as in newly generated) wouldn't render, including any entities in it (including myself).. I had to relog to see the chunks, simply changing render distance or refreshing shaders did not help.
I have removed the mod on my end and everything is working perfectly. Just a thing to keep an eye on!
Anyway, also relevant:
I am, however, considering doing a rewrite of the mod so that it unloads chunks based on configurable distance instead of time.
As of 4.4.2 the Modrinth version of FO uses the experimental preview of HTC 2.0.0, to increase the amount of testers for it. So maybe when it releases we can use it for CF version as well...
i tested in Real Gameplay for 1hour each and farsight seem to have a bit more memory usage and far worse performance
so HTC on top
just a test sample which is representative
i loaded the entire hypixel skyblock hub island and nearby island by going around the island then came back to its spawn
RAM usage
HTC 1.2GB
Farsight 1.3GB
FPS
HTC 50 / 60 / 75
Farsight 30 / 40 / 50
Farsight also seems to be more intrusive than Hold That Chunk (due to a Mixin into the ClientChunkManager). As a result Farsight breaks some features of the physics mod (just as an example).
Farsight also seems to be more intrusive than Hold That Chunk (due to a Mixin into the ClientChunkManager). As a result Farsight breaks some features of the physics mod (just as an example).
From my experience on my private anarchy server it also break baritone while HTC doesn't break it
Currently present in Modrinth versions, to be removed with #656.