12 year old son wants to start learning game programming...

Anomaly1964

Platinum Member
Nov 21, 2010
2,460
4
81
Son wants to learn to be a game programmer. I really know nothing about this so, what direction should I point him in?

ANY help is great...Thanks!
 

Cogman

Lifer
Sep 19, 2000
10,278
126
106
Game programming is VERY difficult. You need to get him just programming to start out with (not an easy task.)

Start him out with a lower level language like c++ and move from there. Java might not be a bad choice in this situation either.

Some might suggest using XNA, I'm still not sold on it however.



My learning plan would be
C++->SDL->Opengl

Projects should start out simple (Guess which number I stored in this variable) and move up in difficulty.
 

PhatoseAlpha

Platinum Member
Apr 10, 2005
2,131
21
81
Eh....I wouldn't start anybody on C++. Start with learning basic concepts about design, flow control and algorithms, and see if they grok them. Don't want to do that in C++, too easy to get bogged down by how close to the metal they are.

He'll need to get to that level of detail eventually, but I'd start with something simple, Java or .net games of a very simple nature.
 

Cogman

Lifer
Sep 19, 2000
10,278
126
106
Eh....I wouldn't start anybody on C++. Start with learning basic concepts about design, flow control and algorithms, and see if they grok them. Don't want to do that in C++, too easy to get bogged down by how close to the metal they are.

He'll need to get to that level of detail eventually, but I'd start with something simple, Java or .net games of a very simple nature.

meh, for the basics, C++ really is in many ways just like java and C#. The difference comes in things like memory management. C++ really isn't that difficult of a starter language.
 

you2

Diamond Member
Apr 2, 2002
5,906
1,085
126
He should start in an interpreted language; I'd recommend java or perhaps C# or maybe python. The language should have good support for basic graphics so he can get a hang of drawing and moving objects and similar. C++ would be a horrible choice imho (I've been programming in C++ daily for the past 15 years).

The problem with C++ is that simple errors will result in a core dump so will require some effort to debug. Now if your child is exceptional the experience and knowledge gain by learning about systems et all would be very helpful but if he is above average (b+/a- student at your typical public school) then java or similar is probably the better choice.
 

Train

Lifer
Jun 22, 2000
13,572
66
91
www.bing.com
C++ for a 12 year old? uhh no.

I was making games on the C64 when I was 12, but that was in Commodor BASIC, very easy to learn. By the time I was 14 I was able to optimize small sections of code using assembly, but that was after a thorough understanding of the system learned through BASIC.

Java/C# with a pre-built API would probably be the way to go. you want him to have fun while doing it. XNA comes to mind but that might be too high of a starting hurdle. I would possibly look into the Java and C# API's for Lego Mindstorms, very easy to get started. Building robots and programming them, now that would be fun.
 

squatchman

Member
Apr 1, 2009
50
0
0
He is twelve. Unless he has a knack for math at a highschool level or a strong programming background then you may want to start with something like Scratch.

http://scratch.mit.edu/

Leave the soul crushing experience of wading through thousands of lines of graphics API documentation for when he hits college in six years.
 

Cogman

Lifer
Sep 19, 2000
10,278
126
106
C++ for a 12 year old? uhh no.

I was making games on the C64 when I was 12, but that was in Commodor BASIC, very easy to learn. By the time I was 14 I was able to optimize small sections of code using assembly, but that was after a thorough understanding of the system learned through BASIC.

Java/C# with a pre-built API would probably be the way to go. you want him to have fun while doing it. XNA comes to mind but that might be too high of a starting hurdle. I would possibly look into the Java and C# API's for Lego Mindstorms, very easy to get started. Building robots and programming them, now that would be fun.

I was playing with c++ and vb6 around the time that I was 12, I don't see why it is such a stretch of the imagination that someone else could learn that sort of thing. It was around that early age that I started playing with perl and web design stuff.

I guess, though, if I draw from my own experience, I preferred vb6 at the time because it was something that I could visually see something happening in. I didn't program a game (Still haven't really ).
 

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
/facepalm

