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

My son (15) has decided that he wants to pursue a career as a games programmer. I've said that he should get started now with a simple game. He has no programming experience yet, but I am a programmer (business apps, not games) so I can teach him programming, but what would be a good platform for him to start on? Initially I'm looking for something that can provide quick results, to keep his enthusiasm up.

What would you suggest?

share|improve this question

closed as not constructive by Tetrad Jan 14 '12 at 11:01

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Closed? You have got to be kidding! I asked this question the year before last, it's had at least 19 upvotes, its upvoted answers have had at least 86 upvotes, 5 people have marked it as a favourite. And the answers do involve facts, references, or specific expertise. Finally, it's been incredibly useful to me, and, I would suggest, other people as well. How do I go about appealing this decision? – gkrogers Jan 20 '12 at 4:39
You can make a post about it on meta if you really want to. – Tetrad Jan 20 '12 at 20:16

15 Answers 15

XNA is a good solution for a fairly confident programmer. It would be a good goal to aim for in the future.

The Unreal Development Kit is a way to get results far more quickly and easily, and might be a good place to start. Comments have indicated that the UDK is actually a pretty bad alternative, so I can't recommend it.

Unity is an alternative, it will run on phones which is something UDK can't do (as far as I know). So if he's into programming games for phones, perhaps unity would be better?

share|improve this answer
I agree with this. Unity is an alternative to UDK, though I think it's a bit harder to figure out. See if you can get him to mess with some UnrealScript (the scripting language of the Unreal Development Kit). XNA is definitely the first true from-scratch game programming language that he should use, though; it's the easiest (relatively speaking; not for absolute beginners) and I love it for prototyping because you can pretty quickly start drawing things on screen. – Ricket Oct 2 '10 at 15:11
+1 for the XNA suggestion. If he strives to learn it well and has good ideas he can easily make some spending money selling games for the Zune/WP7/XBOX 360. – Sergio Oct 3 '10 at 14:24
Unity works on the iPhone and in browser, so is a good way of distributing the game for people to test, and getting use to being flamed early on – Chris S Oct 5 '10 at 11:26
Avoid UDK. It can be very powerful, but is also a huge pain. It's full of "gotches" and undocumented restrictions. – Peter Ølsted Nov 24 '11 at 19:18
I'm 15 too, learned first pascal at 10, then C, then C++. Tried to program some games in C++ and allegro at 12+-, not much success, i could do a lot of things, but i couldnt think how to build a entire game. That kept me up. With XNA things were a lot easier, and also, the easy error handling of C# exceptions shown at debug time helps a lot to help you know where are you doing something wrong. of course, another languages do have too, but i think the Visual C# has the best debug tool around. – Gustavo Maciel Jan 12 '12 at 23:14

I'm also 15, so I guess that could help? :P

I've recently started learning Python (been doing C++ for a year or so), and I'm finding it much easier to learn than C++. There're a lot fewer pitfalls, and you need little code to get something on the screen - what I find makes you want to continue.

And there are wrappers like Pygame and Pyglet over SDL/OpenGL for the graphics side.

Before he starts making simple games, I would advise learning a language for at least a couple of months. (Of course, text based games like guess the number and hangman are good exercises during this time)

