Some thoughts and questions about the "Early Download" feature

Our server is currently trying to use DH to give players a better experience, but because DH has a huge demand on the network that we can't satisfy, resulting in a very poor experience for most players, we plan to mimic the practice of some "3A" games and implement a "pre-download "We are going to split this function into server-side Mod and client-side Mod, the specific implementation idea is as follows Server-side Mod: regularly convert the map data into lod data, and generate a version file, then somehow synchronize the generated lod data to a local folder or some network disks, and generate a string of sharing code encoded in some way for the client to share with the players, which will be used for the client. Then somehow synchronize the generated lod data to a local folder or some netdisk, and generate a code to be used by the client to get the updated data.
At this point, the server mod will not send lod packets to the player, and will only generate lod blocks, and will only generate lod blocks, and will not allow the player to join in the process, to ensure the best performance.
Client Mod: By filling in the code generated by the server mod while adding servers, the player will be able to get a share code when joining these servers. Sharing code, when players join these servers, the Mod will automatically parse the sharing code and check if the local lod data is downloaded and doesn't need to be updated, otherwise it will go into a download process and only allow joining of the server when they have downloaded all the data and it is completely rendered by the client side
2 Replies
BlueFunny
BlueFunnyOP2mo ago
Are there some issues with this idea? Also, I'm wondering if the lod data provided by the DH server could be spread out into individual block files like the world data in the MC vanilla version? In that case, we can realize the function of incremental update; I originally wanted to try to modify DH's lod storage logic by myself, but after some attempts, I couldn't find the relevant code, can you provide some suggestions for modification?

Did you find this page helpful?