RE: Playtesters?
Posted: Wed Jul 04, 2007 4:27 am
My profession isn't actually computers in the sense of programming. Of course, I did some of that starting out many years ago. But what I really do is design systems.
One of the basics of good system design is the assumption that the system will have both execution defects (things causing crashing and other undesirable actions) and logic defects when the system just fails to function as specified. Most programming environments provide various tools for debugging programs. However, a system usually should be designed with built-in testing tools to help the developers track down problems. These test tools will be more oriented towards the purpose and functionality of the system than simply displaying the values of variables and whether a particular code path is taken.
A game is nothing more than a relatively simple system architecture. As complex as customers think they are, they tend to be much simpler than a trading floor or most commerical systems. In any case, the game should include facilities for logging critical data to simplify the problem of tracking down bugs and behavioral problems. The game should have facilities to exactly replicate the same sequences of events over and over again (and remove random behavior; good for playing, but bad for debugging). The game should have facilities to capture key stroke/mouse logs so that user inputs can be replayed to the engine. Logging and data capture tools (with replay capability) become even more important for multi-player testing, since the concurrency adds all types of timing related problems such that traditional debugging would completely screw up the sequencing of events due to the long delays it imposes during to programmer interactions.
The bottom line: A good design anticipates problems and builds tools into the design for reproducing, investigating, and resolving problems. Poor designs rely on nothing more than traditional debugging tools and brute force. In the end, any money saved by reducing the amount of development effort coding custom debugging tools is lost during the increased time needed for defect resolution.
One of the basics of good system design is the assumption that the system will have both execution defects (things causing crashing and other undesirable actions) and logic defects when the system just fails to function as specified. Most programming environments provide various tools for debugging programs. However, a system usually should be designed with built-in testing tools to help the developers track down problems. These test tools will be more oriented towards the purpose and functionality of the system than simply displaying the values of variables and whether a particular code path is taken.
A game is nothing more than a relatively simple system architecture. As complex as customers think they are, they tend to be much simpler than a trading floor or most commerical systems. In any case, the game should include facilities for logging critical data to simplify the problem of tracking down bugs and behavioral problems. The game should have facilities to exactly replicate the same sequences of events over and over again (and remove random behavior; good for playing, but bad for debugging). The game should have facilities to capture key stroke/mouse logs so that user inputs can be replayed to the engine. Logging and data capture tools (with replay capability) become even more important for multi-player testing, since the concurrency adds all types of timing related problems such that traditional debugging would completely screw up the sequencing of events due to the long delays it imposes during to programmer interactions.
The bottom line: A good design anticipates problems and builds tools into the design for reproducing, investigating, and resolving problems. Poor designs rely on nothing more than traditional debugging tools and brute force. In the end, any money saved by reducing the amount of development effort coding custom debugging tools is lost during the increased time needed for defect resolution.