share|improve this answer
Python and Pygame was a breath of fresh air to me after writing games in C for many years. I figured I could get the same thing done in about 10% of the time in Python because of the higher level aspect to everything. – dash-tom-bang Oct 3 '10 at 11:02
I know, I'm feeling the same (and I've been doing C++ for a year). – The Communist Duck Oct 3 '10 at 11:26
+1. I have to say, despite only being a little familiar with Python, it's my first recommendation for beginning programmers. Now we just need a python-robots! Also good suggestions for e.g. hangman. =) – leander Oct 5 '10 at 17:20
Dude you should learn a .net language (i like C#, F# not so much, is ok. boo isnt support in visual studios :(). The languages are less error prone then C++ and you get exceptions when you do something wrong (a very good thing. C++ should do more of that). And you can learn how to use the call stack, watch variables, breakpoints (i assume breakpoints work in a python IDE?) and you'll be able to debug quickly. Which is great when you write unstable beginner code. – acidzombie24 Oct 5 '10 at 21:39

A bit of an unorthodox answer here:

Starcraft II Galaxy Editor.

You can make almost any game within Starcraft 2.

It also teaches most programming constructs like loops and if statements in a GUI-centric way.

Once he's confident with the basics, you can have him script stuff.

If he's good at it, and finds this interesting, he will love proper game programming.

share|improve this answer
I was about to suggest Warcraft III. Getting started in a simple scripting language is really a nice way to go. Both Warcraft III and Starcraft II has a GUI you can use to get comfortable, and a function to view the code as raw script, to see the inner workings. – William Mariager Nov 24 '11 at 22:20
Right track. Starting with ANY level editor is the best way to go. He can skip all the scaffolding and difficulty and get right to the interesting part of weaving a scenario and designing a level. – bobobobo Dec 13 '11 at 0:23
By far one of the best answers I've ever seen for this type of question, I started making game first when I was very little with MS powerpoint through hyperlinks and playing a game called "the robot club"; which in its gameplay teaches you a lot of the basics of programming – Jim Jones Nov 24 '13 at 6:02

I would roughly divide game development tools into three broad categories:

  1. Easy to learn and use, but limited. Game Maker, Game Salad, RPG Maker, Adventure Game Studio all fall into this category.
  2. Powerful, but with a steep learning curve. C++ and other "hardcore" programming languages fit here.
  3. Intermediate languages, generally scripting languages like Lua, Python, and ActionScript, which split the difference by requiring you to actually write some code but taking care of the more obscure details like memory management for you.

For people with no programming experience, I usually advise they start in the first category, just to get started doing SOMETHING. When they feel comfortable with a given authoring tool but are really feeling like the limitations are outweighing the benefits, it's time to learn something in the next category up.

share|improve this answer
+1 for subdividing into 3 phases :) – Vishnu Oct 14 '10 at 6:55

I know this will date me somewhat, but growing up I really enjoyed P-Robots. There's a really simple goal (beat the other robots), a simple API, and a short amount of time between changes to code and seeing the results. It segues into AI, design patterns, and even larger-scale code structure (some of these robots can get pretty big -- and what about sharing code between robots?). If you can find something similar but newer it would be a good way to get the "getting started programming" part. Suggestions:

Once that's done, consider going for a really simple 2D scrolling shooter, platformer, or similar "arcade-style" game -- you can use SDL or XNA or whatever's most familiar. Even getting a pong clone up and running in these is not entirely trivial. This gives you a small echo of what it's like to build something "ground up".

After this, explore: a mod to an existing 3d game (a new object, or a bot, or something) to give a little insight into larger engines.

The keys, from what I've seen, seem to be:

  • rapid iteration: the ability to see results quickly
  • prototypes: many small experiments to get breadth of experience and confidence (okay, how would we do a marble game? how about space invaders? etc)
  • exploration: learning to love looking into how other peoples' games are built, tweaking them, etc
share|improve this answer
+1 for mindstorms, but I would use ROBOCODE ( instead of P-Robots. – Callum Rogers Oct 2 '10 at 18:35
@Callum: brilliant, will update the answer =) – leander Oct 2 '10 at 20:56
I would use LegoMindstorms with NXC – Joe the Person Jun 24 '11 at 20:31

My advice is to make web-based games. Why? Well, first of all, JavaScript is a beautiful language that will teach him all of the basic concepts of programming and you actually can make a great, competent and cross-platform game with it. It will also qualify him for many more things other than just making games... If you, for some reason, wouldn't like your son to get into web-development, then I suggest using Python, with a module called PyGame. I also have experience with that, and I'ts awesome. What I don't suggest is starting out with C/C++, that's what I did and it's awful and might get him unmotivated for programming altogether.

On another note, you're probably an awesome father, congratulations!

share|improve this answer
Good suggestions. That said, I started with C (not that there were real alternatives back then) and it really wasn't so painful; of course, that's not a reason to use it now that there are higher level languages. – o0'. Nov 25 '11 at 17:08
Thanks! Also, I didn't start with games, and my point was that he will, after learning a higher-level language, have a better understanding of the general programming concept and won't have his motivation depleted. And of course - I was exagurating a bit there ;) – jcora Nov 25 '11 at 19:04
At that age, being able to share my creations easily with friends was a motivator. Web games are more easily shared. You post your URL to Facebook and ask your friends to try it out. Actionscript/Flash or Javascript/HTML5 are probably your best bets for being able to share easily, with Java or Unity a close second. – amitp Jan 13 '12 at 18:01

