Tips to optimize a city?

I have a very huge city with medieval aesthetic houses, so there is not so many big ediffications. Also a intense fog is very near to the player, like Silent Hill. How I should optimize the city? Any tips?

Thanks

Optimize in what way ? From a level-design point of view it all depends, is it singleplayer or multiplayer ? Or is it just ArchViz ? I would start to block out my level using primitives to have a basic understanding of where my NPCs or powerups spawn etc. Also I would take a look at the Level Design Map in the Content Examples. It explains the generel approach to designing your levels. If you need ideas for a medieval city in general, there’s only one word: References! Look up references from movies and medieval-themed games (e.g. the “Thief” series or “For Honor”)

Try to look into “hierarchical instanced static mesh” if you have a lot of the same mesh placed in a way that could be automated via blueprint code.
This way you only have to “pay” for the draw calls of the first instance you place, which could drastically improve your performance if you have a lot of duplicates.
Make sure that you use the foliage system for plants, small rocks, trees etc. since this is also an optimized way to place these, instead of placing each instance manually.
Else you might want to look into level streaming which only renders some meshes if your player is close to them. For instance, you do most likely not need to render most of the interior meshes in all of the buildings at the same time.

  1. Start your map from scratch and closely monitor performance throughout the whole process to make sure you know what may be causing performance issues if they come up.
  2. Make sure every building is under 50K polys.
  3. Make sure every mesh you have in the city has very good LODs. And low poly.
  4. Use Hierarchical Instanced Static Mesh like Otixum said. And if possible don’t add meshes that differ too greatly in the scene so you can get the most out of HISM.
  5. If you’re going to use Interiors, load them in a different level or create a loading system where you load the lowest LOD (LOD2/3) for furniture when you go outside and vice versa per building.
    I’m not sure how this translates to UE5 though because Nanite is supposed to eliminate every problem I just brought up.