In a new Gamasutra feature
, part of the Intel Visual Computing microsite
, two Intel engineers delve into the technique of multi-threaded ambient animation scaling.
The benefit of such scaling is that it allows meaningful gameplay to stay smoothly consistent across multiple levels of hardware performance, but systematically takes advantage of higher-performance systems by scaling up.
Intel's Mike Yi and Orion Granatir demonstrate the technique through the free Horsepower demo, the source code to which is provided.
As the pair explains:
"Game developers want to deliver the best experience possible for each player, but they also want a game that is fair to all players. A higher-performing machine for one player can and should lead to a better game experience, but not a gameplay advantage in a multi-player situation.
"Many solutions to this dilemma exist; one approach is to use the extra power to render more frames. Another approach is to take incidental effects and amplify them on multi-core machines. This leaves gameplay consistent across all computer platforms, but rewards those with higher-end systems.
"Horsepower started with the code base of the Intel Smoke demo, which features a multi-threaded game framework with tremendous flexibility. Smoke is a free application and its source code can be downloaded.
"Horsepower was created to showcase a perceptible difference for users with a multi-core CPU. By threading to take advantage of multi-core CPU power, a few horses running in a field are multiplied to hundreds of horses (Figs. 1-3). Dynamically adjusting the number of horses drawn on-screen maintains a consistent frame rate of 30 frames per second (fps).
"The demo decreases the number of horses drawn on screen until 30 fps is hit and maintained and, on the flip side, increases the number of horses on screen until the target 30 fps is hit. Although the horses are the main animated objects in this demo, you can use this technique on any ambient animations in a game for a better game experience."
The full article
goes into specific multithreading techniques, backed up with explanatory flowcharts and relative performance stastistics.