Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a very general question which bothers me but i want to add some details first. I'm a core Java programmer. I have independently created some small games in Java for fun. Now, the more I'm looking into professional game development the more I'm getting confused. This is because, whenever I Google about some game development topics or visit any fora etc., I come across different suggestions.

Some will say C++ is good, while some will say JAVA may be better, while still others will say some other language is the ur-language, like Python, Lua, UnrealScript, etc. Also it is suggested that one ought to have knowledge of game engines like Unreal, Torque, Blender, Panda, etc and knowledge of OpenGL, AI, Collision Detection is required. I have even created a game using Android SDK.

What I want to ask is:

  • What is the basic skill set that a Professional Game Programmer needs to have? Is it any 1 Programming Language + 1 Scripting language + 1 Game engine knowledge + OpenGL? (Phew!!)
  • If I want to enter into Game Industry as Gameplay Programmer or AI programmer then can I get into it with my current skills and portfolio (as stated above)?
  • Is learning one programming language is enough for Game Development?

Any guideline will be helpful.

share|improve this question

closed as primarily opinion-based by Josh Petrie Dec 12 '13 at 17:25

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 4 down vote accepted
  1. You should be proficient and competent with at least one programming language. Doing so will help you to pick up other languages more easily. The type of job you're applying to depends on what language you should probably know before hand. Most triple A titles released on PC and console will most likely be developed in C++. Mobile applications and games on the other hand will most likely be using Java (Google Android and other phones) or Objective-C (iPhone). If you take a look around at job listings for software engineers on developers websites, it usually will mention what language experience you need to have. For example, "Proficient and knowledgeable in C++" or "Experience with C++ for at least two years." Learning a scripting language won't hurt you. It'll only benefit you. Learning always benefits, and never hurts.You don't need to have a working knowledge of any game engine, but if you're applying to a company that uses that specific engine, it'll probably help you're resume. If you're an expert on the Source engine, but you apply to id software and know nothing about the id tech engines, that's not really super helpful (but beneficial cause learning is always beneficial).

  2. If you've completed projects from start to finish, and you show that you have, then I think that would help boost you're resume. I'm not sure about a plethora of tech demos though. Lots of people seem to be doing tech demos and they don't have any or few game projects completed. Gameplay programmer tends to be a jr. level position, so yes, depending on your resume you should be able to find a job somewhere.

  3. I think that knowing one language and being able to use it proficiently and competently is better than knowing 5 languages and barely knowing how to use them.

Disclaimer: Never worked in industry, these are just my opinions that have been formed after reading several threads and articles about game programming jobs, based on what I thought were the most sensible articles/opinions I've read.

share|improve this answer
I would augment bullet point 1 with "knowledge of one programming language that uses pointers." Pointers are such a fundamental requirement to understanding what is going on with a language that never having experience with them can be a huge disadvantage when going to a language that needs them. C++ is extremely prevalent for non-web-games, so you might as well start there. – Tetrad Nov 15 '10 at 12:20
@ShrimpCrackers You know that you can make actual "Bullet Points" using the editor, right? ;) – Ben Feb 7 '12 at 13:54
You should show to know at least a programming language that is not widely used in industry but has some interesting peculiarity: this communicates that you learn because of interest over opportinity, that you are a polyglot that understands different philosophies / approaches and you can (hopefully) merge the best of both worlds. – FxIII Feb 15 '12 at 8:08

The more I research this topic and talk with professional game developers, the more I think it really comes down to a few things. In no particular order:

  • Ability to work well together in a team atmosphere. Building games takes an extraordinary amount of people, just reading the credits in some of the AAA games nowadays takes 10+ minutes, if you can't work well with people and your goal is to work with other people to make a great game then I fear this isn't the right industry. This is one of those soft skills that is usually developed over time from working on projects with other people.
  • Find what you like to do. This is kind of open ended but find out what you like about game development and what skills you need to accomplish this. I know this is kind of the answer you are looking for, but I could rattle off all the skills you might need to be an engine developer, graphics developer or a gameplay developer, but you can find a lot of that information pretty easily online. Your skills are going to need to tie very closely into what you are interested in. Ex: Don't worry about knowing the in's and out's of OpenGL and DirectX if you are really interested in Server side development and vice versa.
  • Be Proficient in a Low Level Language With the above being said though, I agree with the other posters that a low level language is a good idea to learn. I know when I went from C# to C++ I learned a lot about how the magic of C# works, this is knowledge that gives you a good understanding of how to effectively communicate with a computer regardless of language.
  • Understand computer architecture - By this I don't mean that you must have a degree in CE or EE to really understand every part of a computer architecture, but know the basics of how memory, CPU and GPU work. Regardless of the area of game development you go into it will be beneficial to at least have a grasp of how these work. If you want to jump into Graphics programming or Engine programming then you will need to understand even more in this space.
share|improve this answer
you really feel old when people call C++ a low level language – dreta Feb 15 '12 at 7:48
@dreta I'm not that old and I don't see it as a low-level language either. Probably has to do with C++ being the first language I used. – Paul Manta Feb 15 '12 at 14:02

There is another very important skill needed that seems to be a little overlooked. You need to know how to fit in and work with a team of people, going from other game devs, to designers and project managers and stuff. It's not a technical skill, but it's still very important, as you could be the best dev in the house and if you can't get on with people, make large games is going to be a problem!

Also, as ShrimpCrackers kowing one language well is better than roughly knowing 5 languages, and understanding what goes on under the hood of that one language you are goot at is even better, as for games, you need to know how to get the best performance out of the language.

Last but not least, knowing a little about hardware, GPU in particular won't hurt!

share|improve this answer

A lot depends on your career goals. If all you want is "a job making games" before doing the requisite 5.5 years and burning out and leaving, then I guess you just look at entry-level job openings and look for what they want, learn it, and apply. Simple. (But then, if your question really comes down to "what's the minimum effort I need to put in to get a job?" then the answer is "if you put in the minimum effort, you're going to get the minimum job!")

But long term, I don't think it's so much about knowing some number of languages, or learning a specific one. The languages change -- ten years ago no one was using Objective-C or XNA or C# or AS3, and ten years from now rest assured that any language you learn today will be obsolete by then anyway.

So one thing to future-proof yourself is to not just "learn a language" but to learn HOW to learn new languages. Once you've become proficient in 3 languages or so, you'll find that picking up a new one is not so bad. Most of the core components are the same, anyway -- every language has variables, arrays, loops, conditionals, and so on, so it's just about learning the syntax.

The other half of this is to understand the core concepts of programming and computer science. Understand memory management, pointers, recursion, and so on. If you understand the concepts, you can apply them in pretty much any language.

If you want to make yourself more marketable, then learn a programming specialty relevant to games, whatever interests you... AI, databases, networking, tools, whatever.

share|improve this answer

For programming social games there are to main skills that are the only ones needed.

  1. Program action script (you can use an elipse environment and a svn), this is used for the front end of the game (the webpage)

  2. Program java (which can also be done on eclipse an use svn), this is used for the server side actions to take from the requests of the webpage.

share|improve this answer

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