Suggestions for network performance

Hello! I am looking for suggestions on how I could improve the performance of the engine towards networking.

I am writting a little minecraft-like game, with “voxel” (cubes) as level. I did many rounds of optimizations to the data, but the networking is still very slow and I am running out of ideas. I wonder if there are something dumb I might have missed.

Here’s the idea. My level is build of chunk of 161616 cubes as such :

Each chunk is an actor (AChunkActor) and store the informations about the cube. That actor is then replicated to the clients.

My first optimization, was to generate the chunk on a reproductible seed, and only download the diff to the client (For example the trees the server spawned). Now it does work fine, except we expect players to build their houses and what not, and the game would become extremmely laggy if the player builds out structures that are too complexes.

My second optimisation was to compress the informations with ZLib before replication. That was my biggest win.

I would like to avoid disconnecting from replication if possible, since it offers a lot of confort features, such as keeping track for me of what each client needs (distance based relevance) re-replicate eveerything to clients that arrives AFTER the chunks are generated, event based approach for actualising meshes, etc…

Also, I suspect something might be odd in having UE replicating so many actors once, rather than one actor many times, since the netprofile tool show very sparse spike of network, rather than a smooth download of all the chunks relevant to each players. I wonder if with some tinkering, I could make UE understand better that the frequency of update is very low, and that I litterally needs it to simply download it instantly, yes, but not often (Where I suppose UE4 replicate more like, super frequenctly mini sized data).

Anyway I’m a bit lost on what to do next, so any suggestions are welcomed!

Have you considered to use also Replication Graphs?