Recent Client Optimization Measures
May 30th, 2016
Today on the blog we’re talking about our game client. Many of you have long been noticing that, when user numbers go up or during busy battle scenarios, the client’s response time tends to drop rather low. And in fact, while the game’s graphic engine is able to portray images with its distinctive unique 2d-like feel, it was suffering from a lot of performance-related problems. So, in this post, we want to notify the information about how much we improved in the new patch.
The biggest issue with the current engine was the high number of draw call. Every time this number reached a certain level, the CPU would become overworked while the performance of GPU was underutilized. One of the main reasons behind this high number of draw calls was the abundance of particle effects. Whenever an enemy dies, or a character on screen attacks, and even when doing nothing, a large number of particle effects is required to render all the small objects moving in the background.
- Particle Effect Batching
In order to reduce the number of draw calls, we need to group together particles of the same type to create draw call batches. The problem is that most particles used are semi-transparent, so without depth sorting, they won’t be rendered the way we intend. The current engine prioritizes rendering accuracy, so particle effects of all types were mixed together, making batching impossible and increasing the number of draw calls. We considered, in this case, that improving the client’s performance was a more urgent matter and decided to slightly compromise the visual accuracy of the game in favor of allowing more batching. We’re also applying other measures to improve performance and reduce draw calls, such as exploiting multiple render targets, shadow processing optimization and character instancing.
- Multiple Render Target
- Shadow Processing Optimization and Character Instancing
- We tested versions with and without the optimization measures applied and compared the results.
- Chart Showing FPS (Frame Per Second) and MS (Millisecond per frame) Figures by time
The top of the graph shows FPS variation (the higher, the better), while the bottom represents MS figures (where lower is better).
With all the optimization measures applied, we witnessed an increase of approximately 2.5 times in minimum FPS. We were able to see that the gaming environment was improved greatly by the fact that by raising the minimum FPS allowed the game to maintain at least 60 FPS on the testing specifications. Note that these results were obtained in a testing environment and can differ depending on each user's PC specifications. However, the inconvenience caused by these problems is expected to reduce significantly in most situations. Besides of these issues, there are still some problems need to be optimized such as CPU multicore utilization and Graphics data-side optimizations. These measures are part of all efforts to continue providing a better environment to TOS players.