Lecturing Game Maker - my impressions
Hi all,
Update: The course has completed. All posts updated with their relevant content
So as some of you may know, I started lecturing my "Introduction to Game Maker" course on Monday. I thought I would just share my experiences with all of you, perhaps some of you would find it useful... ( many of you may not :) ). Initially the course was going to start with 5 students, however 2 had to pull out at the last moment. It's not an issue for me, as it at least allows me to gauge the progress of the class, and allow for more shuffling of course material. I'm going to be updating this as the course progresses.
Monday 18 March: Introduction
The students arrived and promptly took their seats. I started off by introducing myself and what I do. I also explained why I started the course, as well as what I am hoping the students will be able to take away from it.
After the brief introduction, I asked each student to stand up and talk a little bit about themselves. I asked for their name, where they are at school, what games they play, and why they joined the course. Once I had a better understanding of the students (and breaking the ice), I handed them their goodie bags. I had prepared flash drives with the software needed, some videos, and some example games that were done in Game Maker.
Once the students had a little look around their flash drives, I started the first lesson. I initially started explaining various theory's behind game design. About 3 sentences in I stopped myself. I came the the realisation that although the theory is important, it means nothing to them for their first class. I felt that the students would prefer to have a hands on lecture to the application. I realised I can re-shuffle certain theory points later into the course, as it would make more sense when it is required.
I gave the students a brief overview of what we would be building today. Unfortunately, I didn't have the finished class project with me, so I had to verbally explain the game idea. I then moved onto the interface, and explained the way Game Maker interprets each of the components that is on display. The students seemed to grasp this quite easily, and asked a few questions about certain elements.
From there, we dived straight into the first game. We created the first tutorial that used to come with game maker. The game where you click on a moving ball and it rewards you with point. (EDIT: I recently discovered that this is now the clown tutorial that comes with GMS). We drew all the sprites required and programmed all the code using drag and drop. I explained the Event/Action panel in great detail, as I was worried that that would be quite confusing. Strangely enough the students did not have many questions about the process, but I think they were still a little shy. The questions they did have however, were the items I was going to cover next. This at least re-assured me that my process was on the right track.
We were running ahead of schedule, so we ended up adding a few more different mechanics and outcomes. We added in gravity, more rooms, as well as bouncing balls that minus your score when clicked on them.
The class ended earlier than I initially thought, and the students seemed to grasp the concept quite well. We ended off the lecture playing some of the other games, and asked them to start analyzing the structure at home.
Screenshots: (img) (img) (img)
First lesson exe file: (insert exe link here)
First lesson gmz file: (insert gmz link here)
Wednesday 21 March: Breakout Clone - Rapid prototype
Wednesday started off witha short re-cap of the interface, as well as recapping what each element does. I explained to them that we would be creating a rapid prototype, which would them be replaced with decent artwork at a later stage. I showed them on the projector the prototype and "completed artwork" versions.
The class itself was more of a recap overall of monday's progress. The game has many similarities to the first lessons game. We created walls, bricks, a ball, and created a paddle that the user can control. From created the template for the game, including the collisions for all elements. We introduced a new variable, the number of lives. We also allowed the game to advance to the next room once all bricks had been destroyed, and allowed the players score to carry over. We later introduced a double brick, that needs 2 hits to be destroyed.
Everything was once again created in drag and drop coding. Once we were happy with the mechanics, I supplied some artwork which the students could use to replace the ones they created.
A couple of the questions students asked, I had not considered. For example, how to move to the next room once all the bricks were destroyed. Fundamentally, I understood how to do it, but did not know the function name. A quick google on my phone sorted that out while they were updating their artwork and creating more levels.
Overall the students were more open to conversation, and were really excited once they got things working. They were challenging each other on their own levels, and were asking more questions about other mechanics they could introduce to make the game more exciting. I feel that the students are picking up the application at a rather quick pace, so I need to make sure in future that I prepare a lot more for each lesson.
Screenshots:
Breakout prototype exe file: Prototype
Breakout final exe file: Final Version
Monday 25 March + Wednesday 27 March: Tank Game - Introduction to GML
This week's class started off with a large bit of excitement. I showcased the top-down tank game that we were going to make. I downloaded a whole bunch of free sprites from Reiners Tilesets, and showed them how easy it is to work with completed artwork directly.
We covered quite a bit over the duration of the week, focusing more on converting what we had learnt into GML, as well as explaining the better control we have in GML as opposed to drag and drop.
The game created covered the following topics:
Tilesets
Sprite sheets
Sprite rotation
Sprite animation
Alarms
Room wrapping
Randomize
Shooting towards the mouse cursor
This time, the students seemed to pick up GML quite well. Everything seemed to have made sense, and as we went through each new function/variable, the students started to understand the logical flow in which programming is done.
We ended up with an extra 30 mins to "complete" the game. I started explaining a "Challenge vs Reward" chart. The basic idea is that the further you get in a game, the challenge would increase, as would the rewards.
Together with the class, we transformed the game into a "Horde" styled game. The players' gun would be able to shoot faster, as the kamakazi styled enemies would approach the player at a faster speed. The longer you could hold out, the higher the score. The final result is a fun little mini-game that has a challenge curve, as well as an objective. This serves as a basic introduction for their final game they need to make over the course of the last week of the course.
Screenshots:
Tank ver 1 exe file: First class outcome
Final Tank exe file: Second class / complete game
Saturday 6 April + Monday 15 April : Platformer
Carrying on from the previous class, we started to focus more on movement based collisions, which Game Maker battle's a little bit. Most of the class was spent explaining the issues that occur with collisions, reinforcing the many issues that could cause problems with the game. I also focused on how game maker renders the sprites, according to masks and origins.
The second class was largely spent recapping, as students did not have class due to some of them going on holiday. We also added in a basic AI that changes direction by colliding with AI "nodes" (not included in this EXE file).
One small issue from my side, I had used the wrong function (place_empty instead of place_free) when doing the collision detecting. Once we introduced ladders into the game, I ended up over-complicating my code and confusing the students a bit. The following week I opened up the game, explain where I went wrong and explained an easier approach to our platformer movement. We took out all unneccesary functions and rebuilt our movement engine with me explaining it better.
At the end of the class, I told students to start preparting for their final game, and listed the requirements.
Screenshots:
Platformer exe file: Platformer
Wednesday 17 April: Puzzler + Briefing for final game
After the rather disastrous platformer mishap, I moved onto more "logic" driven gameplay. At the moment I am unsure whether I should have done this class in another week, but the students didn't have any problems with it.
I went back to basics and called upon more global variables with the "Puzzle" type game. We simplified the movement to a grid based movement system, as well as minimal collision events. In this class, we created a game where you have to collect the key to exit the game. However, sometimes the key is locked away in a room, where the user has to step on a platform to open a door. Adding on from that, we added in a timer to some of the platforms, so that the door would close after a certain amount of time (Unfortunately not in downloadable version).
Unfortunately, I did not supply a great amount of sprites. A lack of preparation on my end meant we ended up using a nice background sprite in conjunction with shapes for sprites. Even though it was not the best looking game we made, I wanted to include it as a reinforcement of the logical way in which programming is done, as well as the thinking that needs to go in when planning out a game.
The Puzzler was a quick 40 min class, and once done I fully briefed the students on their final project. I gave them forms they needed to fill out. The forms served as a basic game design document. In it, I listed the following requirements:
What is the name of your game?
What is it about? (in one sentence)
What is the objective?
How does the player interact with the game?
What are the challenges?
How does the player “win”?
What sprites are needed?
What sound effects are needed?
Since I briefed the students in the week before, they already had an idea of what they wanted to do. I warned them that 5 hours isn't a great deal of time to make a game, and that they need to keep it rather simple. For homework, I told them to work on it as much as they can if possible, and told them to return the forms to me on saturday.
Screenshots:
Puzzle exe file: Final Puzzle game
Saturday 20 April: Student's final game
Final class, phew. Can't believe it went much quicker than I expected. I really enjoyed lecturing, and most definitely would consider doing it again.
The last class was spent with me going around and helping each of the students with their code, and any issues they might have run into. I had also spent the night before sourcing graphics and sprites for the students to use. I got as much free art as I possibly could, but I did mention to the students that they can use other sprites (as long as they don't plan on selling their games :) ).
The class came to an end and the students handed me their final files.
First up, Jason de Araujo.
His game, called "Goin Commando", was based mostly off our platformer example, mixed with our Tank example.
A nicely "polished" game, simple and fun to play.
Screenshot:
Final exe file: Goin Commando
Next, Alano Terblanche.
Alano's game, called "Ninja Stickmen", was an over-scoped but great application of what we had learnt over the past few weeks.
As the weeks went by, Alano spent a lot of his own time learning the program and developed a basic AI into his game. The AI manages to follow a path, and when the player reaches a certain radius, the AI will break the path and hunt the player down. Once the player runs out of range, the AI stops following.
Unfortunately, he ran out of time, but the work he managed to put in in the amount of time was quite impressive.
(If you having issues entering the gates, hold W when you press E)
Screenshot:
Final exe file: Ninja Stickmen
Last but not least, Carman Terblanche.
Carman's game, was unfortunately saved over when the students handed in their work. He opened up a previous example and accidentally saved over his work. Although we managed to get the backup in time, he still had to update a lot of his work. I have asked him to email it to me when he gets a chance.
Screenshot:
Will update when provided
Final exe file: Will update when provided
Update: The course has completed. All posts updated with their relevant content
So as some of you may know, I started lecturing my "Introduction to Game Maker" course on Monday. I thought I would just share my experiences with all of you, perhaps some of you would find it useful... ( many of you may not :) ). Initially the course was going to start with 5 students, however 2 had to pull out at the last moment. It's not an issue for me, as it at least allows me to gauge the progress of the class, and allow for more shuffling of course material. I'm going to be updating this as the course progresses.
Monday 18 March: Introduction
The students arrived and promptly took their seats. I started off by introducing myself and what I do. I also explained why I started the course, as well as what I am hoping the students will be able to take away from it.
After the brief introduction, I asked each student to stand up and talk a little bit about themselves. I asked for their name, where they are at school, what games they play, and why they joined the course. Once I had a better understanding of the students (and breaking the ice), I handed them their goodie bags. I had prepared flash drives with the software needed, some videos, and some example games that were done in Game Maker.
Once the students had a little look around their flash drives, I started the first lesson. I initially started explaining various theory's behind game design. About 3 sentences in I stopped myself. I came the the realisation that although the theory is important, it means nothing to them for their first class. I felt that the students would prefer to have a hands on lecture to the application. I realised I can re-shuffle certain theory points later into the course, as it would make more sense when it is required.
I gave the students a brief overview of what we would be building today. Unfortunately, I didn't have the finished class project with me, so I had to verbally explain the game idea. I then moved onto the interface, and explained the way Game Maker interprets each of the components that is on display. The students seemed to grasp this quite easily, and asked a few questions about certain elements.
From there, we dived straight into the first game. We created the first tutorial that used to come with game maker. The game where you click on a moving ball and it rewards you with point. (EDIT: I recently discovered that this is now the clown tutorial that comes with GMS). We drew all the sprites required and programmed all the code using drag and drop. I explained the Event/Action panel in great detail, as I was worried that that would be quite confusing. Strangely enough the students did not have many questions about the process, but I think they were still a little shy. The questions they did have however, were the items I was going to cover next. This at least re-assured me that my process was on the right track.
We were running ahead of schedule, so we ended up adding a few more different mechanics and outcomes. We added in gravity, more rooms, as well as bouncing balls that minus your score when clicked on them.
The class ended earlier than I initially thought, and the students seemed to grasp the concept quite well. We ended off the lecture playing some of the other games, and asked them to start analyzing the structure at home.
Screenshots: (img) (img) (img)
First lesson exe file: (insert exe link here)
First lesson gmz file: (insert gmz link here)
Wednesday 21 March: Breakout Clone - Rapid prototype
Wednesday started off witha short re-cap of the interface, as well as recapping what each element does. I explained to them that we would be creating a rapid prototype, which would them be replaced with decent artwork at a later stage. I showed them on the projector the prototype and "completed artwork" versions.
The class itself was more of a recap overall of monday's progress. The game has many similarities to the first lessons game. We created walls, bricks, a ball, and created a paddle that the user can control. From created the template for the game, including the collisions for all elements. We introduced a new variable, the number of lives. We also allowed the game to advance to the next room once all bricks had been destroyed, and allowed the players score to carry over. We later introduced a double brick, that needs 2 hits to be destroyed.
Everything was once again created in drag and drop coding. Once we were happy with the mechanics, I supplied some artwork which the students could use to replace the ones they created.
A couple of the questions students asked, I had not considered. For example, how to move to the next room once all the bricks were destroyed. Fundamentally, I understood how to do it, but did not know the function name. A quick google on my phone sorted that out while they were updating their artwork and creating more levels.
Overall the students were more open to conversation, and were really excited once they got things working. They were challenging each other on their own levels, and were asking more questions about other mechanics they could introduce to make the game more exciting. I feel that the students are picking up the application at a rather quick pace, so I need to make sure in future that I prepare a lot more for each lesson.
Screenshots:
Breakout prototype exe file: Prototype
Breakout final exe file: Final Version
Monday 25 March + Wednesday 27 March: Tank Game - Introduction to GML
This week's class started off with a large bit of excitement. I showcased the top-down tank game that we were going to make. I downloaded a whole bunch of free sprites from Reiners Tilesets, and showed them how easy it is to work with completed artwork directly.
We covered quite a bit over the duration of the week, focusing more on converting what we had learnt into GML, as well as explaining the better control we have in GML as opposed to drag and drop.
The game created covered the following topics:
Tilesets
Sprite sheets
Sprite rotation
Sprite animation
Alarms
Room wrapping
Randomize
Shooting towards the mouse cursor
This time, the students seemed to pick up GML quite well. Everything seemed to have made sense, and as we went through each new function/variable, the students started to understand the logical flow in which programming is done.
We ended up with an extra 30 mins to "complete" the game. I started explaining a "Challenge vs Reward" chart. The basic idea is that the further you get in a game, the challenge would increase, as would the rewards.
Together with the class, we transformed the game into a "Horde" styled game. The players' gun would be able to shoot faster, as the kamakazi styled enemies would approach the player at a faster speed. The longer you could hold out, the higher the score. The final result is a fun little mini-game that has a challenge curve, as well as an objective. This serves as a basic introduction for their final game they need to make over the course of the last week of the course.
Screenshots:
Tank ver 1 exe file: First class outcome
Final Tank exe file: Second class / complete game
Saturday 6 April + Monday 15 April : Platformer
Carrying on from the previous class, we started to focus more on movement based collisions, which Game Maker battle's a little bit. Most of the class was spent explaining the issues that occur with collisions, reinforcing the many issues that could cause problems with the game. I also focused on how game maker renders the sprites, according to masks and origins.
The second class was largely spent recapping, as students did not have class due to some of them going on holiday. We also added in a basic AI that changes direction by colliding with AI "nodes" (not included in this EXE file).
One small issue from my side, I had used the wrong function (place_empty instead of place_free) when doing the collision detecting. Once we introduced ladders into the game, I ended up over-complicating my code and confusing the students a bit. The following week I opened up the game, explain where I went wrong and explained an easier approach to our platformer movement. We took out all unneccesary functions and rebuilt our movement engine with me explaining it better.
At the end of the class, I told students to start preparting for their final game, and listed the requirements.
Screenshots:
Platformer exe file: Platformer
Wednesday 17 April: Puzzler + Briefing for final game
After the rather disastrous platformer mishap, I moved onto more "logic" driven gameplay. At the moment I am unsure whether I should have done this class in another week, but the students didn't have any problems with it.
I went back to basics and called upon more global variables with the "Puzzle" type game. We simplified the movement to a grid based movement system, as well as minimal collision events. In this class, we created a game where you have to collect the key to exit the game. However, sometimes the key is locked away in a room, where the user has to step on a platform to open a door. Adding on from that, we added in a timer to some of the platforms, so that the door would close after a certain amount of time (Unfortunately not in downloadable version).
Unfortunately, I did not supply a great amount of sprites. A lack of preparation on my end meant we ended up using a nice background sprite in conjunction with shapes for sprites. Even though it was not the best looking game we made, I wanted to include it as a reinforcement of the logical way in which programming is done, as well as the thinking that needs to go in when planning out a game.
The Puzzler was a quick 40 min class, and once done I fully briefed the students on their final project. I gave them forms they needed to fill out. The forms served as a basic game design document. In it, I listed the following requirements:
What is the name of your game?
What is it about? (in one sentence)
What is the objective?
How does the player interact with the game?
What are the challenges?
How does the player “win”?
What sprites are needed?
What sound effects are needed?
Since I briefed the students in the week before, they already had an idea of what they wanted to do. I warned them that 5 hours isn't a great deal of time to make a game, and that they need to keep it rather simple. For homework, I told them to work on it as much as they can if possible, and told them to return the forms to me on saturday.
Screenshots:
Puzzle exe file: Final Puzzle game
Saturday 20 April: Student's final game
Final class, phew. Can't believe it went much quicker than I expected. I really enjoyed lecturing, and most definitely would consider doing it again.
The last class was spent with me going around and helping each of the students with their code, and any issues they might have run into. I had also spent the night before sourcing graphics and sprites for the students to use. I got as much free art as I possibly could, but I did mention to the students that they can use other sprites (as long as they don't plan on selling their games :) ).
The class came to an end and the students handed me their final files.
First up, Jason de Araujo.
His game, called "Goin Commando", was based mostly off our platformer example, mixed with our Tank example.
A nicely "polished" game, simple and fun to play.
Screenshot:
Final exe file: Goin Commando
Next, Alano Terblanche.
Alano's game, called "Ninja Stickmen", was an over-scoped but great application of what we had learnt over the past few weeks.
As the weeks went by, Alano spent a lot of his own time learning the program and developed a basic AI into his game. The AI manages to follow a path, and when the player reaches a certain radius, the AI will break the path and hunt the player down. Once the player runs out of range, the AI stops following.
Unfortunately, he ran out of time, but the work he managed to put in in the amount of time was quite impressive.
(If you having issues entering the gates, hold W when you press E)
Screenshot:
Final exe file: Ninja Stickmen
Last but not least, Carman Terblanche.
Carman's game, was unfortunately saved over when the students handed in their work. He opened up a previous example and accidentally saved over his work. Although we managed to get the backup in time, he still had to update a lot of his work. I have asked him to email it to me when he gets a chance.
Screenshot:
Will update when provided
Final exe file: Will update when provided
Thanked by 1Elyaradine
Comments
btw: The students thought zX was mind-blasting. They loved it!
How long till your students learn GML?
I actually got them started on GML on monday. We are creating a top down tank game :). We should finish it on wednesday :)
Have updated the top post to include all my classes up until the weekend.
Is this going to become a staple? Are you going to give this coarse (and others) every year?
Glad to know I have a fellow supporter :).
I'd really like it to be a recurrent course. So far I feel that the students have learned a lot and they get excited about how easy it is to actually make a game. It's actually a little inspiring for me as well, as it's always a reminder of how excited one gets when they have an idea...
What I will be doing next, is doing a weekend workshop class. Same lectures, just longer periods of time as well as getting more out per class. I think it would be easier for younger students to attend a class on the weekends as opposed to weekdays.
Preferably, I'd like to give the course multiple times a year, but we'll see how successful it turns out!
I have updated the rest of the posts, as well as the students final games. Overall I think it was a success. The students seemed to grasp the program quite well, and by the time they did their final games they could essentially navigate and apply their thinking to Game Maker comfortably.
Let me know what you guys think :)