I am and have been quite interested in programming games for quite a while now, however an interesting question I've thought about lately is what do I want to specialize in?

After doing some research I found that game developers/programmers could specialize their skills in quite a few fields such as:

  • AI
  • Interface design
  • Game engine development

There are even some who focus on optimizing network code in the case of online multiplayer games. So I guess my question would be, what other aspects of games programming exist that I could focus on? What would be the ones that are more valued and would increase my chances of being employed in a well paying company?

  • \$\begingroup\$ E.g.: gameplay (general), animation, physics, scripting systems, streaming, optimization, debugging, resource management, etc. The list is very long as a game (a big game) is usually a very complex application (nearing a complete operating system in terms of complexity). \$\endgroup\$
    – teodron
    Sep 5 '13 at 10:12
  • \$\begingroup\$ Thanks for the information! Do you know a select few however that are really sought after in employees and will lead to some of the more well payed jobs? \$\endgroup\$
    – JimmyK
    Sep 5 '13 at 10:28
  • \$\begingroup\$ Well, if you're excellent at two or three of those things, you can be hired as an architect, technical director or system lead. Otherwise, brush up your debugging skills because what they really don't tell you, that is what you end up doing as an average game programmer for a big company. \$\endgroup\$
    – teodron
    Sep 5 '13 at 10:33
  • \$\begingroup\$ Open ended questions like this aren't a good fit for the format of the site. As evidenced by the answer you got isn't actually answering the question you asked, but rather giving advice on what you should do. Feel free to ask questions like this in chat, but keep the questions on the site to specific problems you face in game development. Thanks. \$\endgroup\$
    – House
    Sep 5 '13 at 12:41

The best way to increase your chances of being employed as a game developer is to get your hands dirty and actually work on the development of some small games.

You say that you are "interested in programming games", which makes me believe that you haven't developed any games, yet. I advice you to stop thinking and start doing. However, the first order of business will not be to specialize in any of those fields. Let me elaborate.

When I interview you for a job, if you tell me you are interested in programming games and your specialty is game AI, I will immediately ask you which games you worked on. If the answer is "none", I don't care about how many books you read or how you believe you are an expert in game AI. You won't be hired, period.

To obtain game development experience in a specific field such as AI, you need to seek out others that are developing games and try to get into their teams. You want specialization, remember? A generalist can develop the whole game, but a specialist needs to work in a team. However, you will again be asked for previous work for someone to trust you with the AI of their game, let's say. Even if you will work free of charge. So, it's a chicken and egg problem right there. Basically, you can't just specialize in anything with no prior game development experience.

Here's what you need to do: you need to forget about specializing and start contributing to the development of a game in any way you can. You can develop a simple game using a game engine such as Unity, or ask someone else developing a game and they will tell you what they need done. Then you'll figure it out and that will give you experience.

Once you have something to show, not only you will have a better chance of joining a team, but also you'll have a better idea on fields that you can specialize in or that you don't like to work on. Trying to make a decision right now without that experience is like marrying someone without getting to know them. You cannot know if you will hate coding game AI unless you have some relevant experience.

  • \$\begingroup\$ You should cover the case of a beginner in the field (that has some programming experience - e.g. from college or high-school). We cannot refuse to hire people based on whether they've worked on a game or not. Some of use never get the time to work on a complete game (other than your average space invaders clone or primitive 3D shooter - that is not going to help a lot in perfecting the mentioned skills) \$\endgroup\$
    – teodron
    Sep 5 '13 at 12:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.