Friday, April 16, 2010

Developer Tools for 3D Media Applications

Introduction
The right set of software development tools simplifies performance enhancement in media applications and allows for continuous, cost-effective improvements.

The market for digital media applications such as entertainment and game software continues to show robust growth and profitability. Credit for this healthy increase is due in large part to the realistic simulation capabilities that 3D technologies such as DirectX* and OpenGL* have contributed. These development environments have allowed developers to create the kinds of applications that users are craving.

One important factor in creating great 3D applications is establishing high playback frame rates. Satisfying this requirement involves determining the number of frames per second that the application draws to the screen and writing the application or game code to maintain this high frame-rate level.

This process can be problematic. As is the case in finding performance bottlenecks, certain parts of application code can drop frames unexpectedly, causing performance to be uneven and 3D playback to seem choppy. These performance deficits may not be related to major coding issues, but rather to certain portions of the code base that require some tweaks or minor modifications.

Today there are a number of great development tools that can help developers track down the portions of code that cause frame-rate problems. These tools, many of which are available as shareware, can often save a great deal of time and effort for the developer. This article introduces some of these tools.

FRAPS* Benchmarking Software
FRAPS*, which stands for “Frames per Second”, was created by developer Rod Maher in 1999. It started as a simple tool to measure frame rates in 3D applications, but after four years of development, the program evolved to accomplish much more.

FRAPS can be described as benchmarking software that allows you to measure the true speed of your system in frames per second. It can display your system's frame rate in the corner of your screen as the application runs, eliminating the need for developers to build that functionality into their applications. FRAPS also offers developers with the ability to capture screen contents as real-time high-resolution video at up to 30 frames per second.

FRAPS can save frame-rate performance data to an external text file, allowing developers to analyze or benchmark the average frame rate between any two points in time by hitting a pre-designated benchmark key.

IPEAK Tools for Analysis, Testing, and Monitoring
IPEAK GPT (Graphics Performance Toolkit), now discontinued, was a suite of tools that measured 3-D hardware accelerator performance, analyzed and recorded application workload, and analyzed the interaction of graphics hardware and software to help developers isolate weaknesses and achieve peak performance. IPEAK GPT created a database of all the application data files that access the 3D graphics system and recorded information about each frame.

This information was logged into a database, providing developers with the ability to analyze the files and determine specific performance bottlenecks within their applications. IPEAK GPT also had the ability to split the computer screen into four sections, providing different aspects of visual feedback during application runtime. These four views included a texture mode, wireframe view, overdraw, and standard preview. Unfortunately, GPT was discontinued after its initial release supporting DirectX 7.0 and OpenGL 1.2.

The DirectX* SDK's Graphic Performance Analyzer
Microsoft announced plans to include a tool known as the Graphics Performance Analyzer (GPA) with its freely downloadable DirectX SDK*. This tool contains all the performance features of IPEAK GPT, but it has been updated to work on DirectX 9.0 or later. GPA has the ability to monitor all API usage, as well as all activities that the application has within the system on a per-frame basis, and it includes many new and practical features.

VTune™ Performance Analyzer Provides Multifaceted Optimization Support
The VTune™ Performance Analyzer can help analyze the performance of digital media applications by locating sections of code that take a long time to execute and that generate a significant number of events. Analysis of these events may provide clues about how to improve code performance. With the VTune analyzer, developers can track critical function calls and monitor specific processor events, such as cache misses, triggered by specific sections of code. They can also calculate event ratios to determine if processor events are slowing performance.

The VTune Performance Analyzer collects performance data on applications and systems, displaying it in graphs or tables. Once created, the developer can also drill down into these graphs and quickly take a closer look at which portion of the source code has the problem area. The VTune environment shows source code and/or the disassembly code of one source file in the monitored module, annotated with additional information about the code. The analyzer displays the source code for any program that has been compiled with the debug information turned on, or for which the developer specifies symbol files.

VTune tools also support the creation of custom DLLs, allowing the developer to plug the VTune analyzer into an application at specific locations and then correlate what is happening within a 3D application with what the user sees taking place on the screen.

Xylobot* is Useful in Creating Media Workloads
Xylobot* is a generic game-development tool that is compatible with most DirectX games. Xylobot can record keyboard and mouse actions, and then play back those actions within the application. This functionality is particularly useful in creating online games. Xylobot can generate a reproducibl e workload, where a series of actions are scripted. With Xylobot, the developer can produce a series of similar sequences using the scripting tool, and then profile that sequence any number of times. This functionality allows developers to make changes to their code, then compare and correlate one profiled sequence to each subsequent sequence.

Open Source Game Development

Introduction
A 3D game engine is a complex collection of code. Anyone entering into game development would have to spend at least a year developing a game engine or purchase a pricey game engine to utilize. Of course, another option would be to use an open source engine, but game developers have often shied away from these due to their lack of features and reliability. However, these days there are several open source engines (or low-cost commercial engines) that have a rich set of features and offer stability.

Open source engines, however, do not necessarily have the performance of their more expensive commercial counterparts as they do not always take advantage of the latest features available on the CPU and GPU. The intent of this paper is to go over a few of the most common open source game engines and show how Intel tools and technologies can bring goodness to open source game development by getting the best possible performance out of these engines.

Game Engine Block Diagram

The block diagram below is of a typical single-player 3D engine, and displays the complexity of modern game engines. It shows the various subsystems and dependence between them. The "tools" portion of the engine (level editors, geometry and animation exporters, scripted event generators, etc.) have been left out for the sake of simplicity.



Figure 1. Block Diagram of a Modern 3D Game Engine
click here for larger image

Open Source Game Engines

There are several open source engines available on the Internet, some of which are listed below. This paper will focus on both the Object-Oriented Graphics rendering 3D* engine and the Quake* 3 game engine.

The following is a short list of some of the open source game engines that are available for use:

The following is a short list of freely available 3D engines that are not open source and may charge a minimal fee for commercial use:

Thursday, April 15, 2010

Game Industry Facts

Video games are no longer just a form of entertainment for children and young adults alone, and the old stereotypes of a gamer no longer apply.  The ESA's "2009 Essential Facts About the Computer and Video Game Industry" show that 68 percent of American households play computer and video games. The research also reveals other interesting demographic facts about today's gamers and the games they play, including:
  • The average gamer is 35 years old and has been playing for 12 years.
  • Forty percent of all players are women and women over 18 years of age are one of the industry's fastest growing demographics.  Today, adult women represent a greater portion of the game-playing population (34 percent) than boys age 17 or younger (18 percent).
  • Twenty-five percent of game players are over the age of 50, an increase from nine percent in 1999.  This figure is sure to rise in coming years with nursing homes and senior centers across the nation now incorporating video games into their activities.
  • Forty-two percent of homes in America have a video game console.
  • Fifty-seven percent of online game players are male and 43 percent are female.  Thirty-seven percent of heads of households report they play games on wireless devices such as a cell phone or PDA, up from 20% in 2002.
  • Ninety-two percent of the time parents are present at the time games are purchased or rented.  Seventy-seven percent of parents believe that the parental controls available in all new video game consoles are useful.  In addition, 63 percent of parents believe games are a positive part of their children’s lives.

Tuesday, April 13, 2010

Overview of Intel’s Graphics Performance Analyzers Suite

System Analyzer and Frame Analyzer 2.0 Part 1




System Analyzer and Frame Analyzer 2.0 Part 2

 

Friday, April 9, 2010

GDC Session: Threading "Quake 4" and "Quake Wars"



Tuesday, April 6, 2010

Jane McGonigal: Gaming can make a better world

Jesse Schell: When games invade real life