When I was 12 years old, my life trajectory drastically changed when my brother and I stumbled across an early version of the popular game development software GameMaker. I often thought of how different things would have been if I hadn’t gained that exposure to programming, and how many other kids probably would have loved it as well, but never were given the chance. As a result, I have always entertained thoughts around how to give kids the opportunity to get involved with game programming, and this past semester I got my chance! My wife Mary owns her own art studio where she teaches art classes, and this Spring I decided to just go for it and teach a class of my own, “Introduction to Game Programming.” Seven students signed up for the class, ranging in age from 11-16. I used the book The Game Maker’s Apprentice for class projects, and the semester culminated with each student making a game of their own design! The following video was shown at the student art showcase and shows some footage of their finished products.
All things considered, it was a successful semester, and I plan to not only offer the class again in the Fall, but also offer a more advanced class to allow students to continue on in their learning if they are interested. However, there are so many things that I learned from trying everything out for the first time, and I thought I’d reflect on it. So here are 6 things that I specifically would try to do differently the next time around:
1. Don’t Waste Time Trying to Set Up a Forum
It is easy when planning something like this to get a very idealized picture in your mind of how things will go. Our class only met once a week, but I had visions of the learning process extending throughout the week with activity on a private forum where students could not only ask questions, but also learn from each other and all have access to any answers I provided. In the end, this was a little much to expect from such a young class. For one, the idea of a forum was more foreign than I had assumed (most didn’t even really regularly check email), but it also just wasn’t realistic that it would be used much with such a small and young class (let’s face it, most college classes wouldn’t even see much activity on this kind of forum). In the future, I won’t bother trying to get everyone set up with a forum, but rather stick to email as the main channel for contacting me during the week if they have questions.
2. Don’t Make Final Projects So Open-Ended
The structure of the class consisted of projects from The Game Maker’s Apprentice, culminating with each student making a game completely of their own. I really desired for them to feel empowered to make what they wanted, and feel like their creativity could drive the project. What I should have realized is that a completely blank canvas with no restrictions can be very paralyzing, not just for beginners, but for anyone in any artistic medium. I ended up showing an example of how to make a platformer, which led to all of the kids using the example as the basis of their project, largely because I think it gave them some tangible direction to go. In the future, I think I will be a little more specific in the requirements to get the students started, but still leave enough room for them to be creative. I don’t want a lack of ideas, or ideas that are far too grandiose, to be what prevents progress on final projects.
3. Try to Use a Newer Version of GameMaker
This was a tough aspect of teaching this class. I really felt that The Game Maker’s Apprentice provided the strongest projects in a textbook format, with detailed instruction geared towards total beginners and using GameMaker’s drag-and-drop system. The problem is that book is about a decade old at this point, which pretty much makes it an ancient tome in the software world. At first I attempted to have them use GameMaker: Studio, but I quickly learned that there were too many discrepancies that caused confusion in the projects. I pivoted to having them all install the older Game Maker 8 from the CD that came with the books, and that sufficed for the rest of the semester. While everything worked out, I would really prefer to be on an updated version of GameMaker. GameMaker Studio 2 was just being rolled out as I taught the class, and it would really be cool to be teaching on the hot new platform. The primary drawbacks are that, first, the new version of GameMaker has much more restrictive resource limits in the free version (the paid version is too expensive to be feasible for the class). And second, I would lose the ability to effectively use any of the projects in The Game Maker’s Apprentice (in other words, the primary resource I was building the class upon). I have wrestled with this, and I believe the ideal is really for me to write my own curriculum, specifically staying within the confines of the free version of GameMaker Studio 2. This is still to be determined, but one thing is for sure: I don’t want my class’s technology to be living 10 years in the past.
4. Be More Organized with Lecture Topics
In a lot of ways, I was really winging it this last semester. I had a general idea of how I would follow the projects in the book, but as far as the weekly in-class lectures, I kind of just picked things to talk about. Ideally I would have more specific plans so I could really leverage the limited class time we had effectively. This somewhat couples with the nagging desire I have to write my own curriculum. Doing so would give me a lot of power over how topics are introduced, and how that could match my flow in weekly lectures. But I definitely think some of my lectures didn’t “stick” as much, simply because I kind of bounced around between things or didn’t articulate effectively as I kind of came up with explanations on the fly. It definitely is a balance though, because some of the best discussion can be prompted by a student asking, “how would you do this in a game?” and I want to keep that flexibility to piggyback on the natural curiosity of the class.
5. Give More Examples Directly in GameMaker
Usually towards the beginning of the class, I would have all the students close their laptops and listen to me lecture. Again, as a teacher, it is easy to get an idealized vision of how engaging your lectures are going to be. In reality, it was easy to notice how quickly some of the students would get distracted or just not really listen to what I was saying. Later I moved to opening up GameMaker and projecting it on the wall while I walked through examples, and it was amazing how quickly their attention was hooked. Lesson learned: kids at that age are engaged much better by tangible, visual examples. It is one thing for me to talk about how you might do something, or even sketch it out on a whiteboard, and it is another to actually just whip up a little example project that shows it in action. With this in mind, I’d really like to integrate more of that hands-on lecture style in the future, and have more of a plan of what examples I will use.
6. Allow Students to Get Ahead While On the Same Project
This is another really tough area. I strongly believed that this class should allow students to define their own pace; more like taking piano lessons than taking a math class for example. If there were kids that were super interested, I wanted to enable them to always be able to push further regardless of where the rest of the class was. I approached this by essentially having a queue of projects that the students could progress through at any pace, and finishing early would just mean more time for their final project. This sort of worked, but it started to cause issues both with the dynamics of the class as well as my lecture topics. With lecturing, it would have been a lot easier to organize my approach if all students were at least on the same project at any given time. But also, keeping students on the same project helps to keep those who are further behind from getting discouraged. Naturally, some kids are going to excel more than others, and I want to give every student the chance to realize their potential, but I think in the future I would approach it differently. I think the better structure is to keep kids on the same project, but have “extra” optional criteria for those who finish more quickly. That way everyone is on the same project, it is just that some students may be working on some extra, more difficult features. Once again, this pairs really well with that idea to write my own curriculum…
I find a lot of joy in teaching in general, and game programming is one of the topics that I am most passionate about. There is nothing like introducing young students to the magic of programming for the first time, seeing their reactions as they discover that they can change how a computer behaves simply by altering some instructions. I plan on teaching the “Introduction to Game Programming” class again in the Fall, and hopefully also a “Game Programming Lab” that serves as a continuation for students that have completed the introductory class. There are definitely some balls in the air at the moment; am I able to get everyone using Game Maker Studio 2? Will I write my own curriculum? How will I approach different skill levels, particularly in the advanced class? And while I don’t know the answers, this past semester has shown me that sometimes jumping in before you feel ready is the best (and perhaps only) way to really get off the sidelines and moving towards what you are visualizing in your dreams. So next semester, ready or not, I will be taking another step in that direction.