Hello Everyone,

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?

Thanks

—- Update:

After some good discussion with my daughter, we’re going to try gamefroot (a proprietary, enhanced scratch) first.

She really wants to check out Gadot too.

Thanks everyone for the thoughtful comments and the help.

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

    • Can second game maker. Last version I played around with was GM8, probably over a decade ago; It’s got the benefit of OOP design forced by default and loose syntax requirements for GML when you do get there.

      Other than extensibility, I don’t recall much that GML couldn’t do compared to a general high level language, at least with regards to games. Oh, and I do remember the Error reporting in it being fantastic, too.

  • I’d say Python, PHP, or something like godot.

    JavaScript/typescript threading and async stuff is quite a hill and modules are sometimes painful (though the same is true for python at times).

    Funny enough, actually know a few 10-12 year olds that learned Java, simply because they wanted to do things with Minecraft. Don’t underestimate her! Just be patient and learn together!

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

    • Thanks so much for the thoughtful reply. I’ll do some reading on those.

      QBasic - what a blast from the past! I also started on basic. My favorite was a “snake” game I had made.

  • I’m a developer at one of the big 4 tech companies, someone who found themselves eventually becoming an engineer (I didn’t study computer science at college/university).

    Python is great at teaching some fundamentals but I personally don’t like how the language feels like things have been tacked on over time. To me it really feels like scripting language that has been later tweaked to try and support more fully fledged features that other languages have.

    To give you some examples of my frustrations:

    • it’s not strongly typed, so there are often times in big codebases you don’t know what the type of data you’re handling easily. As opposed to something like c/c++/c#/java/rust

    • classes feel a little like an afterthought personally and are a bit weird compared to other object oriented languages like c# and java

    • this is petty, but the fact that using spaces instead of tab or vice versa when you’ve used the other throughout prevents your program from compiling is ridiculous. Whoever thought using whitespace to enforce compilation is a madman!

    Given I primarily write in C#, I’ve found it a really nice language to learn object oriented fundamentals and using interfaces properly, abstract classes etc. etc. Learning these would give a strong foundation for other languages much easier and concepts which will definitely be used in game development and would allow her to work with well known game engines later in life if she desires.

  • Logo or some other lisp would probably be the next logical step, one of the smalltalk environments (Squeak, Pharo) might also be an option, since they’re designed for teaching and have a ‘if you screw up, you can just reset the image’ mentality - remember, pre-2.0 Scratch itself was based on Squeak

  • Not exactly an answer to your question, but I, like her, started with scratch, and then found amazing App Inventor. It’s a scratch-like approach to android apps, with tiny colorful blocks to make code and lot of potential.

    “True” programming languages like the ones you mentioned at the beginning may be “”“boring”“”, because the first programs would be faceless terminal applications to process some inputted data. If she’s really into games, a possible approach may be an interactive fiction, that is 100℅ terminal based, but super easy to do (no GUI to worry about that limits her creativity) while at the same time making her friendly with the code. Python can be my recommendation if this is your chosen path (I wrote my first IF in c++ without knowing about the existence of while and for loops, I used 100% the goto statements… It makes me shiver at the only thought of it…) If she then familiarize with the code and wishes to go on the game path, the pygame library can be very helpful

    For 3D games there’s unity3D, but it’s a bit out of her ability right now, even if it’s not too complicated

  • There are so many options! You could search for teachers’ resources about it, like this one.

    I goofed around in Construct a long time ago. From looking at their website, Construct 3 clearly cater to beginners and education now, while offering an engine you can build actual stuff with. They have visual coding AND actual coding in Javascript, so she can gradually ease into it.

  • As a former Video Games Developer congrats on getting so far! The style of game she wants to make is very well suited to RPG Maker. This will be really good to get that Zelda itch scratched and may introduce her to some other Japanese franchises such as Final Fantasy.

    For general graphics programming I recommend Processing as it is easy to set up compared to Python based libraries, with lots of tutorias. But it won’t have anything that fits the definition of game (Maps, actors, etc).

    Godot has come a very long way and the tutorials are amazing so I definitely suggest not staying too long in the RPG Maker land, and instead pick up the 2D side of Godot.

    Edit: Just checked out gamefroot. Looks like a nice update to scratch so it seems like a good choice. After she reaches the limits of that I definitely recommend moving to something with text driving the code.

  • The only solution is Bevy using Rust /s

    Although the sarcasm could be unwarranted. If she wants to get into programming, Rust is a great language for better understanding system level programming. The borrow checker and the detailed errors act like a teacher in their own right. She might not be ready for game Dev on it but could be worth exploring for just development in general.

  •  jtk   ( @jtk@lemmy.sdf.org ) 
    link
    fedilink
    English
    3
    edit-2
    1 year ago

    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.

  • Python have pygame, but I’m not sure how well maintained is that lib now a days.

    Rust have some community around game engines, but not sure if it’s the best language for a 10yo