Fabulously-Optimized / fabulously-optimized

A simple Minecraft modpack focusing on performance and graphics enhancements.
https://download.fo
BSD 3-Clause "New" or "Revised" License
946 stars 85 forks source link

Hold That Chunk #437

Closed Madis0 closed 1 year ago

Madis0 commented 2 years ago

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

Madis0 commented 2 years ago

Now being tested in 4.2.0-beta.2.

patmead commented 2 years ago

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

Madis0 commented 2 years ago

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.

patmead commented 2 years ago

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.

Madis0 commented 2 years ago

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: https://github.com/dlee13/hold-that-chunk/issues/6

sarim commented 2 years ago

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.

Madis0 commented 2 years ago

Thanks for your input, @sarim!

The idea of why Farsight was included in the first place comes down to two things:

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... :sweat_smile:

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.

patmead commented 2 years ago

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?

dlee13 commented 2 years ago

https://github.com/Fabulously-Optimized/fabulously-optimized/blob/722d2ce42a59001c485b879f9528e794ff9a9684/Packwiz/1.19.2/config/holdthatchunk.json

{"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.

Madis0 commented 2 years ago

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

patmead commented 2 years ago

Thanks @dlee13 & @Madis0! I added chunkUnloadDelayInTicks to my config file & that resolved the issue

Madis0 commented 2 years ago

As of 4.2.0 CurseForge (+ MultiMC, MultiMC (auto-update)) versions will use Farsight and Modrinth version will use Hold That Chunk.

Madis0 commented 2 years ago

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!

CurseForge comment

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.

the dev

Madis0 commented 2 years ago

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...

Julienraptor01 commented 1 year ago

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

haubna commented 1 year ago

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).

Julienraptor01 commented 1 year ago

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

Madis0 commented 1 year ago

Currently present in Modrinth versions, to be removed with #656.