As computing technology has advanced, the hardware on which video games are run has also advanced and lead to increasingly complex video games. Such complexity can result in video games with excellent graphics and a wide range of actions that can be performed by the users. However, such complexity can also make it difficult for game designers to create video games.
Problems or errors encountered in building and designing video games oftentimes are resolved by “debugging” the instructions that make up the video game. Unfortunately, such debugging can be a very tedious and time-consuming process. For example, in order to maintain the desired playback rate for frames in a video game (typically a rate of 30 frames per second or 60 frames per second), each frame should require no more than a designated amount of time to be drawn (e.g., at 60 frames per second, each frame should require no more than 16.67 ms (milliseconds) to be drawn). If this designated amount of time is exceeded, then the video playback can appear slow and the on-screen action may not appear smooth. When the game designer sees portions of the video playback that are slow, he or she typically tries to debug the instructions by finding out why the designated amount of time is being exceeded, and changing the instructions so that the certain amount of time is no longer exceeded.
Such debugging, however, can be very difficult. One reason for this difficulty is that many video games are designed to be run on game systems that include a graphics processing unit (GPU). The GPU receives commands to draw various aspects of a scene, and renders the scene as indicated by these commands. Unfortunately, the GPU frequently provides very little feedback, if any, to the designer as to why the certain amount of time may be violated. As such, much of the debugging effort is reduced to a trial and error methodology. Thus, it would be beneficial to improve the quality and/or amount of information available to game designers as they build and test their video games.