I’ve got a 10 year old daughter who loves making games in scratch, but she’s starting to run into that boundary where it stops working for you, and starts working against you.
She wants to make an adventure game in the vein of a trimmed down “legend of Zelda: link to the past”
I’ve looked at snap and gamefroot as potential next steps. Would consider a “true” language like JavaScript or python, but I’m worried she would be daunted if the ramp is too steep (maybe with the correct libraries/frameworks?) The immediate feedback and low ramp scratch offers are still important.
Anyone have any wisdom to share? Or point me to something I’ve missed?
if you were to teach her a "true" language I would say python and introduce turtle or some like that at first then as she learns python more and more you could look at showing her pygame albeit kinda advanced personally the basics aren't to bad
First off, you're awesome and so is your daughter!
It does seem like there are at least two potential aims here: to make a game and to become a better coder.
If the primary aim is to make a game, there's RPGMaker. I'm not very familiar with it, but from what I understand it's a lot more drag-and-drop game assembly than programming, though it does have some scripting capabilities.
If the aim is more about becoming a better coder and expanding her capabilities, PyGame is a very popular Python library for making games. And Python is widely touted as "a great beginner language."
Python is (qualifier, qualifier) "slow," and so it's possible she'll run into some limitations there as well, but I'd imagine it should be a ton less restrictive than Scratch, and well up to the task of "a trimmed down 'legend of Zelda: link to the past.'"
Java is a language that people make "real" games in (like the original Minecraft, for instance.) But... and this'll be a controversial statement, but... my experience is that it makes people worse coders. As in, it causes brain damage that is either overcame later or negatively affects their coding abilities for the rest of their careers. Python is very much the opposite; it's the kind of language that makes you a better coder for having worked with it.
I've been working with Golang and Ebiten lately, and I'm enjoying it, but it's definitely a very "really real" programming language that may require a certain amount of background knowledge to appreciate the simplicity of. It's an option, though. And I do believe it would be the kind of option you'd use if you were making a "real game" (like the kind that would be sold on Steam.) At her age, I probably would have been excited by the fact that that option also gives you a bona fide .exe file.
Of all of those options, I'd probably be most inclined to nudge her toward PyGame/Python but lay out all the options above (along with any other options you come across.)
Good luck to both of you! It's always awesome to see 10-year-olds getting into game development. When I was 10, I wrote games and other programs in QBasic. That's a dinosaur these days, but your daughter's interest in software development may well turn into a lifelong interest and fulfilling career like it did for me.
Roblox Studio. I hate it's predatory economy but my 7 yo has been building some random worlds and he and his friends have a blast just running around in them for hours. The fact it's so easy to share and play with friends is really a big motivator. It doesn't cost anything.
It's by no means perfect, but Lua with LÖVE is pretty straightforward for 2D games, and gives you a Real™️ programming language as well.
Alternatively, Godot is a modern open source game engine and framework, and if you stick to 2D and the built-in GDScript, it comes with a lot of nice things for creating levels, maps, animations etc. However, perhaps for a 10yo the barrier to entry might be a bit high.
I would recommend gamemaker.io. Although I haven’t used it in a long time, I think their philosophy is still the same. You get to use no-code to get your feet wet. When you need more flexibility you can use their custom scripting language. So you essentially get to become acquainted with their technology while programming in no-code and then when you switch to coding, it’s not as big of a leap since you’re not transitioning to a completely new technology.