Ask HN: My 12 year old nephew wants to make a game, how do I help him?

38 points by andersthue ↗ HN
My 12 year old nephew has shown real interest in learning how to create computer games.

How do I help him the best, is there any drag and drop free tools or games about building games?

I am a web programme and is willing to help him, but we do not live nearby so I have to be able to help him mostly by email/skype.

Any ideas and pointers will be appriciated!

PS. English is a second language to both of us, he is ok at understanding but not too complex.

65 comments

[ 3.6 ms ] story [ 66.4 ms ] thread
You can try following software from MIT

Create stories, games, and animations Share with others around the world

https://scratch.mit.edu/

Scratch looks interesting, although it requires flash.

Will take a look when I have access to a winbox.

There is a desktop version you can download (as concerns the flash).
I got my start in programming around the same age using tools from Clickteam [1]: Klik & Play, The Games Factory, and eventually progressing to Multimedia Fusion (now Clickteam Fusion). These are all drag-and-drop tools, with graphical level editors, event loop editors, etc.

If he doesn't mind using a Windows machine for development (the actual outputs are cross-platform), I think it's a great place to start before moving on to programming languages.

[1] http://www.clickteam.com/

Another vote for Clickteam Fusion from me. I started writing games when I was eleven, with the predecessor The Games Factory (1.2) and that's what got me started down the road of software engineering.
I like the Invent With Python series by Al Sweigart, they are CC licensed and they are a nice friendly introduction to programming with Python (one of the books deals with text games, another with Pygame). I'm not aware of translations into other languages, but they are written at a level for children to understand so they may be worth a look.

There are also languages like Scratch and various "no programming required" game development environments like Construct2. They might be good places to start, but they can also be crutches that prevent progress into more powerful tools.

edit: Is there some sort of downvote brigading going on here? I see a ton of helpful posts in gray.

What about looking at Corona, if he has a mobile device or tablet to test on. It is simple to make simple things quickly, the physics libraries aren't complex.

https://coronalabs.com

What about Unity? There are plenty of example projects and easy to follow tutorials that will allow him to make something up and running that's impressive really quickly. Wouldn't expect him to make something from scratch at that age, but he could certainly amend from an existing concept. It won't necessarily help with teaching programming but it's a great start. It's what we do for work experience students and they love it.
Game Maker Studio is popular.
Game Maker is the best way to go at that age. I used it when I was younger and the drag and drop functionality was great. As I grew older and started learning to code, the editor let me easily start writing scripts and such to give me more control over the gameplay
If you've an iPad, look into http://codea.io

It's maintained by an indie game studio called Two Lives Left (http://twolivesleft.com), which produced the excellent Cargo-Bot game -- and for that matter, let him get a feel of programming with the latter.

