
Ask HN: My 12 year old nephew wants to make a game, how do I help him? - andersthue
My 12 year old nephew has shown real interest in learning how to create computer games.<p>How do I help him the best, is there any drag and drop free tools or games about building games?<p>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&#x2F;skype.<p>Any ideas and pointers will be appriciated!<p>PS. English is a second language to both of us, he is ok at understanding but not too complex.
======
veddox
Definitely Scratch ([https://scratch.mit.edu/](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.

~~~
542458
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).

~~~
hathawsh
[http://learntomod.com](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.

------
decodv
I recommend you try Phaser - [https://phaser.io/](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/](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.

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

------
Mithaldu
Speaking from my own experience, give him not a programming language, but
either a game that includes a programming language, or a tool for making games
that includes programming.

Game Maker is the biggest player in that market and used for tons of tiny one-
off indie games, as well as lots of commercially successful and great games:

[http://www.yoyogames.com/studio](http://www.yoyogames.com/studio)

Have a look at the showcase to see what kind of games have been made with it:
[http://www.yoyogames.com/showcase](http://www.yoyogames.com/showcase)

~~~
andersthue
Looks interesting and more challenging than scratch- I remember a drag and
drop game tool on the c64 that never really caught me, but I think my nephew
needs something that quickly gives him results- then he can learn to tame the
instant gratification monkey later:)

~~~
amarsahinovic
I also recommend Game Maker, it's an excellent tool for what you need, you can
make fully functional games quickly with only drag and drop, and when you
learn enough you can dive into the code and do much more (if needed).

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

~~~
melling
I agree Unity is probably the best tool. It's high-level and entertaining.
Plus there are hundreds of tutorials.

[http://anwell.me/articles/unity3d-flappy-
bird/](http://anwell.me/articles/unity3d-flappy-bird/)

Once the passion is developed, someone will have a lot of room to grow.

------
brudgers
_is there any drag and drop free tools or games about building games?_

The first order help a young person needs is being taken seriously and
encouragement in their process of discovery. The important conversation isn't
"Use this" in it's strong or weak forms. It's the default StackOverflow
comment: "What code have you tried? What error are you getting?" (perhaps in a
weaker form, perhaps not, depending on the child).

Let the child own the process and understand that the most likely outcome
statistically is that the actual process of creating a computer game will turn
out to be unattractive as it is to a first approximation for everyone. Making
games is hard for highly intelligent adults - much harder than writing a Rails
app.

The mistake that I find easy to make with my own child is an unwillingness to
let their interest unfold in its own time as part of the growing process.
Adult interests and behaviors and skills take years to develop. The twelve
year old boy will be radically different intellectually in two years...or even
one. It takes patience and a long-term view and an understanding that many of
a child's interests are passing. Some come back, most don't, and what tends to
come back are interests that they find themselves sharing with friends. To put
it another way, your nephew's English comprehension could be orders of
magnitude better in five years. His understanding of mathematics most
certainly will.

For concrete advice:

Provide high quality resources - the sort of durable tools and books and
websites that one would give to an adult. The interest that wanes in a month
at twelve may be rekindled for a year at thirteen and arise from hibernation
to become a career choice at twenty four...and there sitting on the bookshelf
is a weaker form of _The Art of Computer Programming_ for games.

Good luck.

~~~
andersthue
Thanks for the feedback.

It is not the first time he has shown interest in doing something with his
computer more than playing.

I understand the importance of him being motivated and doing something he can
share with his friend, I will only act as a helping hand when he asks for
help, it is not my project (I got my own kid who is my project;)

But thanks for the reminder!

------
pvaldes
Close the computer.

Pick a piece of paper and a pencil and design a game with him. Create an
history, define likable characters, drawn a map, set the rules, create ways to
gain/loose points, add a subplot that is interesting, improve all with some
plot twists and traps and maybe a small love story. Give him a book about
Cornelis Escher. Ask him to draw you a city with some perspective, a forest, a
yak in an ice fortress, a cliff where some parts of the game occur.

Bassically learn with him the rules to the good history tellers, and make the
route enjoyable and funny for both.

Then, and only then, open the computer.

When I was young and feel bored I created perfectly playable videogames in a
graph paper with space ships burning, crashing, hidding, and smashing each
other. You only need a pencil and a set of rules to win/loose and it was easy
to hide from the teacher if necessary.

~~~
hoodoof
This is such an idealised answer and just not right, don't go and sing a song
about the true joy of a story well-told, effective gameplay mechanics, rules
systems that work and solid plan-first software engineering principles and
then finish with a lecture about how "in my we didn't need those new fangled
computers, we had a world of fantasy with a pencil and paper, just as portable
as your new-fangled iPad!".

Children should be listened to. Help him program a computer game, that's what
he asked.

~~~
pvaldes
> Help him program a computer game, that's what he asked.

And this is what i'm doing, although of course different people can have
different methods to achieve something. Nothing wrong with this.

If this boy just can't learn how to use a simple pencil, the problem is that
he is sold about the graphic design of their game. Missing most of the fun
that a game provides, like exploration or inmersion. He will be tempted to
take shortcuts (falling in common pitfalls like using limited software or
ending with a game that is not going to nowhere and is not fun to play). An
example: Why bother to design a stupid column when you can just use the gif
from another game?. The flappy bird's creator would tell us and interesting
answer to this question probably.

------
Jugurtha
This is really cool. I'd say drop the drag and drop; he's 12, not 4.

I started programming in BASIC around 9 and C at 14, didn't speak a word of
English, and didn't have internet or access to books.

How I worked was: Suppose I wanted to print something, I'd look up the verb in
a dictionary for "imprimer" and would find "print", then would look that up in
the help. Then would copy the example code given and run it, and then I'd
change stuff and see how it'd affect the functionning of code (errors? go back
to dictionary, etc). And based on the consequences of my actions, I'd deduce
the role of what I changed.

I wrote a program that gave you information on a country you'd enter
(population, area, capital city).. You had to type the country in capital
letters because I didn't know how to do it otherwise.

He's 12 years old and he's got the internet and you! It's also a great time to
improve his English.

The biggest favor you'd do for him, whether you choose a graphical or another
approach, is to encourage him and make him _stick_ and never drop the ball.
For me, the biggest mistake was going on and off. If I had kept at it, I'd be
at least moderately good instead of sucking. You can also show him the work
you are doing and make him understand that it's really not _that_ hard to get
started and hopefully, at some point, he'll understand the power of this: I
can make this computer do mostly anything I want! And he'll be hooked.

TL;DR: Whatever you do, make the priority for him to stick and understand the
power at his fingertips.

------
loumf
I am working with a 14 y/o who took some simple python class beforehand (so
knew basic stuff functions, conditionals, loops, but no OOP).

But -- he really wanted to make "real games" with a "real programming
language".

So, after asking some game dev friends, I went with FlatRedBall (it's a little
bit of a GUI builder with C# code-gen).

Look at this pong tutorial to get the basics:
[https://www.youtube.com/watch?v=KmHmxlljA5c](https://www.youtube.com/watch?v=KmHmxlljA5c)

It's open-source and a bit janky at times, but he's doing amazing things with
it.

My process was: 1\. Do a tutorial we find on the net 2\. Think of a feature to
add, add it 3\. Keep going until we get bored with the game 4\. Find another
tutorial, goto 1

We did pong, flappy-bird, RockBlaster (like asteroids), and now he is doing an
original -- it's a 2-D dungeon, rogue-like. We meet an hour a week, and then
he does an hour or two a night on his own.

If he needs to know something about C#, we take a break and learn that in a
console app.

------
ddebernardy
If you've an iPad, look into [http://codea.io](http://codea.io)

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

~~~
andersthue
He has an ipad so this might be better than something requiring him to boot
his pc.

------
deepkanwal
We built an iPad app called Toy Engine
([http://www.toyengineapp.com](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.

------
kpozin
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/](http://www.clickteam.com/)

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

------
mastercoms
A lot of people are recommending Scratch, but I am going to recommend
Construct 2. It is an awesome engine for making HTML5 games. It is visual
coding so your nephew will have no problem with it.
[https://www.scirra.com/](https://www.scirra.com/)

Of course, listen to what pvaldes said also. Designing a game first will be
better.

Also, I would recommend Teamviewer for you guys to use so he can share his
screen and you can interact with it.

------
robterrell
One of my kids started with Codea on an iPad 1 (and it still runs on that
ancient hardware today!) and is quite pleased to be able to tell people she
can code in Lua. Overall, it's extremely well done. However, I think it gets
hard to work through high-level logic -- you start off writing code in the
draw() function, doing things once per frame draw... getting to a more
abstracted level has been difficult in Codea.

However, her school does some Scratch every so often, and she's taken to that
too. Scratch exposes lots of levels of abstraction, and the visual editor
approach makes it easy to experiment with different ways of doing things.
She's done several school projects as Scratch games. (Which, to me, is way
better than gluing crap to pasteboard.)

I've tried to get her started in Unity -- I teach a Unity class to new hires
at work -- but it's been uphill. Too abstract, too conceptual, too much
surface area. And C# has too much syntax that gets in her way.

Lua is a better language for her. But Scratch is even better: no syntax, just
ideas. Also, Scratch has a lot of localizations. So, give Scratch a try!

~~~
andersthue
Thanks, lot of good advice and takeaways - I think the low abstraction and
drag/drop is a good teaser, also some of it is in Danish, that will help the
initial learning curve being small.

------
spectre256
Since the other commenters have mentioned a ton of great tools, programming
languages, SDKs, and the like, I'll make some suggestions of a different type.

You said you'll be helping your nephew, but consider this as well: find a
local group geared towards helping kids learn to program. For example, Coder
Dojo([https://coderdojo.com/](https://coderdojo.com/)) has hundreds of
locations all over the world. Your nephew doesn't need to be accompanied by a
tech-savvy guardian or even bring a computer, usually such groups supply
coaches and computers.

They are a ton of fun for all involved, and it's much, MUCH easier to learn
something challenging like programming with a coach or even other students.

------
SkyRocknRoll
You can try following software from MIT

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

[https://scratch.mit.edu/](https://scratch.mit.edu/)

~~~
andersthue
Scratch looks interesting, although it requires flash.

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

~~~
veddox
There is a desktop version you can download (as concerns the flash).

------
xchip
Wow lucky you your nephew is interested in learning. Go for pacman, but before
make sure he plays a bit so he gets kind of addicted to it. Then to spark his
curiosity ask him questions about how he thinks it works, something like this:
[http://www.exploringbinary.com/how-i-taught-third-graders-
bi...](http://www.exploringbinary.com/how-i-taught-third-graders-binary-
numbers/)

Have fun! :)

------
drallison
On second thought, I'd suggest that you teach (that is, mentor) some very
simple number games and have him program them in Python or BASIC. If you can
find it, a copy of _What to do after you hit return: PCC 's first book of
computer games_ or _101 Basic Games_ would do for a start. These games are
simple, fun, and don't get cluttered up with issues of presentation versus
computation logic.

------
k_
Stencyl ([http://www.stencyl.com/](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

------
mindrun
How about code.org? [http://studio.code.org](http://studio.code.org)

------
nogridbag
Microsoft TouchDevelop was posted here on HN recently:

[https://news.ycombinator.com/item?id=9545019](https://news.ycombinator.com/item?id=9545019)

I tried out one of the examples to make a Flappy Bird clone in 5 minutes -
pretty neat.

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

------
pjc50
Game Maker Studio is popular.

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

------
andersthue
Thank you all for great pointers on what and how I best can help my nephew.

I have offered him my assistance and I hope he will take it, I will try to
limit what i do and maximize the learning of how it is ok to fail and that it
takes a lot of time to learn new stuff.

Hopefully he will be able to build something that will make him proud.

------
bhashkarsharma
You can check out MIT App Inventor. It uses scratch. Here's an example of a
game: [http://appinventor.mit.edu/explore/ai2/space-
invaders.html](http://appinventor.mit.edu/explore/ai2/space-invaders.html)

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

[http://gamesalad.com](http://gamesalad.com)

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

------
fredophile
Take a look at Roblox. It's aimed specifically at kids. It takes care of most
of the hard stuff like physics, networking and rendering so you can focus on
gameplay. It uses lua for the programming language so it's pretty easy to find
learning resources online.

------
paublyrne
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](https://coronalabs.com)

------
heydanreeves
[http://www.sortingh.at/](http://www.sortingh.at/)
[http://www.gamesareforeveryone.com/](http://www.gamesareforeveryone.com/)

------
hobo_mark
I was immediately reminded of this old classic

[http://thedailywtf.com/articles/Could-You-Explain-
Programmin...](http://thedailywtf.com/articles/Could-You-Explain-Programming-
Please)

------
edtechdev
I'd recommend starting at code.org to learn the basics of programming (loops,
etc.) and learn how to make basic games like flappy bird:

[http://studio.code.org/](http://studio.code.org/)

Then depending on his interests and abilities, there are various beginner-
friendly tools for making games below, from easier to harder and free to
commercial.

I would talk with him first about what kind of game is he interested in doing.
Something like flappy bird or an arcade game, or modding minecraft, etc. If
you make it about learning to program for programming's sake, he may get tired
of it quickly and not be interested in programming again for a long time, if
ever.

free:

[https://www.tynker.com/](https://www.tynker.com/)

[https://scratch.mit.edu/](https://scratch.mit.edu/)

[https://www.gethopscotch.com/](https://www.gethopscotch.com/) (ipad)

[http://www.toyengineapp.com/](http://www.toyengineapp.com/) (ipad)

[http://twolivesleft.com/Codea/](http://twolivesleft.com/Codea/) (ipad)

[http://www.stencyl.com/](http://www.stencyl.com/)

a little more advanced (text instead of graphical programming), works in
browser to make HTML5 games:

[http://www.playmycode.com/](http://www.playmycode.com/)

windows only:

[http://research.microsoft.com/en-
us/projects/kodu/](http://research.microsoft.com/en-us/projects/kodu/)

commercial:

[http://www.learntomod.com/](http://www.learntomod.com/) (mod minecraft with
visual programming)

[http://gamesalad.com/](http://gamesalad.com/)

[http://www.yoyogames.com/studio](http://www.yoyogames.com/studio)

[https://www.scirra.com/construct2](https://www.scirra.com/construct2)

------
onedev
Teach him about SOA and MVC, I hear 12year olds go nuts for that stuff.

------
vectorEQ
give him udk, that's a free tool where you can learn what an engine is, and do
a whole lot of the work flow of develping a game in one environment / tool
set. The documentation and community is also very helpful. love it! :) I would
reccomend this before programming their own engine, to learn what kind of
things are involved in making a game. You can make simple 2d games, or full on
3d games.

------
ken_railey
Shameless plug: [http://flowlab.io](http://flowlab.io)

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

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

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

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

------
doctorpangloss
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](http://www.minecraft101.net/redstone/redstone-basics.html)). You
can make whole computers with it
([https://www.youtube.com/watch?v=aQqWorbrAaY](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](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...](http://cdn.cs50.net/2015/spring/psets/0/pset0/pset0.html#itching_to_program)).
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.

------
jowiar
I'll plug my friend's book here:
[http://www.gamkedo.com/kit/](http://www.gamkedo.com/kit/)

It's in JS/canvas, so tools that you should be familiar with.

------
fallinghawks
This might be a little too simple but check out Blockly

[https://blockly-games.appspot.com/](https://blockly-games.appspot.com/)

------
hluska
Is he a Minecraft fan?? If so, Minecraft has a very active modding community
and that might be a great place to start.

~~~
andersthue
He has played a lot of minecraft but has not shown interest in modding.

~~~
joppe-a
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...](https://www.youtube.com/watch?v=wrUHUhfCY5A&list=PLah_Dh8PIqiP41PtfGyeWsiS8u6l0F8JI)
(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.

------
frenchHipstaz
He could try darkBasic Pro for a start. That's how I got into programming.

------
euroclydon
load81 by the author or Redis. It does not get any more elegant than this!

[https://github.com/antirez/load81](https://github.com/antirez/load81)

