Besides the ongoing efforts of going through all our assets in use and optimize them piece by piece we tackled 2 big tasks towards higher frames during this downtime.
-A new HLOD System
After identifying drawcalls as our main drag on performance we looked into options to get them down and decided on a new approach to levelstreaming and additions to our HLOD(Hierarchical Level of Detail) system.
We have all our Points of Interest (POI) on the map separated into Architecture, Decoration and Gameplay. Decoration has a medium distance to stream in, Gameplay has a very low distance until it streams in (contains mainly the loot) and Architecture up until now was set to be always streamed in. To counter the cost of having all architecture always loaded we introduced our first iteration of HLODs that reduce the cost of those Architecture sublevels dramatically at a distance, allowing us to have them always streamed in which served the purpose of preventing architecture not loading in after you drop as well as allowing you to see all the POI’s while you drop into the arena.
With Streaming 2.0 we cap the maximum distance at which Architecture gets streamed in after you drop, so you still get to see all the POI’s while dropping, but the very far distance ones get unloaded after you land and only the POI’s around you remain. This reduced the amount of drawcalls tremendously without having an impact on gameplay.
To reduce the cost of all close to medium range POI’s even more we introduced a new HLOD system that not only reduces the far distance POI’s but has a new step in between the original meshes and the far away HLODs that combines a lot of single meshes into one big mesh, reducing drawcalls even further.
As an example:
This is the Church without any HLODs (51500Tris // closest range)
This is the Church at the new HLOD0 (12700Tris // close - medium range)
This is the Church at HLOD1 (314Tris // far range)
This alone saved us about 1000 drawcalls on average (more than 2000 for some of our worst sightlines).
In combination with the new streaming it resulted in a pretty significant overall boost without any impact on gameplay and only little impact on visual quality.
The Streaming 2.0 initially came with the cost of occasional hitches during gameplay while the POI’s load in in the distance. We’ve been addressing these hitches and already got them down quite a bit, but if you still notice them, we made the Level-Streaming an option. If you disable it you will get overall lower frames, but stable until we get all the hitches that occur from loading in levels resolved.