Dev Diary: Game Performance

The latest Dev Diary examines a host of Game Performance changes in the 1.3.2 update, which is now live. Large scale RvR battles are where WAR truly shines, but lag has a way of destroying the experience for many players.  Players have frequently cited lag as the major reason they stopped playing the game.  Why did it take so long to address this issue, and will these newest changes have a significant effect? 

You might ask why it has taken us over a year since we launched in September 2008 to make these dramatic improvements and discoveries. That’s a fair question. The short answer is: we're human and we're learning day-by-day how to improve our products. The longer answer is that WAR has literally hundreds of thousands of lines of code in both the client and server. We're balancing the demands of adding new features and functionality to the game, with a focus on performance and stability improvements.

Read on to see the big steps that Mythic is taking to keep addressing this issue!

With much anticipation, version 1.3.2 is upon us. From my perspective as Technical Director for WAR, there are some very exciting changes and improvements with this release. The brightest highlights for me include the client and server performance gains we've made during this patch cycle.
 
On the client side, the largest performance win in 1.3.2 comes from an entirely new texture management system. The client's texture manager is the code that communicates between our scene management system and DirectX to manage textures that are applied on all the various objects you see in the world. That includes the terrain, buildings, props, and characters, etc. The diversity and breadth of the game zones in WAR, their continuous design, and the way that players interact and congregate in those worlds, makes it nearly impossible to have fixed memory texture budgets for our worlds and art. Many games with more "fixed" levels are able to go that route, but we cannot. So we need a system that can dynamically manage the load on your PC’s system and GPU memory, caused by the diverse set of textures applied to the world by our talented art team. We also need a system that works well across a breadth of PC hardware configurations.

The texture manager plays a constant role in balancing the visual fidelity of all the objects in the world against limits we set based on your available system and video memory. This latest iteration of the texture manager includes some significant optimizations to the way the system interacts with DirectX texture resources—in short, it aims to minimizing the "thrashing" of texture resources much more than previous revisions. The amount of bookkeeping work it does to track everything has also been optimized. The end results—which are all that matter—are that, as a player, you should see noticeably smoother frame rates in the game, particularly in scenes of high complexity with lots of characters involved.

I've long lived by the belief that the frame rate and performance that a player perceives in a game is dictated by the elements that stand out as the slowest, rather than the fastest. Typing that, it seems obvious—but what I mean is that the frame rates you'll remember about any game most likely come from times when the game chugged or stuttered—so even if the frame rate has moments of extremely high values, the memories and perception of that will be muted or eliminated by the lows, especially if they are extreme. With that in mind, in WAR we've previously had a hard time smoothing out the highs and the lows to a nice consistent level. I'm optimistic that the new texture manager will take us a long way toward improving your perceptions of our client performance.
 
On the server side, we found a large bottleneck in some of the code we use to communicate between one of our core server processes and the client on your PC. The bottleneck was caused by a bug in the way that some long-standing, network socket error-handling code was authored. Instead of throttling the socket under error conditions as intended, it was doing so under more general circumstances, thereby affecting much of the network traffic sent in response to your client. From a player's perspective, this change with 1.3.2 should result in noticeably more responsive interactions between the server and client for most facets of the game, including all the way from basic operations like moving inventory objects in your backpack to more responsive combat. We discovered this issue while we were doing profiling of the network operations between client and server expressly for the purpose of trying to improve responsiveness in WAR. So, it is fantastic that we found this during that examination—it proves that when we focus on something that will improve the play experience for you, we can make leaps forward. That brings me to my next set of comments....
 
In both cases, you might ask why it has taken us over a year since we launched in September 2008 to make these dramatic improvements and discoveries. That’s a fair question. The short answer is: we're human and we're learning day-by-day how to improve our products. The longer answer is that WAR has literally hundreds of thousands of lines of code in both the client and server. We're balancing the demands of adding new features and functionality to the game, with a focus on performance and stability improvements. Additionally, we've got a finite amount of engineering resources to devote to each, and it's an ongoing challenge. I hope you won't interpret either my short or long answers as a cop-out. They aren't—they are the reality of a software engineering process that involves hugely complex systems. Our intent is always to give you the highest quality product we can possibly deliver—so with that in mind, we're constantly looking for systems we can improve in the game. These "wins" I've outlined here are part of that evolution of improving our product. I'm confident there will be more in the patches to come.
 
I'd be remiss not to mention the many other improvements with version 1.3.2, including the New User Journey and end game enhancements, in addition to our performance wins. We've been hard at work to give you a great version update. I hope you'll be as excited about playing it as we are in delivering it. See you in WAR!
 
Chad Robertson
Technical Director

Comments

Free account required to post

You must log in or create an account to post messages.