Best Practices when working with procedurally generated world / meshes

Greetings!

My quiestion is quite simple, yet complex in it’s core. To give it a context first - I am working with “Islands”. Each Island consists of 9 by 9 spots, tiles if you like. When generating the Island, a floor block may or may not be generated on certain tile.

The floor block is a simple Static Mesh. When the mesh is generated on the outside of the Island, it’s edges are rounded a little bit. Because of this, there are currently 5 types of SM needed to generate the Island.

There were several ways that came to my mind of how to implement this kind of generation:

  • Just spawn a new StaticMeshActor on each tile, pick the correct one depending on circumstances → A lot a draw calls
  • Previous, but then merge the meshes somehow during runtime / generation?
  • Have one Actor with several ISM components, each component for the needed SM piece

Right now, I went the ISM way, but still I think there may be much better solutions. I was thinking about how games actually implement these kind of procedurally generated worlds / terrains, so that it is not as heavy on the performance. Another thing is that with this setup, I cannot really do more types of the same SM piece to break the patterns (not implemented yet)

I think the critical info is that there will be no movement with the individual tiles, the tiles are non-destructuble, cannot be altered in any way during gameplay. It is really just a static floor / foundation.

Here is a view of the procedural generation in question. Red line is there to mark one of the spots where I would like to introduce some kind of unevenness, to break some patterns, like different colors or maybe some sticking out parts:

Thanks for the guidance!