Mindstorms Roboter are really cool. We got some NXT's in school, and last week we started with programming things like follow a line, and that stuff. You can get easily results.

Also i found a while ago. I didn't got more into it, but it was really interesting. You can programm with lite-C which is:

Lite-C is a programming language for multimedia applications and computer games, using a syntax subset of the C programming language with some elements of the C++ programming language

At the you get into it. And there are also a level, model and terrain Editor.

ps: I am 16 and started with a friend programming a website and customizing a programmed game server. So this could also be interesting for him.

share|improve this answer
+1 Very easy documentation how to, seems very easy to deal with indeed. – Prix Oct 3 '10 at 16:27

I can't suggest this enough, but building his own levels for his favorite game of choice.

For someone of that age/ skill level, they should start by building levels in their favorite game engine of choice.

Many great games come with a level editor that allow many degrees of freedom.

RPG: Obsidian's NWN 2 electron toolset series, Elder scrolls

RTS: Warcraft III's level editor is a fantastic RTS editor and even spun off it's own game ( league of legends and heroes of newerth ).

FPS's: Hammer for half-life 2. Counterstrike was originally a half-life mod.

Start here. Building levels for your favorite game is probably the best place to start.

share|improve this answer

Although all the information here is helpful, I wanted to mention that the STEM Challenge (a national game competition promoted by the White House and ESA ) has some suggestions about platforms

Gamestar Mechanic, Gamemaker, Kodu, Scratch, PBS KIDS Ready To Learn Stream

I have a feeling that there are community resources about these platforms specifically as it relates to STEM.

See also this excellent tutorial about python and pygame (which is also an online book) here's the PDF of the sequel to the book specifically about pygame

Here's another NYT article

Update: here is a slashdot discussion

share|improve this answer

Game Maker is an excellent choice for people with no programming experience. It has a free version and a relatively cheap paid version. It allows you to quickly make games with a drag-and-drop interface, but includes support for more advanced scripting.

share|improve this answer
I'm not going to downvote this, but GameMaker and Visual Basic are both tools that teach bad syntax (VB) and GameMaker isn't really too great. For one, you don't have access to nice IDE's like VS, Drag-And-Drop Game-making doesn't really teach anything. – Joe the Person Jun 24 '11 at 20:30
I'm not sure why you're mentioning VB; Game Maker's roughly C-based. Regardless, Game Maker is a good way to progress from knowing nothing to understanding the sort of thinking necessary for game dev. Responding to events, maintaining a game loop, using the relationships between graphical resources and code, bringing a project from idea to publication; these are all things you can learn about with drag-and-drop development. I do agree that GML is a limited language, but the system as a whole is a good jumping-off point. – Gregory Avery-Weir Jun 24 '11 at 21:03
I'm mentioning VisualBasic because of DarkBASIC, which is Yet Another Horrible Programming Tool. – Joe the Person Jun 24 '11 at 21:05
Game Maker is definitely a good way for result oriented teaching. No need to learn physics or rendering. Just use the built-in features. And the move to C++ is easy, as you can start by making dlls and use them in Game Maker, and later, ditch Game Maker completely. – William Mariager Nov 24 '11 at 21:23
Never, ever suggest GameMaker to someone older than eleven years... If he's fifteen, he might as well wrap his head around programming. – jcora Nov 25 '11 at 19:05

As Martin mentioned, the UDK is probably the fastest way to get something working as it comes with so many premade things like AI, models and also a wealth of books. It has a very good map editor, and the language is Java-esque (and ECMA-script like).

An alternative might be to try doing games in Flash or Silverlight - start off with simple 2D games. Whatever genre of games he likes dictates the toolkit.

share|improve this answer
No! Not UDK! It is: buggy, slow, error-prone, complex, etc. Go with Unity instead. – Joe the Person Jun 24 '11 at 20:31
@firedude67 UDK buggy, error-prone? kidding? – iamcreasy Nov 25 '11 at 9:20
well in my experience it lagged incredibly, anything i built gave BSOD, and I couldn't find any helpful documentation. Not even the example projects ran. – Joe the Person Nov 25 '11 at 18:22
I never found UDK buggy, but I highly do NOT recommend it for a game programmer. An artist, yes, but a programmer, no. The 'documentation' is a joke, and to find what classes you have to subclass, you actually have to open up the parent class, as they have decided not to give you an API reference. Also, a lot of work is needed to make different types of games, since it is an FPS engine at heart. – DMan Nov 26 '11 at 18:35

Coming from a 14 year old, this advice might be useful. I find, the best way to choose a platform, is the platform most suited to the purpose. I've made this post many times before.

From Reddit-

Choose a language that suits your purpose. Most gamers don't care about what language the game is programmed in. They care if they can play it or not. They care if it runs fast on their computer. They care if the game isn't 10gb in size. They don't care if its an exe or jar.

Look at games such as Minecraft. Sure its written in Java, a language that has an extremely small market share in the game dev industry. Do the consumers care though? No. They care about the functionality.

However, since your son doesn't have any experience in programming, I suggest learning a language that is fast to code such as Python, or using an existing platform, such as XNA. Personally I love Slick2D with Java, but I guess thats my preference...

share|improve this answer

I was introduced to programming at a young age (younger than 15), and my Dad decided to use VB (1.0). We made a twisted version of pong using a timer object and GDI drawing. I liked that because we started with a blank canvas and were able to learn the basics of programming structures while trying to make something fun.

Today, I think I would choose XNA and pick a simple 2D game. C# and XNA are fairly straight forward and they leave you with plenty of room to grow, and they are free.

share|improve this answer

Why dont you have him learn regex to have a taste of what programming is have him also do that classic console guessing game (my number is from 1 to 100. Guess).

In my class the teacher had us implement a game with an image falling from the sky. I learned a lot. Such as random numbers to get them to drop at different speeds and member vars to make the speed consistent.

share|improve this answer
Regex is not programming - it a grammar to define an NFA grammar; you are also better off if you don't know how to use it. – Jonathan Dickinson Nov 24 '11 at 18:05
Why on earth would you be better off not knowing how to use regex? I am not talking about using perl here. – acidzombie24 Nov 25 '11 at 11:04
A non-deterministic function in a game is a really poor design decision. Regex is also used to parse text; which you don't need to do all that often in a game. – Jonathan Dickinson Nov 25 '11 at 11:33

If he just wants to make games then he should use XNA, Unreal, Unity etc. If he wants to be a games programmer then he should learn C/C++ and OpenGL/SDL or D3D first.

XNA, Unreal, Unity etc are great for making games but really bad at doing far too much for you. I'm sure people will disagree with me on this, but these basically turn you into a lazy programmer and when the time comes to learn things like points in C++ it'll be more difficult because you went with the easier options first.

Peronally I never suggest anthing other C/C++ as the first language to learn if you want to be a games programmer. The main reason is that even if you go and learn C#/XNA , if you're seriously about becoming a games developer you will have to know C or C++ at some stage because no one will hire you otherwise. So if they're serious about the profession then you're only delaying learning what's expected from you.

share|improve this answer
By the time a 15 year old is ready to be professionally employed (eight years from now), I see no reason to assume everyone will be using C++. Eight years ago, C++ was just starting to enter use in games and getting its first really practical standard, and most everyone was shipping with C. Eight years before that C++ was in a laughably bad state for game development, and the order of the day was C and asm. Eight years from now, most game programming will probably look a lot more like XNA than the C++03 it does now. (cont.) – user744 Oct 2 '10 at 17:26
The key element is to become a good programmer, which is independent of any individual language. For new programmers, C# is going to get them more motivated more quickly. They'll go back and learn the more detailed stuff if they want to be any good, but you need to hook them long enough to get to that stage. – user744 Oct 2 '10 at 17:27
The important details in game programming are SIMD, not SSE; cache lines, not the C++ standard layout; hashing, not std::unordered_map; polymorphism, not virtual functions. Those latter things are minutea, and are incidental, not fundamental. When you know the former, the latter tends to trivially follow. – user744 Oct 2 '10 at 22:13
Starting with C++ is a bad idea, generally. It's a difficult language, and moreso as a first. – The Communist Duck Oct 3 '10 at 10:23
I started C++ at 15, and while I'm happy with where I am now, starting with something easier would probably have been a lot less painful, and allowed me to focus on actual game dev, rather than pointers and segfaults... – Riley Adams Oct 3 '10 at 17:49

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