Software engineers (programmers) are an essential part of the game development team.
They bring the vision of the artists and designers to life. They design and write the computer
code that runs and controls the game, incorporating and adapting any ready made code libraries
and writing custom code as needed. Programmers also test the code, fix bugs, and develop customized
tools for use by other members of the development team. Due to the complexities of game development,
engineers tend to specialize in specific areas of programming, such as the following:
WHAT MAKES A GREAT SOFTWARE ENGINEER AT EA?
Click here for an overview of what it takes to be a great Software Engineer at EA.
SOFTWARE ENGINEERING ROLE PROFILES
Technical Director
Role Overview
The Technical Director (TD) is the most senior engineering position in game development. The TD is accountable for all of the technology and the overall quality of the code for their respective game studio. The TD is expected to be a key influencer at EA, helping to achieve studio-wide development goals. The TD is responsible for getting studio consent for all engineering related issues, and they are counted on to drive best practices for requirements, design, and architecture. The TD is also expected to innovate and pioneer design process, workflow, metrics, planning, and architecture. They encourage submissions of patents for ideas created at EA, interact on technical issues with a wide range of partners (e.g., hardware vendors, universities, third-party vendors), and examine technology developments in other industries to influence direction.
What skills does EA look for in a Technical Director?
EA looks for extensive experience with all technology systems and pipelines. The TD must be a great team leader and a great team player, with great technical skills as well as unflagging energy and focus. The TD must also have excellent oral and written communication skills. They typically have a degree in Computer Science (or equivalent) and have a minimum of 8+ years of game programming experience. Most TDs have been a Lead or mentored a small engineering team. They have strong C++ programming skills, plus solid experience in low-level programming and debugging and in integrating complex systems. They also have experience in using automated testing, unit testing, or Configuration Management processes.
Lead Engineer/Programmer
Role Overview
The Lead Programmer is ultimately in charge of all programming for the game. They are responsible for making sure the various sub-modules of the game are being implemented properly, and for keeping track of development from a programming standpoint. Despite the title, the Lead Programmer usually spends less time writing code than other programmers because they are required to attend meetings and interface with the client or other leads working on the game. However, the Lead Programmer still spends some time programming and must be knowledgeable about most technical areas of the game. The Lead Programmer decides analysis and design issues, what technologies to use (e.g., using Direct3D vs. OpenGL), and what work to distribute to different members of the programming team.
The Lead Programmer must be able to fill in and code various parts of the game and help out other members of the team as needed. They also work closely with the other leads on the art, design, and production teams, and help develop schedules and determine milestones. The Lead Programmer must be able to lead a team, and there is often considerable common ground in the roles of Technical Director and Lead Programmer.
What skills does EA look for?
A Lead Programmer generally has at least five years of experience in the industry and has had a hand in most, if not all, aspects of programming games. The Lead Programmer must be an expert in one or more of the following areas: artificial intelligence, 3D Rendering, 3D animation, 3D math, physics, multiplayer, and/or audio. The role combines being a manager and being a programmer.
EA Lead Programmers typically have excellent C/C++ programming skills, as well as a very solid understanding of object oriented design and programming concepts. They understand professional software development methodologies and QA and testing approaches. Most EA programmers have a degree in Computer Science, excellent math skills, and are able to program as part of a team. The most successful Lead Programmers have 3-6 years experience in the gaming industry, are familiar with large game development and workflow, have a great understanding of common online gaming terminology, and have experience with online gaming and Java and DB admin.
Animation Engineer
Role Overview
The Animation Engineer is responsible for optimizing animation engine programming, working with animators, physics engineers, and AI engineers to bring game characters and worlds to life. They create emotionally believable characters and worlds and raise the bar on the fluidity of motion in games. They also add to the transition between different animations. The Animation Engineer maintains animation management tool(s) and determines if the work supplied by artists is good enough to put into the game.
What skills does EA look for?
An Animation Engineer must have an understanding of animation techniques, and possess a solid foundation of animation related mathematics and physics, C++, and vertex/skeletal animation skills. They must have the ability to write robust, efficient, and maintainable code, and have a deep knowledge of quaternion, 3D graphics programming, and data compression. In addition, they should be familiar with current animation and modeling packages. The ideal candidate has experience as an engineer on a large team and has previously published games.
Artificial Intelligence (AI) Engineer
Role Overview
An Artificial Intelligence (AI) Programmer gives the computer game apparent intelligence and codes the non-player entities of a game (path finding, locomotion, collision detection, state machines, game logic, player flocking/cohesion, and animation). AI is a heavily researched and broad topic. It branches into the areas of robotics, biology, and psychology. A beginning AI programmer must study basic algorithms for games and concepts behind AI, such as path finding, patterns, and decision trees. When an AI Programmer understand these concepts, they can move on to more advanced AI concepts, such as Deterministic Automata, Finite State Machines, Neural Networks, Genetic Algorithms, Fuzzy State Logic, and A-Life, ensuring that EA researches and implements cutting-edge AI techniques. An AI Programmer must ensure the development and maintenance of advanced AI tools, features, and pipelines.
What skills does EA look for?
Artificial Intelligence Engineers are highly sought after. Great engineers have strong abilities in C++ and STL, designing and writing Portable Code, physics, math, path finding, animation, state machines, production systems, neural networks, genetic algorithms, and Lego. It is beneficial to have at least 3 years of industry experience with significant AI responsibilities, as well as experience working on multiple game systems. They should have experience profiling and optimizing system components, and feel comfortable leveraging pre-existing systems. AI Engineers have the ability to author technical design documents that lead to well-architected, quality code. Typically, they have a Masters degree in Computer Science. Computer Engineering or equivalent experience is a plus.
Gameplay Engineer
Role Overview
A Gameplay Programmer focuses on game strategy and the "feel" of a game, and will inevitably be involved with more specialized areas of the game's development, such as graphics or sound. Gameplay programmers may implement strategy tables, tweak input code, or adjust other factors that alter the game.
What skills does EA look for?
EA looks for generalists who are comfortable writing complex systems, such as world management, character interaction, A.I., and other creative systems that take games to a new level. The Gameplay Engineer should demonstrate game programming experience, have a Bachelor's degree or higher in CS/Math or equivalent, and demonstrable skills in C++ (and/scripting language experience in LUA TCL, Python). In addition, they should have experience working on at least one released game, possess excellent oral and written communication skills, and have strong creative, collaborative, and problem-solving skills. The Gameplay Engineer must have a deep knowledge of games and a passion for game development. Experience architecting and/or implementing A.I., character control, world management, or other gameplay-related systems are a plus.
Audio Engineer
Role Overview
An Audio Programmer puts sound into the game. They work with development teams to coordinate dialogue, music, audio hooks and other effects. They must know how to effectively access the sound card, load different sound formats, and program music for a game. As technology becomes more advanced, designers are using sound to further enhance gameplay. For example, many games are tying artificial intelligence into the sound design by giving the computer controlled characters a sense of "hearing." This requires an Audio Programmer to have a solid knowledge of how sounds work (interference, travel distance, blocking, etc.) and how to make it work with the newer 3D sound cards. The Audio Programmer must implement music into the game. With the introduction of MIDI and the adaptation of the Downloadable Sound Standard (DLS), its more cost effective now to add better music to games. Like any programmer, an Audio Programmer needs to be aware of this changing technology and how to implement it.
What skills does EA look for?
EA looks for the following core skills in an Audio Programmer: C++, direct sound, sound file formats, data streaming, data compression, and MP3 handling. The ideal candidate must have solid organizational skills for the large number of assets.
Build Engineer
Role Overview
A Build Engineer ensures the game builds all assets and binaries for all platforms. They must be able to identify problems with builds and notify the correct people about any problems or errors in the build. A Build Engineer must be able to build and maintain code, data pipelines, and data metrics as needed. They are also responsible for managing config files.
What skills does EA look for?
Core skills required in this field include: C++, (to be able to self-diagnose binary compilation errors), scripting languages (e.g., Perl), perforce, PHP, some web development experience, xml, NANT (managing lots of config files), and disc burning.
Physics Engineer
Role Overview
A game's Physics Engineer is dedicated to developing a game's physics. Typically, a game will simulate a few aspects of real-world physics. For example, a space game may need simulated gravity. Physics Engineers may employ "shortcuts" that are computationally inexpensive, but look and act "good enough" for the game in question. Some Physics Engineers may delve into the difficult tasks of inverse kinematics and other motions attributed to game characters, but increasingly these motions are created via motion capture libraries so as not to overload the CPU with complex calculations.
What skills does EA look for?
Physics Engineers must have a range of skills including a familiarity with rigid body physics and experience authoring collision/physics related code. They should have strong math skills (linear algebra, trig, matrix/quaternion math) and be fluent in C/C++, and SIMD programming. It would be a huge advantage to possess a Physics/Mathematics/CS Degree, have experience with multi-threaded programming, programming experience on both console and PC titles, and experience implementing animation systems. It's also a plus to have experience with commercial game physics packages, strong written and verbal communication skills, and a passion for games and programming.
Game Database Engineer
Role Overview
A Game Database Engineer writes and/or maintains the system that loads all of the game attributes, including player stats, player's physical attributes, car performance values, stadium dimensions, etc. The Game Database Engineer is the key person who defines the entire database schema used.
What skills does EA look for?
A Game Database Engineer should have core skills of C++, SQL, Oracle, MSSQL, DB2, flat-file dbs, networking, asynchronous data requests, and optimization trouble shooter.
Game Online Engineer
Role Overview
The Online Engineer writes code that allows players to compete against each other (or play together) via a LAN or the Internet (or in rarer cases, directly connected via modem). Online Programmers must know their field solidly as it can be a very difficult type of programming due to the number of unforeseen problems. Most PC games are now released with a multiplayer component and consoles are quickly becoming network compatible as well. Therefore, a Multiplayer Networking Programmer must understand how to set up a client and server architecture, develop security, and write code using basic network protocols (e.g., TCP/IP or UDP). They should also be familiar with concurrency, multi-threaded code, synchronization, DirectPlay (the Direct X interface to networking), and possibly Winsock. A Network Programmer must have an understanding of Database management and administration.
What skills does EA look for?
An Online Engineer should have excellent C++ programming skills, as well as experience with TCP/IP (BSD sockets, Winsock), network protocol definition, encryption, database engineer skills, and server online engineer skills. They should also have experience developing large-scale enterprise software with a demonstrated passion for game development and experience working with graphical UI or client/server networking. Typically they have a B.S. in Computer Science.
Front End Engineer
Role Overview
The role of a Front End Engineer is to use C++ code to connect the front-end flash screen assets to the backend of the game. A Front End Engineer fills and sometimes creates C++ data containers with values collected from the user interface, and uses the base game to create game modes. In addition, a Front End Engineer manages the save game files and generally works with many different types of content (movies, front end screens, databases, icons, 3D models, special effects, and in-game user interfaces).
What skills does EA look for?
A Front End Engineer should have experience with C++, Flash, scripting languages, graphic formats, flat file databases, and data management design. They should also have a strong background in math (trigonometry, calculus, and linear algebra), as well as excellent people skills.
Pipeline Engineer
Role Overview
The Pipeline Engineer takes proprietary data from content generation programs such as Maya, Photoshop, Motion builder, Flash MX, and converts it into EA's proprietary data formats in game. A Pipeline Engineer writes single function software to strip a 3D model of extraneous data. They also ensure pipeline and data optimization for different hardware platforms. They design, implement, and support workflow and techniques for assets through various departments and disciplines (including graphical, physical, AI, and audio assets).
What skills does EA look for?
A Pipeline Engineer at EA is skilled in C++, 3rd party software specific skills (e.g., Direct X, Open GL), RenderWare, make, NANT, batch files, Perl, sound file formats, graphic file formats, 3D data file formats, and animation data formats.
Rendering Engineer
Role Overview
Rendering is the process of generating an image from a model by means of computer programs. A Rendering Engineer is responsible for profiling and optimizing rendering, lighting and shading components of a game engine, and programming the core rendering tool, feature, and engine components of a game engine. They are also responsible for creating leading edge reusable technologies, both systems and engines (if required), and managing complex texture compositing, dynamic lighting, and shadow volume calculations.
What skills does EA look for?
A Rendering Engineer must have strong C++ skills, plus experience with RenderWare, Direct 3D, Open GL, or equivalent. They should also have strong math skills (trigonometry, calculus, and linear algebra) and a solid background in rendering with experience in shaders, animation, skinning, lighting, special effects, and tools development.
Server Online Engineer
Role Overview
The Server Online Engineer builds software to host an online experience. A Server Online Engineer works with databases and moves around data that allows for chat rooms, client/server games, player matching, and player stats. They also provide solutions to deal with network latency, de-synchronization of data between networked machines/players, packet compression, cheating, and interrupted connections. Server Engineers also implement and integrate core online components on multiple hardware platforms.
What skills does EA look for?
A Server Online Engineer must have strong skills in C++, encryption, TCP/IP (BSD sockets, Winsock), UNIX, and multithreading/multiprocessor, as well as some experience with web development and networking.
Tools Engineer
Role Overview
A Tools Programmer writes the scripting tools that allow designers to specify actions for the computer controlled characters. In addition, they design plug-ins for graphics software to help artists integrate textures and backgrounds into the game, and create map and level editors for level designers. A Tools Programmer must have a strong understanding of the game engine, a good knowledge of Windows Programming (Microsoft Foundation Classes (MFC) or Win32s), and good communication skills, along with a knowledge of user interface design. They must be able to document their tools to make them easy for designers and artists to understand and use.
What skills does EA look for?
An EA Tool Engineer must have strong C++/C# skills and experience developing tool/pipeline solutions for 3D and 2D art packages, such as Maya, Motion Builder, and Photoshop. Knowledge of Maya API and MEL programming is a plus. It's also beneficial to have a background in tools development with experience that may include world editing tools, 2D and 3D art content pipelines, art importers/exporters, and automated content/data. Experience with RenderWare, Direct 3D, Open GL, or equivalent is also required.
Graphics/Special Effects and Interface Programmer
Role Overview
The Graphics/Special Effects and Interface Programmer is a combination of programmer and artist. They must have a wide gamut of programming knowledge, including knowledge of the physics in creating particle engines, skinning 3D models, and importing files from 3D animation programs. In addition, they must also have an eye for art. They must be able to implement particle effects and have knowledge of Human Computer Interaction, which helps in designing user interfaces and menus that are intuitive, eye pleasing, and easy to navigate.
What skills does EA look for?
A Graphics Programmer is expected to have strong C++ programming skills and a deep understanding of visual effects and animation techniques. They must also have a solid foundation of animation related mathematics and physics, as well as the ability to write robust, efficient, and maintainable code. They should have a background in quaternion, 3D graphics programming, and data compression, plus a familiarity with the workings of current graphics and modeling packages. Experience as an engineer on a large team and previous work on games is preferred. Bachelor's degree or demonstrated equivalent experience is a plus.
Porting Programmer
Role Overview
Porting a game from one game system to another has always been an important role in game development. Sometimes, the programmer is responsible for making porting the game to a variety of systems (even mobile phones).
What skills does EA look for?
A Porting Programmer must be familiar with both the original and target operating systems and languages (e.g., converting a game originally written in C++ to Java). They must be able to convert assets or rewrite code as necessary. A Porting Programmer may also have to side-step buggy language implementations, refactor code, oversee multiple branches of code, rewrite code to scale for wide variety of screen sizes, and implement special operator guidelines. They may also have to fix bugs that were not discovered in the original game.
Mobile Phone Game Programmer
Role Overview
Mobile phone gaming is taking off and the potential in this area is huge. Mobile Phone Game Programmers are involved in both porting games from consoles and contributing on original new game ideas.
What skills does EA look for?
Mobile Phone Game Programmers must have core experience in Java programming/development (J2ME experience a plus), C/C++ programming/development (BREW experience a plus), and a deep understanding of XML. They should have a Bachelor's degree in a technical subject, preferably engineering or computer science, and knowledge of and/or interest in wireless technologies. Experience in game/application development is desired.
WHAT MAKES A GREAT SOFTWARE ENGINEER AT EA?
EA seeks to recruit the best Software Engineers for our game teams. Specifically, we look for the best candidates in the following areas:
-
Communication
Successful engineers must be able to communicate and convey information and ideas to others. Communication includes verbal conversation, writing, and presentations. It also involves active listening skills and providing feedback.
-
Domain Expertise
World-class engineers are domain experts. This capability encompasses sharing knowledge, innovation, pioneering, and continued development of craft.
-
Knowledge Transfer: The act of transferring knowledge from one individual to another by means of mentoring, training, documentation, and other collaboration.
-
Innovation: The ability to create new ideas for products, processes, or services, or in work organization, management, or marketing systems.
-
Pioneering: The act of creating groundbreaking, original work in a new or existing field.
-
Leadership
A great engineer possesses the ability to lead, mentor, and coach. Leaders have clear visions and the ability to communicate their vision. They foster an environment that encourages risk-taking, recognition, and reward. They also empower others to lead.
-
Software Engineering Skills
The best engineers can create and maintain software applications (e.g., video games and tools) by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.