Clarification: DH LOD streaming — server responsibility or client-side?
- Does the client/server or both need to set rate limit, max-data transfer etc? I'm not sure how to optimise and speed up client-side LOD generation when joining a server and who is responsible.
- Does it matter what the client sets for their DH settings such as CPU or render distance radius, does that in anyway help the server to generate new lods?
For context I'm running a fabric server with:
- c2me
- DH 2.3
- fabric-api
- sodium-fabric
Client:
- Enable Distant Gen = True
- CPU Load = Highest
58 Replies
If The server speed is set it will limit the flow of LOD’s to the client no Mather if the settings on the client are higher
But if the cpu is set to low on a “weak” cpu it WILL import very slow though
Right so the server determines what the theoretical max is for transfer speed and queries and the client version of these settings determine if it requests that many resources?
Yes correct, you get it? Any more questions?
I think that the server render radius does not overwrite the client setting but you can’t view farther then the server’s configured render radius.
Cpu load matters a bit for updating chunks, downscaling LODs, etc
Is that correct @Puhpine (GMT +1)
Yes
Ye that’s what I told him I think?
Ok thanks
I'm not sure. But that's sounds plausable yeah
Yeah basically
Ok nice 😊
That makes sense. So what about when I want to pre-render? What makes sense to do?
Should I be setting it to FEATURES or INTERNAL_SERVER?
And should that be an option you switch back and forth between depending on context?
/generators
- FEATURES: Complete generation of all LODs with mostly correct structures and trees. Does not save vanilla chunks, and is much faster than INTERNAL_SERVER unless C2ME is installed.
- INTERNAL_SERVER: Generates and saves both DH LODs and vanilla chunks, has 100% correct LODs, because it also saves vanilla chunks it takes the most amount of drive space. Generation speed will suck unless C2ME is installed.
- PRE-EXISTING: generates LODs for all existing vanilla chunks.
Can I do this @Puhpine (GMT +1)?
Sure
O ok you did that one already
I've been reading the wiki up and down trying to make heads and tails of this in context for the server
So IS generates real chunks + the actual lods for them. Takes a while but its all legit?
Features is lods but doesnt actually have any real chunks? So the player has to go and explore and discover if these lods are true?
You mean not seed based but fully generated?
Yes
Using the pregen command on the server, sorry I'm not too sure about seeds
So featured bases it’s of the seed and it bases itself of that seed and generates lods based of what it finds out, but it DOESN’T store the actual chunks
Again correct? @Puhpine (GMT +1)
Yeah
All generation modes generate based off of the seed
Ye but if they store the chunks or not is the difference
Yep
And IS is a bit more "correct"
But its not a huge difference
Ok sure
Okay so they take the world seed or some random seed and generate a LOD based off of it. And it's a level of accuracy? So while I'm pre-generating my world on features I'm actually getting a reasonable reflection of the actual chunk because it was actually generated and used (for creating the lod) but never saved?
Not even created i think but yeah that’s it
World seed oc
Why would you create it but not save it?
/generators
- FEATURES: Complete generation of all LODs with mostly correct structures and trees. Does not save vanilla chunks, and is much faster than INTERNAL_SERVER unless C2ME is installed.
- INTERNAL_SERVER: Generates and saves both DH LODs and vanilla chunks, has 100% correct LODs, because it also saves vanilla chunks it takes the most amount of drive space. Generation speed will suck unless C2ME is installed.
- PRE-EXISTING: generates LODs for all existing vanilla chunks.
It’s faster it said so it for sure DOESN’t create it, tldr I’m not a dev and this it what sounds logical to me the exact working is unknown to me
Totally okay, I appreciate your help regardless 🙂
I'm wondering, if given enough time to let it generate, Internal_server is more efficient because it's more accurate and reduces overhead because it'll already have the chunks stored ready to use for players when they join.
Ye correct
Don’t forget to mark a solution
FEATURES still generates the vanilla chunks and converts it to LOD after the creation
But where do the chunks go?
The generation is just done in a bit faster way, that is more easily multithreadable
Ok sure
It gets deleted
So INTERNAL_SERVER is better? Then
Seems contextual, features sounds better for live play vs IS for pregen while players are offline
Which the wiki does suggest, though I've been hungup on long-term efficiency/accuracy when performing pregen
Then I'd just suggest running IS with C2ME installed and don't worry about it
Ok sure thing
It generates 100% correct LODs
FEATURES generates only mostly correct LODs
The exact differences are/result in:
- Trees placement might be different, maybe correct, maybe moved 1-2 blocks or might be completely different. This is cased directly because the chunks are not saved, and vanilla can generate trees differently even in the same chunk, so generating the chunk again when a player loads it into the vanilla RD it may differ.
- Same goes for structures, some may be moved, some may appear out of nowhere and some will dissappear. Personally for me they 99% of the time just look a bit different, but some players say that the structures always show up from nowhere and the ones in LODs are never there.
- Features does not save vanilla chunks, because of that the generation uses much less drive space, while still providing the players with the LODs to see them, but it does not get rid of the generation lag when the players are moving.
- Because of how Features simplifications work, some specific worldgen features might not work as intended, and e.g. WWOO can generate a grid pattern on sand and gravel, but it can easily be just ignored.
- INTERNAL SERVER is not multithreaded as it runs fully vanilla code, this results in a massively slower worldgen, the exacl slowdown is CPU load and CPU dependant, but it can range from 4x to 32x adn in the future more with higher count CPUs. A fix for that is using C2ME that multithreads vanilla worldgen.
"it does not get rid of the generation lag when the players are moving" which IS doesn't have?
Yes
Because again it saves them
and yeah if this isn't a major perf hit with C2ME and is viable for live play then sure
Very much thank you for the clarification, hope you didn’t break ur hand 😁
That's actually super helpful info from you all, I was reading the wiki up and down as well as the forums here and I was struggling to understand.
It's not indeed. Main problem is storage size.
Makes sense yeah
Yes and if a chunks is generated a lod also exists for it then?
Question for @Puhpine (GMT +1)
I appreciate that guys, thank you. I'm not sure how to mark a response here sorry or even which one to mark tbh
I would say pregen the closer parts with more player movement with IS, maybe first 256 or 512 RD
And then you can switch to Features to say drive space, but still allow people to see, maybe even 1024 RD
Yes, IS generates both
That's okay
Not required
Good idea, I'll run that and see how I go
How many players?
5-6
O ok same here btw but yeah
Trying to figure out the best rate-limiting on all the settings so everyone can get as much as possible without nuking my pc lol
O trial and error I would say
I did try with a world gen mod and that was chaotic. I was getting a lot of strange issues, a few of which I've seen people posting about here recently. Giant phantom pillars that never dissapear despite clearing all sql files etc. Super weird.
Trial and error for sure, otherwise it's all super neat
Yes very right
@Pat I think tis is the closest answer to ur question