Don't give a 12 year old a book about C++ and OpenGL. You'll destroy any hope they had of ever writing a game when they haven't even blitted a couple of bitmaps together after a month of staring at books.

Look at some kind of simple 2D oriented BASIC style language. Something where there are built-in constructs for handling graphics and sound and they only thing the kid has to worry about is handling input and moving a couple of images around the screen. Have them start with something simple and manageable like a Combat style game. It's a single screen, can be as simple as four objects (two tanks and two bullets) and can be built upon as the kid learns, adding buildings that block shots, item pickups, etc.

After he's comfortable with basic programming concepts then maybe start thinking about moving on to lower level languages and APIs.


Edit: Something like BlitzBasic (http://www.blitzbasic.com/Products/blitzplus.php)
 
Last edited:

Cogman

Lifer
Sep 19, 2000
10,278
126
106
/facepalm

Don't give a 12 year old a book about C++ and OpenGL. You'll destroy any hope they had of ever writing a game when they haven't even blitted a couple of bitmaps together after a month of staring at books.

Look at some kind of simple 2D oriented BASIC style language. Something where there are built-in constructs for handling graphics and sound and they only thing the kid has to worry about is handling input and moving a couple of images around the screen. Have them start with something simple and manageable like a Combat style game. It's a single screen, can be as simple as four objects (two tanks and two bullets) and can be built upon as the kid learns, adding buildings that block shots, item pickups, etc.

After he's comfortable with basic programming concepts then maybe start thinking about moving on to lower level languages and APIs.

I'm not saying to start the kid off with Opengl. I'm saying, get him familiar with programming in c++. Teach him what a function is, what a class is, ect. Then, once he can comfortably chug out some simple text parsers is when you spring the mess of opengl on him.

Make him a programmer first, then teach him how to program games. If you start by trying to program games, you'll end up not programming anything.
 

dinkumthinkum

Senior member
Jul 3, 2008
203
0
0
I picked up C and assembly when I was about that age. I don't recommend it as the way to go necessarily, though, as I was interested in the system itself. And it turns out I wasn't able to comprehend the manuals well enough to do anything significant until many years later. Game programming doesn't require systems programming experience, the only reason people use C++ is because of micro-optimization opportunities which are really pointless to bother about when getting started. You'd be better off with a language environment that lets you get a lot done with little effort, like a scripting language. If you are willing to think outside the box a bit, you could try out the Squeak language, which is a Smalltalk-based graphical environment designed to be easy to program.

The game programming that I did back then mostly focused around text-based games and networking (e.g. MUDs). I did some basic VGA stuff, and I also messed around with my own 3-D engine, but it was not something that could be turned into a game without a lot more heavy lifting.

The trouble with game programming specifically is that half (maybe even more) of the work is the art and the modelling effort. If you are willing to skip graphics then you can focus on the programming side like I did. If you are more interested in graphics, then you might be better off starting with a program like Blender (free, open source, fully capable 3-D modelling). It includes a game engine so that you can create interactive 3-D worlds directly. When you get more advanced you can export 3-D models to formats which are widely supported by game libraries. I've been playing with Blender lately, there's a bit of a learning curve but lots of help out there, and it's really cool when you start making things. I wish I had gotten into it sooner.
 

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
I'm not saying to start the kid off with Opengl. I'm saying, get him familiar with programming in c++. Teach him what a function is, what a class is, ect. Then, once he can comfortably chug out some simple text parsers is when you spring the mess of opengl on him.

Make him a programmer first, then teach him how to program games. If you start by trying to program games, you'll end up not programming anything.

I disagree completely. His kid hasn't expressed an interest in becoming a programmer. He wants to be a game programmer. If you throw him in front of a C compiler with a book and tell him to spend months writing Hello World and other stupid beginner programming crap he's going to be bored out of his mind and lose interest.

The idea is to nurture his interests. Let him see some progress. If he sticks with it he'll realize on his own that whatever simple language he's using has limits and move on to C++ on his own.
 

bhanson

Golden Member
Jan 16, 2004
1,749
0
71
Just providing another alternative, I'm not necessarily endorsing it.

If you start him in a language like Java you could get him up and running with something he can see fairly quickly. After he learns the basics of programming (control structures, variables, etc.) you can have him participate in some of the AI contests.

The contests scale very well with skill level and are very easy for even neophytes to understand.

MIT does Battle code, and Google (UWaterloo) is starting to do some as well.

http://csclub.uwaterloo.ca/contest/index.php

In that contest you played a multiplayer version of snake. What they all have in common though is interfacing with a game engine that handles the graphics and game logic. Just a few lines of code could create a working "bot."

In snake the first goal might be to make your snake move forward, so the command may be as simple as
Code:
GameObject bot = new Bot();  
bot.moveFoward();

Then the next step would be to make sure the place your bot is trying to move is not a wall:

Code:
GameObject bot = new Bot();
if  (!bot.isWall(bot.getX() +1, bot.getY())) {
    bot.moveFoward();
} else {
    bot.moveRight();
}

Because it takes so little effort to create a working player the entry level is very low, but it basically scales to infinity.
 

dinkumthinkum

Senior member
Jul 3, 2008
203
0
0
Java and C# are the bureaucratic nightmares of programming languages. Programming in them feels like filling out papers in triplicate at the DMV. Don't forget to stamp your forms five times!
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
A beginner needs to be able to make something simple work relatively soon in order to ignite that sense of wonder and desire to know more, if in fact it is there to be ignited. Simple games are a great way to get started.

It's hard, but not impossible, to do that in C++. The chances are better if someone can walk the newbie through it. For my part, I suggest downloading Visual Basic express, and set him the goal of creating a hangman game in a console. Pretty much all you need are a few functions of the Console class and the willingness to experiment with looping, flow, input, and output. This is about as close as you can get, I think, to the experience we had back when interpreted BASIC was included on every PC.

We can help him get started, but essentially once you have the environment installed it's new project, windows project, console application, and the "program" class will already have the basic stubs generated for him to fill in.

If he manages to get Hangman going in a console a good next step would be a game where the computer plays the opponent, such as tic tac toe.
 

Kirby

Lifer
Apr 10, 2006
12,028
2
0
heh, we used to write cheesy games in c++ with borlands old ass graphics library when i was about 16 or so.

i'm about to take my opengl final in a couple of hours. this shit and GLSL makes me want to murder puppies.
 

Kirby

Lifer
Apr 10, 2006
12,028
2
0
I stand by my claim, C++ isn't THAT bad. Sheash, You would think I had suggested assembly

if he was interested in hardware, learning ASL with a cheap devboard would be fun. and i agree that c++ isn't that bad, i'm damn near retarded and i can manage it ok.
 

ttown

Platinum Member
Oct 27, 2003
2,412
0
0
i've heard good things about DarkBASIC

haven't used i first hand, but it looks good and has been around a pretty long time

It looks like someone can get a "success" in a short amount of time, which i think is important to keep the interest up.
Spending a week (yes, i'm exaggerating slightly) trying to get c++ to display "hello world" is a poor choice, imo.

Also might want to consider the lego robotics "Mindstorms" construction kit(s). Although it's a bit off your topic, it teaches what else "programming" can do.
 

Cogman

Lifer
Sep 19, 2000
10,278
126
106
i've heard good things about DarkBASIC

haven't used i first hand, but it looks good and has been around a pretty long time

It looks like someone can get a "success" in a short amount of time, which i think is important to keep the interest up.
Spending a week (yes, i'm exaggerating slightly) trying to get c++ to display "hello world" is a poor choice, imo.

Also might want to consider the lego robotics "Mindstorms" construction kit(s). Although it's a bit off your topic, it teaches what else "programming" can do.
Code:
#include <iostream>

using namespace std;

int main()
{
   cout << "Hello World\n";
}

Find me a language that is simpler than that for displaying hello world. Seriously, For simple console IO no language is going to be "Ohh so much more awesome" than another, save it be some esoteric language.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |