E N D
Teams and Processes Programming Teams Today, the game is created by the content creators (artists and designers) with full support from the programmers. Programmers are responsible for creating some of the game code (following designers’ input), the technology on top of which the game will run (usually called the “game engine”), and the tools that the artists and designers will use to create the content for the game itself. Programming areas Game code Game engine Programming the game engine involves all the code that goes into the final game that is not game specific. One of the goals of a game engine is to isolate the game from the hardware on which it’s running. It does that by creating an abstract layer between the game and the hardware. The engine also provides common functionality that is needed by different parts of the game. Tools The primary type of tools involves content creation: level editors, particle effect editors, sound editors, and so forth. These tools are often written in the form of plugins for existing, off-the-shelf tools.
Teams and Processes Programming Teams Team organization The bulk of the programming team is comprised of programmers (or software engineers). Programmers often specialize in specific areas, allowing them to concentrate on a subset of problems and work on solutions beyond what any generalist could do, such as graphics, networking, AI, sound. Blurring the line between programming and design are the people in charge of writing the scripts that control the behavior of most things in the game. In some companies, they’re called “technical designers,” while in others they are “gameplay programmers.” Skills and personalities of team members Methodologies What procedures will be followed during development to create the game. Code-and-fix game development process Waterfall game development process Iterative game development process Agile game development methodology
Teams and Processes Common Practices Version control: team collaboration, centralized (code) location, history of each file,, branching and merging Coding standards Daily auto-build Quality Code reviews Asserts and crashes Unit tests Acceptance tests These tests are usually implemented in a simple scripting language that drives the game. The scripts also need to interact with the game and retrieve some state to verify the results of the test. More advanced acceptance test could automatically move the player through all the objectives in a level and make sure the mission is completed with a success state. Bug databases Using a bug database is one of the most established techniques in game development. The idea of a bug database is to document all the bugs, any steps that led to that bug, and what the expected behavior of the game was instead. The secondary purpose of the bug database is to get an idea of how the game is progressing.
Teams and Processes Leveraging/Reusing Existing Code : game engine, middleware, tools, frameworks/libraries, Platforms Personal computers (PCs) It takes a lot of effort to make a game look good on the latest hardware and on an outdated CPU with an old video card at the same time, because the new system is easily an order or two of magnitude more powerful. Another strength of PC games is the ability to create and distribute user-created content, e.g. mods. Game consoles Game consoles are closed, proprietary systems with a fixed set of hardware. Programmers do not need to concern developing games for various versions of hardware like PCs. Consoles will often have a different set of APIs than those on PCs, and fixed limit of resources to use. Handhelds and mobiles Devices for this platform trade very limited hardware capabilities for lightweight mobility and low power consumption. Games for handhelds are developed in a much smaller time frame (months instead of years), with a much smaller team, and consequently a much smaller budget. Multiplatform development All platforms should have roughly equal capabilities. Share code among multi-platforms as much as possible (e.g. layered software)