Ask HN: My 12 year old nephew wants to make a game, how do I help him?
65 comments
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.
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).
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.
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 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.
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
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
Have a look at the showcase to see what kind of games have been made with it: http://www.yoyogames.com/showcase
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
Have a look at the showcase to see what kind of games have been made with it: http://www.yoyogames.com/showcase
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:)
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).
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.
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/
Once the passion is developed, someone will have a lot of room to grow.
http://anwell.me/articles/unity3d-flappy-bird/
Once the passion is developed, someone will have a lot of room to grow.
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.
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.
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!
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!
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.
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.
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.
Children should be listened to. Help him program a computer game, that's what he asked.
> 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.
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.
Reminds me of DnD. I wonder if there is any correlation between DMs and game designers.
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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/
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.
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/
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.
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.
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!
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!
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.
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/) 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.
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/) 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.
You can try following software from MIT
Create stories, games, and animations Share with others around the world
https://scratch.mit.edu/
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.
Will take a look when I have access to a winbox.
There is a desktop version you can download (as concerns the flash).
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...
Have fun! :)
Have fun! :)
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.
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
Plus, it compiles natively to many platforms: iOS (iPhone/iPad), Android, Flash, Windows, Mac, Linux
How about code.org? http://studio.code.org
Microsoft TouchDevelop was posted here on HN recently:
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.
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.
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.
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.
Game Maker Studio is popular.
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.
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.
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.
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.
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
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.
http://gamesalad.com
Might want to start with a general intro to computer programming though like Scratch, which has been mentioned here.
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.
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
I was immediately reminded of this old classic
http://thedailywtf.com/articles/Could-You-Explain-Programmin...
http://thedailywtf.com/articles/Could-You-Explain-Programmin...
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/
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://scratch.mit.edu/
https://www.gethopscotch.com/ (ipad)
http://www.toyengineapp.com/ (ipad)
http://twolivesleft.com/Codea/ (ipad)
http://www.stencyl.com/
a little more advanced (text instead of graphical programming), works in browser to make HTML5 games:
http://www.playmycode.com/
windows only:
http://research.microsoft.com/en-us/projects/kodu/
commercial:
http://www.learntomod.com/ (mod minecraft with visual programming)
http://gamesalad.com/
http://www.yoyogames.com/studio
https://www.scirra.com/construct2
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://scratch.mit.edu/
https://www.gethopscotch.com/ (ipad)
http://www.toyengineapp.com/ (ipad)
http://twolivesleft.com/Codea/ (ipad)
http://www.stencyl.com/
a little more advanced (text instead of graphical programming), works in browser to make HTML5 games:
http://www.playmycode.com/
windows only:
http://research.microsoft.com/en-us/projects/kodu/
commercial:
http://www.learntomod.com/ (mod minecraft with visual programming)
http://gamesalad.com/
http://www.yoyogames.com/studio
https://www.scirra.com/construct2
Teach him about SOA and MVC, I hear 12year olds go nuts for that stuff.
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.
Shameless plug: http://flowlab.io
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.
> "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.
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.
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.
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 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.
I'll plug my friend's book here: http://www.gamkedo.com/kit/
It's in JS/canvas, so tools that you should be familiar with.
It's in JS/canvas, so tools that you should be familiar with.
This might be a little too simple but check out Blockly
https://blockly-games.appspot.com/
https://blockly-games.appspot.com/
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.
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.
He could try darkBasic Pro for a start. That's how I got into programming.
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
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.