When you read this post, I will assume that you are a newbie who is looking for a career path in the game development industry. This reminds me of myself two years ago (from January 2017, when this post was written), when I was a third-year student looking for an internship opportunity in Hanoi University of Science and Technology, Vietnam. I had no idea what would I do if I apply for a job in a game studio, what skills I should sharpen, and - I am not proud to say this - how a game is made. Hopefully, this post would help you to decide which position is your desired one.
How is a game made?
At first, I would like to introduce steps needed to be executed in order to finish a game. Basically, a game studio is divided into three main departments for the development of their games: art department, design department and programming department. Note that I'm not talking about a game publisher, so departments such as marketing or sales are not mentioned here (I will talk about the relationship between game studios (developers) and game publishers in another post later). Sound department is important, but there are many newly founded indie studios that don't have this team - they would choose to outsource sound effects and music, or buy them online. In this post I will concentrate only on programming department.
The art department is responsible for creating artwork resources for the games, including 3D models and animations, 2D textures, 2D sprites, UI elements and so on. Those resources are created based on concepts and game design documents (GDD) provided by the design team - the team that works on ideas, feelings, storyboards and structure of levels in the games. We, the programmers, use those resources and make them interact with each other, following the guidelines in the GDD.
So, a game studio has....?
If you looked at the recruitment page, you probably heard those terms before. I will list the positions that you can apply for when trying to join a game studio, and explain as clearly as possible the role of those positions.
- Gameplay Programmer: If your targeted studio is a newly founded one, it's very likely that you would get this role. The goal of the job is simple: you take resources from art team and GDD from design team and implement game features, game mechanics and end-user experience. How a dragon attacks a knight visually and logically, when to add score for the player, or what would jump out of the inventory box - it's your job to program them.
- Tool Programmer: Tools are things that programmers usually create to do something automatically (yes, we are lazy, and we'd rather let the computer do a repetitive work for us). These guys are the unsung heroes, their work enables the artists, designers and other programmers do their job effectively. Many studios don't have this role explicitly, when the need for a tool arises, the most versatile programmer would jump to this role temporarily.
- Engine Programmer: Have you ever heard of game engines like Unity, or Unreal? When you become an engine programmer, you will be responsible for the underlying technology of the game! But unfortunately, this role usually doesn't exist in small studios - you have much better chance when applying for this job in a company specialized for this kind of product, or a big studio with a proprietary engine which is developed by an engine team. This is understandable, because creating an engine is a huge workload that can't be afforded for a small team with time pressure to finish a game.
- Graphics Programmer: Here comes the gods, at least in my opinion. The guys possess a logical brain and an artist's eyes at the same time (I don't have the latter, that's why I call them the gods). They understand the graphic pipeline from head to toe, so that they can control how the lake reflected the light from the sun, or create beautiful effects to your game - the visual look of your studio's game is on their shoulder.
- Server Programmer: If your studio creates a multi-player game, then having a specialized programmer for server programming is essential. He effectively controls how the clients communicate, how the data is transferred between clients, what should be done when a problem in the connection appears, and so on.
Maybe that's enough for this post, but bear in mind that this is not a complete list. Different studios have different strategies and different roles. Some may have a few other roles, which perform a task that is not listed above, or the combination of them.
However, I hope that I covered a general view of programming roles in the game industry. Following the list above and adding your own research effort, you would find the role that suits you the most. Good luck, fellows!