ROLES ON THE TEAM 29
core game engine and the game code that runs on top of the core features provided
by the engine.
An engineer working on the core game engine for a console game needs to be
a good assembly coder and comfortable working with hardware and compilers. The
areas they might work on include rendering, effects, physics, and lighting. The focus
is on getting the code to run more quickly and getting more graphics piped through
the memory, on some very idiosyncratic systems. This person should also have an
understanding of CPU and memory usage—specifically for game engines—and be
comfortable crossing the boundary between software and hardware. An engineer in
this position will need to have a high threshold for frustration, because if working
with new hardware (which is often the case in game development), the compilers
and other tools will be buggy and not mature. And by the time the compilers are
mature, the hardware will change.
An engineer working on game-specific code must understand and be able to
implement game state management, character-handling algorithms, AI, and other
behaviors into the game. This area is becoming quite complex as well, especially
with the next-generation platforms with so much processing horsepower available.
An engineer in this position must be able to work with changing specs, because
many of the behaviors they are implementing will be tuned throughout the produc-
tion process. These changes often are identified only after enough of the game is
playable that some play testing can be done and the designers realize that the be-
haviors are not creating a fun experience.
Large games will have niche areas, such as networking and sound program-
ming, that become big enough that an engineer can work just on one of these spe-
cific areas for the entire project. Other engineers are needed to work closely with
design and art, as writers for AI scripts, shaders for artists, or to create tools that
speed up production bottlenecks. These engineers have a technical background but
work largely with the nonsoftware creative people on the team so it is useful if they
have some art or design experience themselves.
Basically, a company is looking for an engineer who is very adaptable with a
strong engineering background as a foundation. It is important that an engineer be
a quick learner to be able to change what he is focused on, either to adapt to what
a particular game needs or to be able to help with an area that becomes the critical
path for a particular project. Depending on the team size, for example, the engineer
may be coding UI for one project and then move on to coding the animation system
on another project. In addition, engineers must be able to work with other people’s
code and, of course, write code that other people can also work on. Games require
modified code from project to project, which means that different engineers will be
working on the code base. With the newest systems, it would be quite unusual to
be able to have the luxury of building the game from ground up.