Game teams come in different sizes, shapes , locations, and skill sets. They can vary by company, game title, or platform. The different disciplines that are required to produce a working game are often organized into distinct teams within the overall game team. The people on the game team must work together to complete the tasks that are needed to get the game done on time and without serious defects. This chapter explores typical team roles, different teams within the game team, and some typical ways people are organized into teams and game projects.
This is the team that is responsible for producing properly working game code. Their programming skills are used to bring the game design to life on the game hardware platform(s). Problem-solving skills are used to quickly and efficiently deal with problems or new situations as they arise. A mastery of the software development tools used for the project comes in handy when trying to do optimizations or fix particularly difficult defects.
The development lead defines the development activities that are needed for the project and allocates them to the individual programmers. Additional tasks may be identified, planned, and adjusted during the course of the project.
The development lead also establishes technical procedures and standards. He is usually responsible for selecting the right development tools and technologies to use both for the production of the game code and for use by the game. This responsibility includes the selection of compilers, engines, middleware, databases, servers, editors, drivers, common code libraries, and reuse of code from previously developed games .
During the project, the development lead provides technical direction and assistance to other programmers when needed, and represents the development team in planning and status meetings, including participation on the project's Change Control Board.
On smaller game development teams, the development lead is also responsible for developing some of the code.
Development engineers are also referred to as programmers or developers. They produce the code that the testers test. Their job involves translating the concepts, elements, and story of the game into programming language code. This code is subsequently converted by the build process into information that gets stored and executed on the target game device.
Development engineers make or break the game. The code has to fit within a certain budget, use a limited amount of working memory while the game is running, and be able to have enough performance to make things such as user input responses and animations flow smoothly.
A programmer's code also has to fit within a certain environment or framework that the development team is using. The environment may include elements such as a game engine ‚ which follows defined rules for automating the processing of certain game elements ‚ and middleware ‚ which provides a common interface to certain game functions so the same code can be moved from one platform to another without loss of function and/or performance. Programmers also have to deal with operating systems, device drivers, and communications protocols for multiplayer games. Those each have their own complexities and pitfalls.
Programmers may also be involved in the porting of game code from one platform to another. Certain portions of the code should remain the same, whereas others must be changed to accommodate differences in the new platform. Porting from Xbox to PC may not be so difficult because of the platform similarities in terms of operating system and underlying DirectX APIs. However, the PC version needs to account for a variety of screen resolutions , graphics cards, installed memory, audio devices, and input devices. Going from Xbox to PS2 would provide a different set of challenges, and porting a PC or console game such as True Crime: Streets of LA to a mobile or handheld device may turn into a brand new design and development effort.
Some teams or projects may identify their programmers by their specific area of responsibility or specialty. Openings for the following programmer specialties have been listed on the Internet. Each of these has its own distinct set of skills and responsibilities.
Next Generation Console Programmer
PS2 Engine Programmer
Xbox/GameCube Console Programmer
Max Tools Programmer
Wireless Developer
PS2 Online Programmer
Special Effects Programmer
Junior (Script) Programmer
For relatively small projects such as mobile games or Web-based leisure games, this function might be performed by the same people who develop the code. For larger efforts, such as PC games or MMORPGs, these activities are performed by one or more people on the project who are subject matter experts and specialists.
Build engineer responsibilities may include the following:
Set up code and game asset libraries and file structures
Define and maintain build specifications for each release
Perform merges
Do builds
Do a " sanity test" after a build
Document and publish release notes to the team
The last item is of particular interest to the testers. Check the release notes for important clues as to where you should direct your test efforts. Some of the important information testers can find in the release notes includes:
Which defects are supposed to be fixed in the new build.
What new code was added since the previous build.
What code changed since the previous build.
What build errors or warnings were issued by the compiler or linker.
How much memory (RAM and ROM) is being used by the game.
If your team's release notes don't include some of this information, ask your build engineer to add the missing parts . Even if you still have to run most or all of your tests, the ones you choose to run first should be based on the build information.