NOTE: The following is a guest post from Maria Scheel-Lonsdale, an after-school program teacher/educator from Denmark. She has implemented GDevelop in her classroom and shares her experience in this post.
I first heard about GDevelop through a friend that posted a link to it. I immediately went in and tried it online. I started by watching some intros and making a very simple platform game. The cool thing about the tutorials on YouTube is that there are many guides to make your game as you want it to be.
I wanted to get familiar with the program enough to pass it forward, for when I’m teaching kids (ages 7-17) to program and being IT creative with my fellow volunteers at my department in Coding Pirates Lyngby.
I quickly learned and remembered how things worked because of the repetitious nature of the procedure: e.g the collision masks, the behaviors, event groups, and adding conditions and actions, etc. Repeating these actions helped me remember how to navigate GDevelop more smoothly. The same applied to the kids.
To start using GDevelop you don’t need to know how to code, or even know programming logic. You can learn by doing, but you need to be taking it step-by-step with a guide at first. Knowing about Scratch before taking on the program is a huge advantage. Everyone can use GDevelop following the guide, but to know how programming works you need to learn the basics either by someone teaching you or by studying how to code yourself.
The kids in this workshop were 9-15 years old and they all had been taking Scratch as an intro to programming for 5 weeks (10 hours). Some even more than that. So they knew the basics of how coding works. The youngest kids were surprisingly navigating GDevelop rapidly due to their knowledge of Scratch.
GDevelop just sets up the programming in lines, giving you a taste of text programming. I believe this is good a way for the kids to make the connection to coding and language programming later on.
Along the way I asked them questions e.g "if we want to do this, how could we do it and what condition do you think we need to call first to make the action afterward?". Making the kids learn how to think and not what to think (From Margaret Mead’s famous quote) when solving a problem. Read more about “ critical thinking” to help kids be innovative.
I made the game I was using to teach in advance, ready with a guide online so anyone could copy it if they wanted to. But to make the connection on how it works, the kids needed to have time to think for themselves. This also gives them more confidence when solving the problems handed to them, sometimes with little helping questions. But it is crucial that they get the feeling that they succeeded by themselves in solving the issue so they are more eager to go forward and learn more.
Using GDevelop as the next step from Scratch gives the kids great value. Knowing the basics of coding in advance, taking it up a notch, and learning another language. If you don’t know Scratch, GDevelop can be used to learn how to code as a beginner too. I would reckon that the program is targeted to kids from ages 9 and up to use with some guidance. The user experience of the program is very straightforward.
If you are a graphics nerd like me and some of my fellow volunteers, you will learn that some features are different from what you expect and you’ll need to learn by using the program. Being an adult, your mindset is pretty much set to what to expect from the program. On the other hand, kids' minds are much more flexible to changes and new ways of doing things.
What I learned from this process is that kids have a much lighter approach, giving them the advantage to learn the program and features quicker.
It’s not that it's hard for adults at all, we are just more focused on how it could or should work based on experience from other programs, rather than what to do with that knowledge instead.
To conclude: I’m definitely not done teaching GDevelop to kids!
The workshop consisted of 2 hours per week for 5 weeks, a total of 8-10 hours. Once a week the kids would get acquainted with a new step and new features.
We went online and tried GDevelop, got all the objects from the Platformer game example (which included 14 assets), and applied them to the scene. Afterward, we saved the project by downloading the file and opening it in the downloaded program.
This was mostly meant to accommodate those kids that didn’t want to create their own graphics, and just focus on learning and getting familiar with the program instead. They can always choose to edit/remove them and upload their own later on.
We then went through the objects one at a time making sure the collision masks were edited and behaviors applied for the character and platforms. Repeating the same steps object by object gave the kids confidence in using the program and knowledge about the features. E.g: when they found out that a collision mask works as a hitbox.
Having behaviors more or less given to you makes it easier to adjust the settings, know what to choose from and learn what is needed in the game. When new to programming or familiar with Scratch, GDevelop is a great way to learn or take your skills to the next level.
We programmed our player and the score for the game this week. When they had figured out which conditions and actions were needed for their object to act as wanted, the kids were instructed to use the search bar when needed e.g: finding a value of an object variable -> searching for the variable.
GDevelop has two columns in the Events Sheet editor: the first is the condition column (to the left) and the second is the actions column (to the right).
When I got to the part where we needed the “if” statement - “if all of these conditions are true”, I learned that we had to search for “and” (to also consider a condition). I did not tell the kids at first as I wanted them to try themselves and learn to observe the details of the program (with a little help). They got there in the end. GDevelop has small icons in front of their conditions to show their category. Neat, right?
We used Piskel (an open-source pixel graphics editor) this week, which is a simple and straightforward tool for kids too. Piskel is seamlessly integrated within GDevelop.
The kids also learned how to make a scene variable. This was not that complicated, as they had worked with a global variable the previous week. We went through how to set up a health system in the game.
I had seen a few different YouTube videos up front on how to do it and decided to use this one where there is also a refill of health by The Gem Dev and adjusted it a little.
It worked really well for the kids, who got the first condition and action and then asked what to do afterward. If it was too hard I asked them what if there are only 2 lives, how much is the variable equal to? and what do we need to do with the hearts?
Then we moved along to start programming the enemies. This was a bit more tricky, as they had to stay focused on what direction to force the enemy when it reached an arrow.
It was a bit difficult, but there were a lot of laughs too, relief, and a feeling of success when finally solving the problem at hand. We used the example from DevScape. Some of the smaller kids were shown and talked through it.
One kid already got to how to make a portal that opens for a "win" scene or another scene in the game. He had experienced so much confidence by now he'd actually tried to set it up by himself, which was awesome. He then ended up making a twist to the game so it counted the coins picked up and showed how many were needed to open the portal.
We started with our score system. For this we had to make a new layer, and shift the text to be on our new layer. The kids were shown how to open the layers panel and drag the layer box beside the object panel. This is truly a nice feature in GDevelop, especially if you are used to working with graphics programs.
Some had finished the whole game already and now went further by adding more scenes to their game. These kids had already gained confidence with GDevelop and how to code the game. They ended up helping some of the other kids troubleshoot issues and bugs. Pair programming is something we do a lot in my workshops, so the kids have time to debug and learn with each other before asking for help.
We ended this workshop day by making our door/portal to win the game. We needed the text to be on our new layer too. Here, some of the kids made it to be a scene variable and not a global variable, so they went through some troubleshooting with each other. When they finally found the bug - being a global variable and not a scene variable - they were thrilled. “Finding bugs, it's like a treasure hunt! The feeling of solving your issue is so cool!”.
The kids had so much fun making their games. They used this workshop day to adjust it and some to add to it. We also used time to debug issues/glitches that some of the kids' games had, because they added more to it, so sometimes there were duplicate conditions or actions.
Two kids showed their games at our “Show off round” to all the other kids in the department, proud and confident. This made my choice even easier:
I’ve decided to have another GDevelop workshop for more kids to try, and 3 kids from this period are continuing to the next period, having time to work on their games and making them even more complex.
NOTE: Huge thanks to Maria Scheel-Lonsdale for sharing her experience with GDevelop in the classroom! If you'd like to know more about GDevelop for Education, visit the Education page.