Teaching Kids to Make Games?
FreakerSFX asks: "My son has shown an avid interest in video games like most kids his age. What's different now is that he insists that he wants to learn how to build his own game. He's 9 and fairly gifted from a mathematics and computer standpoint and certainly capable of learning basic programming. What tools/books are recommended for a neophyte computer game programmer?" I remember one of my first exposures to computer languages was Logo,
which was a language that seems perfectly suited to young children. There is a Windows version available here that seems like it would be perfect for the development of simple games, especially for youngsters. What languages, and language resources, are you aware of that might be suitable for youngsters with an interest in creating games, and learning programming?
*flame suit on*
Since I don't know too many nine year olds, I can't fathom what games they're playing (Pokemon still? Yuyu Hashuko?), but my suggestion is to first control his expectations. What I mean is, you should be aware that even though he is gifted in math and has an interest in programming, that he won't be able to recreate Max Payne 2 or WarCraft III. Or even Pokemon on the GBA. That simply requires money. Some of the simplest games like Tetris aren't instantly easy to program.
Deep breath.
With that out of the way, I'd suggest writing a text only RPG or something like that. You can learn a lot about how games work coding up MUDs and such, and you don't have to worry about making the eye candy to go with it. When I was nine I coded up a mud in Basic (of course that was in the late 80's but whatever). Once you've got a fairly fun text RPG, you can try making it into a 2d world (a la Zelda) which wouldn't be too hard to implement.
I realize I haven't answered your question about programming languages and websites mostly because that usually leads to flame wars ("Nu uh! Ruby/VBA/C++ Rocks! Python/C/Java Sux!"), but if he's try interested in programming a game, I think a mud is a good place to start. I have a preference for Python, so you may want to check out pygame.org as well.
I learned programming by typing in code from books like "100 BASIC Computer Games" and so on. David Ahl's books, Compute!, and the like.
I don't see why a kid today can't type in a page of BASIC code out of a book. Once he sees the structure and gets the idea of how things fit together in a logical flow, the next steps should fall into place naturally.
If you're a zombie and you know it, bite your friend!
You might take a look at BYOND (Build Your Own Net Dream). It has a simple tile-based graphics engine, an object oriented language that is easy to learn, and automatic networking so you don't have to do any extra work to get multiplayer games. And it's completely free to download and use.
We've had a number of kids around the junior high age get involved and create their own games using BYOND. For most of them, it's their first introduction to real programming, and serves as a great springboard for getting into more advanced languages like C++ and Java. In fact, the success in that age group has almost become a problem -- the community is swarming with young adolescents and we adults feel like a minority there sometimes. We're even thinking of pushing it as an educational tool somewhere down the line...
Browse around at some of the games listed on the games site to get an idea of the system's capabilities. You won't be making first person shooters, but it could be just right for someone your son's age. Puzzle games and RPG/adventure style games do particularly well in BYOND. Once you've downloaded the client (Downloads link, obviously), you can even connect to any games that are currently online. Just beware the ones in the Unpublished section - they may or may not be up to snuff, and may be hosted by immature 13 year olds looking to be rude.
Then take a look at the programming guide and jump in to see if it will work for you. I'm not sure if 9 years old is too young for this, but your son sounds very smart, so he may pick it up just fine. Good luck!
Say hello to zMac.
You could also take a look at Macromedia Flash. They have a usable scripting language and you can draw or import graphics and sounds from elsewhere.
Do you even lift?
These aren't the 'roids you're looking for.
That's all I can find in a quick scan of my bookmarks from way back when...
"Go to CNN [for a] spell-checked, fact-checked summary" -- CmdrTaco
I used to teach kids programming (at the Computer Ed summer camps in Boston) and I had kids programming in all sorts of crazy languages. I think that it's wonderful what kids can achieve when they're excited about learning.
:-)
A few random pleasant memories:
- I was teaching a little girl to program in C. She was pretty good, given that we were using pretty primal tools (I think it was Turbo C on my Osborne Executive). The best part was that she was so tiny that she had to reach _way_ up to hold my hand when we crossed the street that ran through the camp. That just blew my mind -- one minute this brilliant kid was coding a sort routine in C, and the next she was a timid little girl holding my hand crossing the street.
- I had a whole gang of kids using the Lisp built into the BBC Micro (Acorn?). We had great fun writing an adventure game with a simple parser, so that kids could move around a simple network of rooms, pick stuff up and move it around and drop it. Some of the older kids implemented locking and unlocking doors. Pretty good for a two week, one hour a day course.
- A bunch of the older kids learned 6502 assembler on the Apple ][, using a simple assembler and the ROM debugger. Unlike the x86's, the 6502 is so simple to program (very clean design) that by the end of the class some of the kids were reading the binary straight rather than disassembling it. We wrote killer video games -- they had snakes running around the screen, gobbling "apples" and growing longer, until you hit a wall and the game ended. That was two weeks at 2 hours a day, so it was only for the most dedicated little geeks.
- Programming Robot Wars -- that was a very simple assembly language that controlled simulated robots. They loved coding their robots and seeing whose robot won. The modern robot simulators are superior in every way (e.g. alphaworks' Robocode, but Robot Wars was nice and simple and fun.
- Logo, of course. It's an amazing language. People usually think of it as a simple language for teaching, and it's great for that, but it's actually nearly identical to Lisp, so you can do all of the cool recursion, etc., in Logo. The usual stages of the day were Logo for little kids, then BASIC, then Pascal for the advanced students. I found that kids that went straight from Logo to Pascal did 100% better than the kids who were taught BASIC -- the BASIC kids had so many stupid ideals drilled into them that they were almost incapable of programming. But straight from Logo to Pascal was easy -- though the kids did complain about having to wait for things to compile.
- Logo turtles -- the ones that were little robots that ran around on the floor, with a pen and an optical sensor. Those were fun...
Man, that was fun. I've got to get back into teaching.
Enable 3D printed prosthetics!