32
\$\begingroup\$

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?

\$\endgroup\$
2
  • 13
    \$\begingroup\$ 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? \$\endgroup\$
    – gkrogers
    Commented Jan 20, 2012 at 4:39
  • 1
    \$\begingroup\$ You can make a post about it on meta if you really want to. meta.gamedev.stackexchange.com \$\endgroup\$
    – Tetrad
    Commented Jan 20, 2012 at 20:16

14 Answers 14

30
\$\begingroup\$

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?

\$\endgroup\$
12
  • 4
    \$\begingroup\$ 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. \$\endgroup\$
    – Ricket
    Commented Oct 2, 2010 at 15:11
  • 2
    \$\begingroup\$ +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. \$\endgroup\$
    – Sergio
    Commented Oct 3, 2010 at 14:24
  • 2
    \$\begingroup\$ 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 \$\endgroup\$
    – Chris S
    Commented Oct 5, 2010 at 11:26
  • 4
    \$\begingroup\$ Avoid UDK. It can be very powerful, but is also a huge pain. It's full of "gotches" and undocumented restrictions. \$\endgroup\$ Commented Nov 24, 2011 at 19:18
  • 5
    \$\begingroup\$ 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. \$\endgroup\$ Commented Jan 12, 2012 at 23:14
21
\$\begingroup\$

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)

\$\endgroup\$
4
  • 9
    \$\begingroup\$ 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. \$\endgroup\$ Commented Oct 3, 2010 at 11:02
  • \$\begingroup\$ I know, I'm feeling the same (and I've been doing C++ for a year). \$\endgroup\$ Commented Oct 3, 2010 at 11:26
  • \$\begingroup\$ +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. =) \$\endgroup\$
    – leander
    Commented Oct 5, 2010 at 17:20
  • \$\begingroup\$ Dude you should learn a .net language (i like C#, F# not so much, vb.net 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. \$\endgroup\$
    – user1047
    Commented Oct 5, 2010 at 21:39
13
\$\begingroup\$

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.

\$\endgroup\$
3
  • 3
    \$\begingroup\$ 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. \$\endgroup\$
    – William
    Commented Nov 24, 2011 at 22:20
  • 2
    \$\begingroup\$ 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. \$\endgroup\$
    – bobobobo
    Commented Dec 13, 2011 at 0:23
  • \$\begingroup\$ 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 giantbomb.com/the-robot-club/3030-29776 \$\endgroup\$
    – Jim Jones
    Commented Nov 24, 2013 at 6:02
10
\$\begingroup\$

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.

\$\endgroup\$
0
9
\$\begingroup\$

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
\$\endgroup\$
3
  • 2
    \$\begingroup\$ +1 for mindstorms, but I would use ROBOCODE (robocode.sourceforge.net) instead of P-Robots. \$\endgroup\$ Commented Oct 2, 2010 at 18:35
  • \$\begingroup\$ @Callum: brilliant, will update the answer =) \$\endgroup\$
    – leander
    Commented Oct 2, 2010 at 20:56
  • \$\begingroup\$ I would use LegoMindstorms with NXC \$\endgroup\$ Commented Jun 24, 2011 at 20:31
6
\$\begingroup\$

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!

\$\endgroup\$
3
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – o0'.
    Commented Nov 25, 2011 at 17:08
  • 1
    \$\begingroup\$ 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 ;) \$\endgroup\$
    – jcora
    Commented Nov 25, 2011 at 19:04
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – amitp
    Commented Jan 13, 2012 at 18:01
5
\$\begingroup\$

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 www.3dgamestudio.de 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 http://tutorial.3dgamestudio.net/ 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.

\$\endgroup\$
1
  • \$\begingroup\$ +1 Very easy documentation how to, seems very easy to deal with indeed. \$\endgroup\$
    – Prix
    Commented Oct 3, 2010 at 16:27
4
\$\begingroup\$

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.

\$\endgroup\$
1
3
\$\begingroup\$

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 http://www.stemchallenge.org/about/Default.aspx

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) http://inventwithpython.com/chapters/ here's the PDF of the sequel to the book specifically about pygame http://inventwithpython.com/blog/making-games-with-python-pygame/

Here's another NYT article http://www.nytimes.com/2011/11/10/technology/personaltech/computer-programming-for-children-minus-cryptic-syntax.html?_r=2&sq=mitchel+resnick&st=cse&adxnnl=1&scp=1&adxnnlx=1322489239-tMp1Wjl9FUcI8rLaJ6cbOw

Update: here is a slashdot discussion http://ask.slashdot.org/story/11/12/27/152228/ask-slashdot-tools-for-teaching-high-school-kids-how-to-make-games

\$\endgroup\$
2
\$\begingroup\$

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.

\$\endgroup\$
6
  • 5
    \$\begingroup\$ 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. \$\endgroup\$ Commented Jun 24, 2011 at 20:30
  • 1
    \$\begingroup\$ 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. \$\endgroup\$ Commented Jun 24, 2011 at 21:03
  • 1
    \$\begingroup\$ I'm mentioning VisualBasic because of DarkBASIC, which is Yet Another Horrible Programming Tool. \$\endgroup\$ Commented Jun 24, 2011 at 21:05
  • \$\begingroup\$ 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. \$\endgroup\$
    – William
    Commented Nov 24, 2011 at 21:23
  • \$\begingroup\$ Never, ever suggest GameMaker to someone older than eleven years... If he's fifteen, he might as well wrap his head around programming. \$\endgroup\$
    – jcora
    Commented Nov 25, 2011 at 19:05
2
\$\begingroup\$

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.

\$\endgroup\$
4
  • 1
    \$\begingroup\$ No! Not UDK! It is: buggy, slow, error-prone, complex, etc. Go with Unity instead. \$\endgroup\$ Commented Jun 24, 2011 at 20:31
  • \$\begingroup\$ @firedude67 UDK buggy, error-prone? kidding? \$\endgroup\$ Commented Nov 25, 2011 at 9:20
  • \$\begingroup\$ 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. \$\endgroup\$ Commented Nov 25, 2011 at 18:22
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – DMan
    Commented Nov 26, 2011 at 18:35
1
\$\begingroup\$

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...

\$\endgroup\$
0
\$\begingroup\$

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.

\$\endgroup\$
-4
\$\begingroup\$

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.

\$\endgroup\$
7
  • 10
    \$\begingroup\$ 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.) \$\endgroup\$
    – user744
    Commented Oct 2, 2010 at 17:26
  • 8
    \$\begingroup\$ 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. \$\endgroup\$
    – user744
    Commented Oct 2, 2010 at 17:27
  • 5
    \$\begingroup\$ 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. \$\endgroup\$
    – user744
    Commented Oct 2, 2010 at 22:13
  • 2
    \$\begingroup\$ Starting with C++ is a bad idea, generally. It's a difficult language, and moreso as a first. \$\endgroup\$ Commented Oct 3, 2010 at 10:23
  • 4
    \$\begingroup\$ 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... \$\endgroup\$ Commented Oct 3, 2010 at 17:49

Not the answer you're looking for? Browse other questions tagged .