He has an ipad so this might be better than something requiring him to boot his pc.
Definitely Scratch (https://scratch.mit.edu/), I would say.

It's a drag-and-drop, graphical programming environment designed specifically for kids of that age group. It teaches them about conditionals, iteration, a bit of object-orientation, and makes it very easy to build relatively sophisticated games/animations within a pretty short amount of time.

I've had good experiences with it with kids of that age group, many really enjoy it.

I think that this is the best choice. A lot of people are recommending "real" (albeit simpler) game making tools, but I think that those would be a mistake. At 12 his biggest obstacle is going to be becoming bored, not the skill ceiling of the tool. Scratch provides that instant visual output, skips the frustration of learning syntax, and has a large online library of other's creations for inspiration and learning.

Side though: scratch style programming inside minecraft has the potential to be awesome educationally. Somebody steal this idea (unless it already exists).

http://learntomod.com

My kids and I have tried it and we like it a lot. Lots of tutorials and ideas. Easily worth more than $30/year.

I wonder however about the opposite effect. I think it was Bertrand Russell who said that boredom is an essential part of doing good work and learning to accept it an important part of getting good at something. If we make things too easy, flashy and fun for kids there is, I fear, the likelihood of setting wrong expectations, which will in short order sabotage the child's interest and effort.
Scratch is a good choice. My 10 year-old granddaughter was able to create her own game on her own. One word of warning--the concurrency model is not well explained (or implemented) and so games can have race conditions that are difficult to debug.
I recommend you try Phaser - https://phaser.io/ - a JS library for EASILY creating HTML5 games. Which is gratifying. And encouraging.

I had never heard of Phaser until seven days ago. Since then, I have created a full "short-game" (avg. game time is 1-3 minutes) with all of the basic elements: a loader, start menu, object collisions and overlaps, animations, sounds, timers, scoring, etc. Nothing to sneeze at, and Phaser made it super simple.

To go along with Phaser there is the MightyEditor - http://mightyfingers.com/ - which is a web based open source HTML5 game editor, based on Phaser.io game engine. Essentially, it's a WYSIWYG drag-n-drop editor that generates the Phaser code in the background. I haven't used MightyEditor as I'm more of a coder, but it exists for you try.

Now, you can certainly produce more powerful games with other approaches/languages, but I doubt any will let you start developing a game right out of the box. Likely, you'll spend all of your time trying to learn the language ... that you never get around to actually making a game. With Phaser, you just start making your game.

I started learning in QBASIC at around that age (my highschool also taught BASIC on Apple IIe machines). There are modern (i.e. 64 bit) versions of it but I can't vouch for them. If you can get the original version up and running, it is a great intro to programming.
Is he a Minecraft fan?? If so, Minecraft has a very active modding community and that might be a great place to start.
He has played a lot of minecraft but has not shown interest in modding.
There is a MOD for minecraft called 'ComputerCraft' it has a LUA based programming environment with a basic OS (filesystem, console) and various API (including a HTTP API). You can use it in game to control and interact with various things.

To see it in action: https://www.youtube.com/watch?v=wrUHUhfCY5A&list=PLah_Dh8PIq... (the video's author, Direwolf20, had a good MOD pack including ComputerCraft).

Of course it's not directly creating a game, but perhaps a fun way to get introduced to programming.

I know non-technical people that have used GameSalad to create games that were even published on the AppStore.

http://gamesalad.com

Might want to start with a general intro to computer programming though like Scratch, which has been mentioned here.

Many of the games he might already be familiar with have sandbox, modding or programming-like environments that require no documentation to get started.

If he plays Minecraft, he should definitely study Redstone (http://www.minecraft101.net/redstone/redstone-basics.html). You can make whole computers with it (https://www.youtube.com/watch?v=aQqWorbrAaY). It's what I recommend to my friends who are looking to get their children into programming or making games. Don't underestimate how much more compelling Minecraft is than literally everything else out there.

Starcraft II is free, and its map editor is excellent for nearly every kind of top-down game. It's a very drag-and-drop sort of interface that doesn't require any programming. You can probably build the widest variety of games with it.

Team Fortress 2, which is also free, comes with the Hammer Editor. It's a little more idiosyncratic than Starcraft II's map editor, but also a great way to just drop things in and play. It's ideal for first person shooters.

A bunch of games have really fascinating programming-like experiences. DOTA 2 (free) has its Workshop Tools; Cities: Skylines (paid) has an Asset Builder and programmed mods. A lot of these games are a bit above 12 years old though, so it might be a little intimidating.

I think for most kids, they're more interested in Garry's Mod (http://www.garrysmod.com) and Little Big Planet—sandbox environments. You just do stuff and things happen, and it's all very pseudo-physical.

I've seen some other recommendations on here. Generally most kids aren't equipped with the amount of patience these actual programming environments require. If you insist on programming, then Scratch is the best of the options. Check out the first assignment in Harvard's CS50 class here (http://cdn.cs50.net/2015/spring/psets/0/pset0/pset0.html#itc...). To put in perspective, this is regarded as one of the easiest to learn and most polished programming environments, and students at University level (almost twice your son's age!) are given 2 weeks to make something. So as an introduction, this is still extremely hard.

Conversely, things like Unity3D are going to be super crazy complicated, to be completely honest. It's disheartening to read any documentation. Just orbiting the camera in the viewport is a skill. Plus, lots of kids like to build multiplayer experiences, which are all possible with the map-making and modding tools above, but not possible with any of the actual coding frameworks written below.

If you're a web programmer, then the easiest way is to do an HTML5/Javascript games. That's the closest to what you already know.

Get him some books on html5 and javascript, or good web-based resources.

Make a simple game with him, like minesweeper or Tetris.

Also, if you make an HTML5/Javascript game, you can use something like PhoneGap/Cordova to compile it to a mobile app.

We built an iPad app called Toy Engine (http://www.toyengineapp.com) just for this! It's free and it uses visual scripting.

You make your games using a drag-and-drop level editor (2d only) and then double tap an item to add a script to it. You can also share your levels and download levels made by other users.

Stencyl (http://www.stencyl.com/) could be a great tool : it's easy at first to do simple games without knowing anything about code, and you can progressively learn code, starting with basic logic.

Plus, it compiles natively to many platforms: iOS (iPhone/iPad), Android, Flash, Windows, Mac, Linux

I think Java is a nice teaching tool. It has a good OO design and you can't break anything with it. No worrying about memory, etc. The only real drawback is the verbosity and having to "just do" things at the beginning (such as ignoring just what public static void... means).
Why do you prefer a compiled language over a scripting language? I learned Java in high school and struggled with all of those

> "just do" things

e.g. `String in = new BufferedReader(new InputStreamReader(System.in)))` in Java vs `in = input()` in Python.

I think it's important for beginners to understand why they're writing the code they are, and how the different parts of their code fit together. In Java your "main" function is part of a class; I have no idea how to explain that to a younger student.

I am really interested in teaching programming, so I'd like to hear your thoughts.

If I am honest it is just that I prefer compiled languages. I like Java because it is hard to do stupid things in it but still compiles down to something I can hand over to other people without them being able to break it by opening it in notepad accidentally.

Obviously I see the benefit of simplifying things like we see in Python, Ruby, etc.

A lot of people don't like Java because of how strictly OO it is.