0
\$\begingroup\$

We are looking to develop a grand strategy PC game in Unity with a world map similar in scale to Crusader Kings 2 and Europa 4.

We want to add more details to the map so that we can stand out visually, but we are worried that such a large zoom-able map, rendered in 3D, will cause performance issues.

How can we deal with efficiency problems related to rendering such a large map at various levels of zoom?

\$\endgroup\$
  • \$\begingroup\$ Ty josh for your help. Your edit was way much clearer \$\endgroup\$ – nascentdreams Jun 17 '16 at 23:38
  • \$\begingroup\$ That's good to hear, I was worried it was a bit drastic. \$\endgroup\$ – user1430 Jun 18 '16 at 0:49
3
\$\begingroup\$

The search term you are looking for is "Level of Detail" or "LOD". It basically means that you adjust the level of detail of the map depending on the zoom factor.

You can have a really high level of detail on the highest zoom level. When the player zoomed in so far that there aren't many objects on the screen, you can get away with that without losing too much framerate.

When the player zooms out they can't discern that level of detail anyway, so you can remove small objects and replace larger objects with lower-polygon versions. That way the framerate stays acceptable and when you do it well the player won't even notice.

The Clausewitz engine by Paradox (the graphic engine used by CK2 and EU4) in fact does that as well. Compare how a city is rendered on these three screenshots which were made from marginally different zoom levels. As you can see the buildings are first replaced with simpler models and then all but the largest one are removed altogether:

enter image description here

The Unity terrain system already has that built in (including for the speedtree-based trees). For other 3d objects, you can use the LOD group component.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.