Software Engineering for Computer Games Chris Ballinger 04/08/13 CS 791
Outline Architecture Considerations Unique Problems Common Issues Interesting Resources Questions How many of you have played or are familiar with any kind of video game? From a software engineering point of view, what components of a video game can be strongly separated from each other?
Architecture Considerations Several separate components Sound, Graphics, Physics, Input, Networking, AI May not all be developed in-house (COTS) Middleware Many possible platforms Only recently has multithreading become a consideration Rarely considers academic research concerns Middleware example: Punkbuster COTS (Commercial off the shelf) examples: Torque GFX engine, FMod Sound engine, Bullet Physics ORTs, Strategus
Architecture Considerations Type of game Regardless of the type of game, developers have the same nonfunctional requirement that always provides a challenge. Any guesses? Hint: It’s the entire purpose of the game
Unique Problems Unique nonfunctional requirement “Fun” Games present a challenging nonfunctional requirement: fun. Hard to define, and may vary depending on the type of game (shooter, strategy, etc), and subjective(maybe I like mini-maxing my stats, you do not)
Common Issues “Feature Creep” Team Communication Major source of delays A necessary evil Team Communication Teams are formed by members from many different disciplines Poorly defined domain terms “Game engine”
Interesting Resources Information Gamasutra Game Developers Conference (GDC) USC Game Innovation Lab Gamasutra Website for news on all areas of game development, such as programming, design patterns, art asset creation and marketing GDC The primary industry conference for all things related to game development. Gives the cutting edge in gaming technology and techniques USC Game Innovation Lab Research into game design, aesthetics, emergent worlds. Some professors in charge of the lab have industry experience Unity Already know everyone is familiar with this tool, since I presented on it earlier UDK Similar tool to Unity, providing a game engine with a complete programming environment and content pipeline. Engine been used for blockbuster games such as Batman: Arkham Asylum Doxygen Not strictly related to game development, but still useful, thought I’d mention it since no one else has. A tool to automatically generate well organized documentations, simply by following their comment format/convention. Similar to Javadocs. Can use graph-viz to produce additional chart such as collaboration diagram (which classes use other classes), inheritance diagram, call graph, etc, even if you havent commented your code.
Interesting Resources Tools Unity
Interesting Resources Tools Unity Unreal Development Kit (UDK)
Interesting Resources Tools Unity Unreal Development Kit (UDK) Doxygen
Questions
Test Questions What are the common issues in game development? What are the differences between software engineering for games and software engineering for other types of projects?