Making a game during at the Flatiron School’s “Dark Science”-themed game jam helped me better understand classes and Object Oriented Programming, but more importantly it helped me understand scope.
We used pygame to program the game with the most experienced of us watching and coding-along with about two hours of tutorials. Pygame was the most logical choice, since we all have experience working in Python, but it doesn’t mean working with it to build a game was easy.
We had grand plans. Our game was going to be a top down action game like The Legend of Zelda or Pokemon with a platforming/side-scrolling battle mode. It was ambitious, but we had 48 hours to build it.
A teammate started building projectiles and it was rad. A few of us started working on how to fully understand how pygame uses classes to put objects on the screen and move them. We had a brainstorm about a story and sketched out how it would all play together, trying to come up with a ridiculous concept to go along with our goals for the game. We ended the night with a Github repository with everyone’s contributions.
By Saturday we didn’t have anything playable, but we did start working on the concepts for the hero and the enemies. We didn’t have time to create them from scratch so we looked for resources we could safely use and found sprites for kids, which are the basis of our hero and enemies.
This was the first moment where the time left caused the scope to narrow. We put our own spin on the sprites to fit the idea.
Saturday was spent getting something together that was playable, even if it wasn’t what we were looking to do. Between all the tutorials we had been going through, we started to Frankenstein’s Monster together something that was playable.
It wasn’t pretty, but we got something that was playing. In the image, you can see the beginnings of moving blocks, stationary blocks and a red block, which was an early version of an enemy.
By the end of Saturday, we were nearly ready to start putting a game together. The art was crude, but kinda ready, we had a firmer grasp on how the code was working and there was optimism.
Sunday was the day. The games were supposed to be ready at 4 for the public voting to begin at 5. At noon it became clear that anything that wasn’t working would have to be set aside in order to make the 4pm deadline. The background was working, the moving platforms were working and there were red blobs that resembled enemies on the screen.
I watch Ceave Gaming’s YouTube channel regularly and it was serendipitous that he had posted a video about what makes a good Mario level a week before the game jam. I started writing and coding the platforms and some enemies into the game, which had become one level with no start screen, pause option, win state or losing state. If you hit an enemy, not only did your character die, but the whole program quit on the spot.
The team came together, assembling code literally up to the moment the computer was on the table and we were ready to start letting people play the level. The enemies weren’t in the game, but the hero had walking and jump animations.Without a minimum Viable Product (one of my least favorite terms of all time), we would have been sunk.
The team kept working on the code after the jam started and eventually replaced the red squares with enemies that have their own animations. It wasn’t necessary to have the game “playable,” but it did make the game more fun.
Watching people play the game resulted in adding some extra enemies and moving some platforms to make getting to the end a little more challenging, which was easy to accomplish thanks to the level planning.
In the end, our team had a title “Team Pygame-Maniacs” and the game had a title too, which was “Institutional Escape.”
At the end of the jam, we won Best Overall Game, which was extremely flattering and was a testament to how well everyone was able to work together. The first thing we did after our win? Start discussing adding in the features that were left out due to the time constraints. We will be presenting the game again on July 8 at the Flatiron School, so we have some time to make those ideas work.
With one game jam under my belt, I have a better understanding of how to approach my next one. Discovering the most basic version of whatever you’re going to make is the most important thing you can do to be able to hit your target deadline.