Slashdot Mirror


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?

19 of 134 comments (clear)

  1. Assembly. by ianashley · · Score: 2, Funny

    Assembly. Yup. Definitely Assembly.

    1. Re:Assembly. by Anonymous Coward · · Score: 2, Funny

      For your next language, I would suggest English.

    2. Re:Assembly. by laird · · Score: 4, Interesting

      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.

  2. Control expectations by flabbergast · · Score: 5, Insightful

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

  3. basic computer programming by innocent_white_lamb · · Score: 3, Insightful

    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!
    1. Re:basic computer programming by monopole · · Score: 2, Interesting

      I too learned a great deal of programming from "100 BASIC Computer Games", and it took many years to unlearn the bad practices. While the code was facinating 20 years ago, at that point BASIC was a viable language and we worked with 1 MHz 16KB machines. Frankly, the majority of the games were hideous even back then. When he sees the structure and gets the logical flow of that completely unstructured spagetti code he will renounce programming for life!
      I strongly belive that teaching children BASIC as a first language should be classified as "contributing to the delinquency of a minor", please use a modern language such as python or java

  4. Encourage his interest! by L.+VeGas · · Score: 2, Funny

    It is very important to use the carrot instead of the stick approach. First, get him the most advanced workstation you can afford as well as a 21" monitor minimum. Make sure he takes plenty of breaks, and when he does well, reward him with something nice like a trip to the zoo or a soothing massage. Above all, have fun TOGETHER!

    ------
    Michael Jackson

  5. BYOND by Van+Halen · · Score: 3, Interesting
    Disclaimer: I'm partial because I'm involved in this project. Take that for what it's worth, but I really do believe in it.

    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!

  6. Interactive Fiction by Charles+Dart · · Score: 2, Informative

    I was just looking into text only games [Interactive Fiction] recently for the first time in a looooong time. I found some fun ones that were done in the TADS language which is apparently made just for that. The site I downloaded the runtime environment from also had a compiler. Check out tads.org For some background. I think an IF game is a perfect starter for a kid.

  7. Flash or game level editors. by larry+bagina · · Score: 3, Interesting
    Pick up starcraft or NWN or some other game that allows you to build your own levels. They usually have event triggers and a mini scripting language, so you can focus on how that logic works and not have to deal with artwork and music.

    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.

  8. Squeak, squeak! by MountainLogic · · Score: 2, Interesting

    Consider the Squeak environment. It's an open, highly-portable Smalltalk-80 implementation. It is really friendly place for kids to get started and smalltalk is a good language for kids to start with.

  9. On a related note by stoborrobots · · Score: 3, Informative
    Some links which may be useful...
    • GameDev, and in particular the How do I make games? and Game Programmer's Beginners Guide
    • for the hardcore out there, a Win32 Assembly Tetris Clone how-to guide, with full source code and commentary...
    • A programming language called Euphoria which is so unlike "real" programming languages, that it might just be easy enough for a kid to pick up and learn in a couple of days... (I got into it a few years ago, well after I learnt to program)
    • XBasic - a decent BASIC for graphics support... (Win32 graphics... I got it because it was a step up from QuickBASIC!) There's a linux version, and it's all GPL these days...

    That's all I can find in a quick scan of my bookmarks from way back when...

  10. Learn Java or buy a C=64 by John+Harrison · · Score: 2, Interesting
    I taught myself to program the Commodore 64 when I was 8 using the manual that came with it. My younger brother and I would spend hours making games and little demos in Basic. I didn't know at the time what a demo was though.

    A few years later my dad got us a copy of Kids and the C=64 but the games in that didn't seem as fun as the ones we were making, which were more graphical.

    Learning by making games is the way to go. Kids can learn some algebra concepts by learning the simple graphics libraries and learning to do simple animations.

    A few years ago a 12 year old sent me an email and asked if I would help him make a video game. He had seen one of my others games on the web and wanted to learn. I thought it was cool that he dared to ask, so I took him up on it. We decided to code in Java since it is freely available and you can put your work up on a website for others to see. The result is at http://www.angelfire.com/games4/anirak/. I did most of the programming and he did the design of the game and the graphics. We went over the code using instant messenger he understood it and would modify it to try out different things. It was a lot of fun for him.

    After that I started writing a pacman type tutorial on the same site, but only recently have I made any progress on it. Unfortunately the stuff I have done recently is pretty complex. It is probably easier to stick to shot-em-ups that don't involve complex boards or AI when using the game as a learning tool for children.

    If you want to use any of the code on those sites for educational purposes feel free to do so.

  11. Use Alice by EnglishTim · · Score: 2

    Alice is a free simple 3d system based around Python - I can highly recommend it, my two ten-year-olds and even my six-year-old have been playing on it.

    It's developed by Carnegie Mellon University, and at it's simplest is directed towards telling interactive stories. It's sufficiently flexible to allow a wide range of applications, however. The interface is intuitive, and it has a large library of pre-built objects to get started with.

  12. Re:LogoMotion and CodeRally by mark99 · · Score: 2, Interesting

    Err, that would be LogoMation

    http://www.magicsquare.com/LM2/

    and CodeRally is at:

    http://www.alphaworks.ibm.com/tech/coderally

    BTW, he mastered LogoMation quickly and loved the colored patterns he could product.

  13. All these nerds want the kid to end up like us? by Glonoinha · · Score: 2, Interesting

    Lets see here - he is already gifted in math and computers, just like most of us (are / were at that age). Lets assume the kid has just a touch of autism (which is good for computer guys) and already knows his way around a keyboard and a development environment.

    Programming isn't about syntax, and it isn't about variable scope or recursion or data structures or loops or any of that crap - it is about expressing, simulating, or recreating real world ideas in a digital format. The biggest problem most programs have isn't that the programmer didn't use the correct syntax of some computer language - it is that he didn't understand the business problems or real world ideas that he was attempting to address digitally in the first place, or he wasn't able to bridge the gap between the real world and the digital recreation of those ideas.

    He wants to program computer games, teach him project lifecycle development :
    1. Imagine
    2. Define
    3. Architect
    4. Develop
    5. Deliver

    The imagine phase doesn't happen on a computer, it happens in your brain. Add a box of crayons and some paper, have him sketch out a storyboard to help him envision the flow of the game. The difference between good usable software and crap that nobody likes happens right here.

    The define phase doesn't happen in a programming language, it happens in English in Word or OO - or possibly even verbally, have him define it to you so you can help him shape it. Define all the different parts of the program, what all he is going to do. The difference between bloatware and good focused software happens right here.

    Architect phase happens with Legos or Crayons - or a whiteboard with colored (easy erase) markers. Could be simple, but doesn't have to be. The difference between web sites that can / cannot handle a slashdotting happens here.

    Develop - now he starts coding. Look at what he has designed, how he architected and THEN pick a platform, language. If he wants to code a stock market game then Logo isn't your language. If he wants to make a first person shooter then GW-Basic isn't going to cut it, and ANSI C probably isn't either. Tip here : pick a language that you know so when he needs help you can help him. If he got the first three right, this one pretty much has to succeed.

    Deliver - could be deploying it to your ISP if it is a web based game, could be burning it to a CD if it isn't.

    Software development doesn't start with 'what language do I want to use?' It starts with 'what EXACTLY do I want to accomplish?' If you fire up VB.NET in an IDE and plunk him down at the keyboard while his goal is still a simple 'make a game' then the poor kid is fuxored. That works if all you want to do is teach him syntax and bad programming habits. If you want him to be good - then show him how the development process starts not with his hands on a keyboard, but with a box of crayons or a whiteboard.

    --
    Glonoinha the MebiByte Slayer
  14. try:an almost identical 'ask slashdot' from 5/2003 by avi33 · · Score: 2, Informative

    Try this post:

    "I have been asked to teach a week-long class on Computer Game Design for a small group of computer literate kids, around 9-13 years old. My plan is to have them create a simple game, while exposing them to aspects of story design, artwork, animation, and simple programming. To this end, I'm looking for a 'game construction kit' that is simple enough that they can have a working game by the end of the week with some guidance. Anyone remember the 'Arcade Game Construction Kit' on the Commodore 64? Adventure Game Studio looks good, but it may be too complex. The genre is flexible, but it does need to generate a distributable Win32 binary that they can take home. Are there any Windows packages, public domain or otherwise, that can do this, especially any designed for kids?"

    god i need a fscking life...i've tearned into jeeves.

  15. Re:Stagecast (was coca) by bill_mcgonigle · · Score: 2, Informative

    Just to clarify for those doing searches, it's Cocoa (just like the OSX/NS framework).

    And mods, this is the direct answer to the Ask Slashdot question, the tool built for expressly this purpose. A friend taught his 8-year old daughter how to use it and she was absolutely delighted.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  16. Depends on what the kid wants by ReyTFox · · Score: 2, Informative

    A lot of the people here are advocating the hardcore, learn-to-program approach.

    But not everyone that wants to make games wants to learn programming, and this was a source of some frustration in my own younger years, because although I had tools available, I saw what I was going on, and I had plenty of ideas, my drive to actually create code was almost zero. So I let things sit quite a long time, and was almost entirely dependent on finding tools that minimized the amount of structural work needed(graphics routines, objects, tile engines) and maximized the amount of control I had over the critical segments of gameplay, like collisions and shooting. The best free one around like that today is Mark Overmars' Game Maker. It allows you to do some very complex things with a C-subset scripting language, while at the same time providing a strong IDE and toolset. It's unfortunately tied to DirectX and Win32, though, and it's also not an opensourced project(for a $15 registration fee you get a couple more options), but the free version is by no means crippleware, and for what it does it's very good. Also the forums are quite funny because the majority of the posters are kids playing at game development, and not even really having the smarts to do well with such a great tool.

    Now I'm a freshman in college and plan to get at least a BA in CS, not because I like it, but because it's going to keep pushing me to advance my skills until I'm well capable of making games of all complexities. (I plan to go into shareware/independent gaming, so learning all skills equally well is a Good Idea. Also a good recipe for using up all my spare time.)

    I've moved on from Game Maker to Pygame since I started college; my current greatest accomplishment with it is doing a scrolling tile engine(with all sizes, screen border etc. adjustable); it took three times for my code to be really anything close to clean, and after the second time I decided OOP is not a magic bullet for anything. My next project is to add a modular framework that includes the tile engine; using this framework, users will be able to make maps that play differently, because each map will load some Python code and objects in addition to settings for the tiles. It's kind of confusing me, which the tile engine did too, the first time, but I think that if I keep at it I'll get somewhere, and from there it'll just snowball until all of the sudden the game I'm planning is done hehe ;)