Which is the best method of replication for a 4X Tile-based Game?

Hey all,

I’ve been playing with two methods of replicating the tile map or playing field (i.e civilization type map) to clients. Both have their ups and down in programming complexity, but ultimately I’m worried about future performance. Not looking to ‘optimize’ early on, but mainly get a develop a good paradigm I can grow into.
Option 1:

Create each tile on the server which replicates to the clients by setting bReplicates as well as any properties I want the tiles to replicate. I’ve noticed when I have 400+ tiles, that when a client connects, it’s pretty slow at loading in the world, however the programming behind the actor is relatively easy as the replication system handles updates to the tiles. This makes it really easy as each of the actors is responsible to contain their own data and it is ensured they always have the latest information about that tile.
Option 2:

Each client creates their own set of actors where each of their states are updated by a change in the GameState. The client requests the server to move a ‘piece’, the server updates the GameState, and after the GameState replicates to the client, it updates each of the clients tiles.

I’d like to hear some thoughts of the community on these options, or even another idea. I’m not looking to download and use any plugins in the market place since I’d rather learn the networking and programming theories behind UE4.

FYI, I’ve also posted this in AnswerHUB, not sure which was the best place to post this.

I’m not sure that actors for the tiles are the best solution. So far the opinions I’ve encounter says that you should try to minimize the amount of actors.

I am also battling with tile game conept and finding best solution for replication.

In the case you described there are additional questions that I think are important:

  1. Are tiles 3d landscape or 3d models or simple quads?

Because you might go for one actor with hierarchicaly instanced meshes or just paint the landscape and store tile data in some kind of array that would be then replicated.

  1. Is map generated or predefined

As far as I know you cannot generate landscape at runtime so if you want procedural generation then for 3d terrain you could go for something like voxel plugin. For flat tiles you can draw them as quads or in some other way.