![]() |
![]() |
Microsoft Game Technology Group
April 2006
One of the more undesirable costs facing game production is support calls. Each time a user has to contact customer support it takes away profit from the game. While some calls to customer support are not preventable, others can be eliminated or reduced by employing good development practices. To help reduce the number of support calls, developers can implement various tools and techniques described in this article. The following section describes the advantages of integrating certain tools and implementing certain techniques into a studio's development and testing methods. All tools described are free and all techniques are simple enough to add to most development methods.
Contents:
PREfast is a tool offered by Microsoft that analyzes execution paths in compiled C or C++ to help find run-time bugs. PREfast operates by working through all execution paths in all functions and assessing each path for problems. Normally used to develop drivers and other kernel code, this tool can help game developers save time by eliminating some bugs that are hard to find or are ignored by the compiler. This tool is an excellent way of reducing post-release workload and support costs. A new version of PREfast comes with Visual Studio 2005 Team System.
For more information, go to PREfast for Drivers and Building Robust and Reliable Software
The Windows Application Verifier, or AppVerifier, can help testers by providing multiple functions in one tool. The AppVerifier is a tool that was developed to make common programming errors more testable. AppVerifier can check parameters passed to API calls, inject erroneous input to check error handling ability, and log changes to the registry and file system. AppVerifier can also detect buffer overruns in the heap, check that an Access Control List (ACL) has been properly defined, and enforce the safe use of socket APIs. While not exhaustive, AppVerifier can be one more component of the tester’s toolbox to help a development studio release a quality product and reduce potential post-release costs.
More information on the Windows Application Verifier can be found at Security Developer Center: Analyzing Your Applications with Windows Application Verifier
Download the Windows Application Verifier here: Download details: Application Verifier
In addtion to the Application Verifier, there is also a Driver Verifier to help troubleshoot driver issues. More information can be found at: How to Use Driver Verifier to Troubleshoot Windows Drivers
The application compatibility toolkit is a set of free tools to help developers quickly check to see how their releases will perform on newly released service packs. By being ready for service pack releases developers can prevent or be ready for any issues.
The Application Compatibility toolkit, and more information, can be found at Windows Application Compatibility
Windows Vista has two primary types of user accounts: Standard User and Administrator. Standard User accounts are the preferred account type for all users since they reduce the risk of damage to the system by malicious applications. Since a Standard User account has access restrictions such as not being able to write to the Program Files folder or write to HKEY_LOCAL_MACHINE (HKLM) in the registry it is important that games be designed and tested to work with a Standard User account.
More information about this topic and found in the Patching Methods in Windows XP and Vista and Gaming with Least-Privileged User Accounts articles
PIX is a tool for collecting and analyzing performance information from a running application. PIX can gather statistical data on why some frames render more slowly than others and can identify poor API usage. PIX can also be automated to test the daily build and flag sudden changes in application performance. By using PIX across a variety of hardware configurations, testers and developers can help minimize support calls related to game performance.
More information on PIX can be found at PIX for Windows
The DirectX SDK contains a sample called "ConfigSytem" which demonstrates a database-driven application configuration system. Device capabilities exposed by drivers are not always correct. Using a similar detection model to the ConfigSystem sample can help identify device capabilities that are hampering game performance, and in turn reduce the number of support calls relating to game performance.
It is a good practice to remove #pragma warning disables once a project has become stable. Developers should try to eliminate all warnings before releasing a product. Even if a warning doesn’t cause a crash or error on a developer’s system, this doesn’t necessarily mean that it won’t cause a problem on an end-user’s system. If a warning can’t be eliminated the test team then needs to determine that the warning will cause little or no errors on an end-user’s system.
Microsoft provides access to an Internet symbol server that contains symbol files for the Microsoft Windows operating systems, as well as other Microsoft products. Symbols are also available on the server for current Betas and Release Candidates for Windows products, as well as hot fixes and Service Packs. You can configure the debugger to download symbols as needed during a debugging session, rather than downloading symbol files separately before a debugging session. The symbols are downloaded to a directory location that you specify and then the debugger loads them from there.
More information about how to do this can be found here: Debugging Tools and Symbols: Getting Started
Windows Error Reporting (WER) is a service provided by Microsoft to help developers collect application error information in a unified and organized manner. While it is completely voluntary, developers should take advantage of this service to help determine which bugs occur most often. Using WER can help debug to commonly reported problems, eliminating support calls for the most commons bugs.
For more information about this process can be found at Crash Dump Analysis
Developers can use performance analyzers to tune performance of thier game. In addition to PIX, there are a number of popular performance tools for Windows such as the Intel VTune Performance Analyzer for Windows and the AMD CodeAnalyst Performance Analyzer for Windows. These tools will help a developer identify application bottlenecks and help developer to decide how to improve the overall application performance. Improving overall performance bottlenecks prior to release will help bring down post-release costs.
Game developers should take into consideration the post-release costs involved in supporting a game. Everyone involved in the design, development, and testing needs to consider how their work will impact the post-release cost of a product. By using the aforementioned tools and methods in the production process, the volume of support calls can be reduced. This will in turn increase profits by reducing the post-release costs of game development.