Level size?

I’m wondering what will be the best practice for level size, to let player have a smooth game play and avoid frame rate drops

This is a vague question, meaning there is not enough to specifically consider. What’s the art quality? Draw distance needs? Draw call average? Shader complexity? AI amount? Etc…

Smallest possible would be my suggestion.

By “level size” do you mean “amount of stuff in one place (how much clutter can you jam into a single street,)” or “extent in world units of levels (how many square kilometers can we simulate?)”

In general, the physics, collision, and other important gameplay systems in Unreal can stay stable up to about +/- 8 km, so a reasonable maximum size is 256 square kilometers (-8k … +8k on each axis.) The Landscape height map renderer can keep up with this for most computers, although some fog/render distance limitation may help, too. You can also use World Composition to page in the bits that are important as the player gets closer. For even larger landscapes, you can also use world origin shifting.

For “how much stuff,” that depends ENTIRELY on how you build the content – one large static mesh that uses a single merged material with lots of sub-bits-and-pieces will render much faster than tons of small meshes, each with their own material, and that in turn will still run faster than if those small meshes were each being simulated as physics objects. It also depends on what your minimum spec target is. Two cores? Four? Sixteen? How much RAM? 8 GB? 16 GB? 64 GB? How much graphics card RAM? 4 GB? 8 GB? 24 GB? And so on. (The number of variables just keeps going up – how many movable lights? are you using ray tracing? How about reflection planes? distance fields? particle systems? If so, Cascade or Niagara? Number of animated characters? …)

thank you for the help, @jwatte got it. thanks again.

I think this depending on many factors. As others mentioned, the size of the landscape (or level) just a one factor of the performance game. Here’s my workflow on tuning these:

  • Decide on which device I need to target
  • Enable core stats stat fps & stat unit
  • Check my frame rates & check whether it’s the CPU(which is labeled as Game) or the GPU
  • Most of the time, it was GPU for me
  • I never had any issue with “draw call” time. When I added much stuff to the level, it starts to bottleneck the GPU, still having a low draw call time.
  • I would try to check stat gpu for additional info
  • Even without the above, I can get the performance I want by simply changing the amount of foliage we render
  • In my landscape, I usually play with the culling distance & density
  • Also, I have a parameter in my landscape material to change the density as a global parameter
  • Then I also remove or change the quality of dynamic shadows sometimes.
  • post-processing effects can be costly sometimes. You can check that by looking at the stat gpu

There are many things, but it totally depends on what you put into the level & how they are getting rendered on the screen.