Ask HN: Platform for 11 year old to create video games?
My 11 year old has a lot of interest in creating games. They are a very creative kid currently experimenting with using Power Point/Google Presentations to create a crafting and turn based combat style game but is running into the obvious limitations of this setup. They have some very rudimentary understanding of coding (together we recently created a command line version of Rock Paper Scissors Lizard Spock from scratch in Python and they were able to follow along the whole way), but I don’t think their best bet is to start with a code first platform just yet. Maybe something with scripting capabilities when they need them but mostly with the ability to create a point and click interface with something specific happening on each click.
Does anyone know what’s out there that would work for them in this case? FWIW I don’t know Lua but anything with JavaScript or Python built in would make it easy for me to help them. Thanks in advance!
263 comments
[ 2.9 ms ] story [ 295 ms ] threadAnother option I have not tried myself is GDevelop: https://gdevelop.io/. It looks like you can get pretty far without any code at all, although you do that with an "events" editor that is basically a simple visual scripting language.
For example:
* https://news.ycombinator.com/item?id=23892698
* https://news.ycombinator.com/item?id=26050913
(My daughter tried to use Scratch, but it's too difficult to cut&paste and move blocks of code, she preferred a text based programming language, so YMMV.)
There's also PenguinMod which feels like Scratch with more assets.
Recently we started digging into some of the more "advanced" concepts (basically arrays and functions) and I was surprised how far you could actually get with the system.
I'm trying to move him off scratch on to something text based, but imo for a kid it's hard to go wrong starting with Scratch.
This is underappreciated. I've been teaching my son JS but his main gripe is that he doesn't have an easy way to share his stuff in a quickly playable format.
Also, out of curiosity, have you been teaching him JS or TS? I feel like it is a sin to not use TS these days, but not sure if it makes it easier or harder for a new young programmer to learn.
A pragmatic pedagogical thing I love with Snap! is the ease of creating custom blocks, including macros / custom "C-shaped" control structures. If you have some time, this allows you to "scaffold" helpers that will allow him to create interesting stuff while focusing on things you want him to learn and hiding issues you don't.
* Example: I wanted to teach rendering a custom costume with e.g. health bar or text label. My son is already familiar with Snap!'s turtle-drawing primitives that can render lines & text but there was an impedance mismatch — you draw on the screen, and it does support snapshotting all current drawings to create a costume, but using that involves some careful save-and-restore of much global state (e.g. pen color). I built him a "draw costume" block that takes a body of turtle-drawing commands and affects only current character's costume. If you ask me, Snap! should have had similar API built-in; but what's more important it was easy for me to add one that looks and feels as-if it was builtin. This way I can decide what I want to teach ("you can compute how you appear") and what is incidental complexity.
There are also a number of similar (block-based) tools that let you create your own custom blocks and see the code behind them - e.g. Blockly (https://developers.google.com/blockly)
it's slightly more user friendly imho, and you could do some more advanced stuff than scratch (i mean advanced as in using text, rather than blocks).
Arcade also has amazing editors for sound, sprites, etc.
Here’s Flappy Bird https://arcade.makecode.com/88444-57913-28610-31751 (Not made by me!)
Pick an adult solution and sit with them to provide adult guidance. You are at the stage where your relationship with your child becomes peer to peer.
If game programming stays their jam, you will be learning game programming from them in the blink of an eye. It's joyous and wonderful and only gets better.
Sure you will miss them being a small child, but you will know an amazing adult. (and they will always be a small child sometimes just as we all are).
The platform doesn't matter. Your relationship does. Good luck.
As much as I’d want to teach my 11 year old kid Unreal Engine, it’s not realistic. Pun not intended.
My approach with my kids has always been "don't dumb it down". They may not be into programming, but at least they'll be exposed to it.
By giving them the 'easy' version, you are putting up barriers that don't need to be there. Kids are smarter than many adults give them credit for, but again, it depends on the kid.
Their interest in spending time with you will diminish. That reality is the one to optimize for. Recreational interests come and go and come back sometimes. But most don’t stick.
Learning Unreal Engine with your 11 year old is possible, but not for more than year.
At this age, I think it is more important to keep them motivated and find ways to use their creativity than to get them through the pains of debugging and learning too many technical concepts, even simple details like learning about image formats, how to reference them, case-sensitiveness are just obstacles against meeting their goals.
Since they're all new to programming in general the club has mostly been me teaching them. The kids are having a ton of fun. It's slow moving. But they love it.
They also have the GUI scripting instead of the javascript. I haven't actually tried it.
I do a lot of heavy coding but I still play around with Twine sometimes because it's fun. I also sometimes prototype the branching dialogue and/or story in my games using that as a tool as well, because I don't have to code anything.
https://twinery.org/
There's also a subreddit for discussing twine games: https://www.reddit.com/r/twinegames/
A couple examples of how far you can take the engine: https://pseudavid.itch.io/the-master-of-the-land
And this one is super addicting. I played it 12 times in a row after trying it: https://johnayliff.itch.io/seedship
Several winning entries have been written by children or teenagers, with some help from parents.
This is still my "hello world" when trying out a new game dev environment because it covers:
- drawing
- movement
- input
- acceleration
- gravity
- friction
- collision
And all of these in essentially the simplest possible way.
Most of all, it's a lot of fun to have a bouncing ball, and even more fun if you can use the keyboard or mouse to play with it!
For a more structured approach, I'd say draw a circle (or square), then add movement, then make it fall down, then a floor to catch it, then bounce it, etc...
[0] It's not too hard to do in pure JS / Canvas (I am very fond of tiny builds with no dependencies), tho the canvas API is surprisingly unpleasant, so I'd recommend something like Pixi or Phaser.
As far as I know, no single tool has replicated that kind of freedom. For rapid prototypes that one could actually iteratively build on top of top make a full application it was amazing.
I know about the issues and why it isn’t secure etc etc, but in terms of you could interact with it to create we are still at a loss.
The Wick editor was one such attempt, though it didn't gain traction and was abandoned.
Also there seem to be quite a lot of us who feel this way -- a dozen or more every time Flash is mentioned on HN -- maybe it's time we got organized? "Everybody talks about the weather but nobody ever does anything about it!"
I have looked at the Wick Editors source code and managed a sucessful build with some minor changes and felt picking it up is doable, but not easy. But a satisfying way to develope for me, would require a rewrite of many parts. Or most parts, except the UI ..
Pixi as the graphical base would be the way, I think.
But I could not do it as a side project as of now, maybe one bright other day.
From the stand point of freedom for the individual to create in their own way digitally it is unmatched. People can learn UI and UX but it’s really hard, nearly impossible to create a vast ecosystem and the the community that flash once was.
Uses p5js, so nicer than pure canvas.
Note there’s a big leap from making a simple physics toy to making a game.
I rebranded the ball to a box and made it so it plays a rocket animation in each (opposite) direction when you press the arrow keys. (In Flash, this was trivial!)
Made it so you had a certain amount of fuel and had to land to refuel.
I remember all of this taking a day or so, but I might be misremembering.
I had it mostly working but then I changed something, broke it, and didn't know how to fix it. (Box kept sinking through the floor)
These days I'd probably just use Box2D hahah
And if you add some blur (I think in Flash this was just a property you can set) based on how fast the ball is moving, it somehow looks more satisfying still.
You can start with a visual block-based system and move on to JavaScript/TypeScript. We have a lot of schools using it to help teach programming concepts in a fun way. Happy to answer any questions!
https://en.wikipedia.org/wiki/Clickteam
Another more powerful alternative is Stencyl: https://stencyl.com/
You will not find better...
Also, as you need: GameMaker Language (GML) is GameMaker's scripting language. It is an imperative, dynamically typed language commonly likened to JavaScript and C-like languages
Basic 60 frames a second canvas and the rest is JavaScript.
Pair that with the excellent Coding Train series https://youtube.com/@thecodingtrain
To get around the "serve a webpage locally" problem, you could either have Python or Node serve a webpage, or I once rigged up a samba share and a small web server on a home server and turned a kid loose on it ... It didn't take, I should have spent more time helping them daily on it.
But that's an idea.
P5 also has an online dev environment which is good enough. If you create an account you can save stuff online (make sure to backup, another good lesson).
https://editor.p5js.org/
New ones are infrequent but there is a fairly complete set on the web.
Ive also started playing with https://phaser.io/. It’s more of a game framework in JavaScript with built in libraries for collision. The getting started tutorial is decent/short and gives a good idea of what is going on.
In 2024 I'd be tempted to say if you want to make games it might even be better to just get started with Unity, Unreal or Godot and YouTube tutorials + AI help might be enough to smooth it out enough.
The absolute basic stuff might be trickier than a system where it's quite easy to draw on a screen in a few lines but the stuff of collisions and beyond are way easier.
I would suggest that the novice game developer might enjoy rolling their own basic collision detection ( object overlay, mouse-over, inertia-ignoring collision resolution, etc), but obviously that is not fun or convenient for everyone.
https://p5play.org/learn/ (AGPL licensed with commercial exceptions available these days, it seems)
It is a small community of mostly kids aged 15-25 as far as I can tell. It doesn't seem like any professional adult game developers are part of the community (I got an inside view when I took my son to RDC this year).
The top game developers are making millions of dollars per year (they're paid in Robux and converted to USD).
In short, thriving ecosystem with lots of kids having fun doing creative work including creating games, writing code, designing graphics, designing sound effects.
It’s a huge platform for kids so I’m sure there are some creeps but there are plenty of controls in place to deal with that and even so, again, I’ve never seen it.
Keep your kids as far from Roblox as you can.
https://www.bloomberg.com/features/2024-roblox-pedophile-pro...
JavaScript is a very forgiving language to learn:
https://playground.babylonjs.com/
Game level designers are also a fun high-abstraction, and won't overwhelm the impatient.
https://levelsharesquare.com/games/supermarioconstruct
Have fun =3
You are not confined to "console.log()" methods...
Also, setting regression tests with explicit object type checking on well structured source trees will help narrow the search for design flaws (i.e. minify single file includes should be at the final packing and CDN file hash signature stage.)
Best of luck =3
11 is young but I don't know how difficult could be to use Unity with some help, I know people without any development background who created games there in their spare time.
[1] https://www.alice.org/