1 Game a Week – Week 1

Today I finished my first game as part of 1 Game a Week! It’s not much, just a small platformer prototype, but I’m glad I got it done (especially considering the trouble I was having with one last bug). I learned about 1 Game a Week during a short consultation with Rami Ismail (@tha_rami), where he told me that it’s one of the best ways to improve one’s game programming skills. As someone who is trying to improve his skills to get into a game programming position, this felt like the perfect challenge!

The level once the player starts the game. The active layer is orange.

This is going to be a short post mortem where I describe what went well, what could have gone better, and what i learned. But first, some background on the game itself.

What is this game?

This untitled game is a basic 2D platformer prototype. The mechanic twist is that there is an active and inactive layer in the level, and the player character can swap the layers each time they jump. The original idea was that it would setup situations where the player couldn’t rush their way through the level, but they had to think ahead of what jumps they’d have to make. The original idea also included having the inactive layer get swapped out with a different layout when a goal was reached, so that the level would evolve over time. However I barely got this demo level finished, so I didn’t have time to implement the other mechanics.

Gameplay demonstrating the layer swap mechanic

What went well

I’m glad that I finished something playable before the end of Sunday, considering my motivation on Friday was quite low. Thankfully I was able to force myself to get something done by the deadline!

My main goal was also to actually program a collision detection and resolution system for a 2D platformer instead of relying on Unity’s 2D Physics System. I accomplished this, although it only works for AABB colliders. I wouldn’t have been able to do it without this video from OneLoneCoder.

What could have gone better

I think I could have managed my time better. I spent waaay to much time trying to get the collision detection working perfectly, and even then I only got the last major bug fixed an hour before writing this post mortem. Ideally, I would like to finish up games on the Friday instead of on the weekend so that I don’t burn out.

I also should have also had a stronger game design idea coming into this project. I really just wanted to program the collision detection system, but that’s just basic tech there to support the gameplay. In this game’s case, there isn’t really any gameplay other than jumping around the level and trying to break my collision system (please don’t!!!).

What I learned

I learned how to write collision detection and resolution for a basic 2D platformer! I also learned how important it is to have an actual game idea coming into the project at the beginning. Next time, I’ll focus on the game design first and then build the systems around that, instead of deciding to “make a 2D platformer”.

Summary

If you got this far, thanks a lot for reading my first post-mortem! If you’re interested in more prototypes, I’d love if you stuck around for next week’s game (which I hope will go a lot better than this one).

And of course if you want to try out the game yourself on a computer, the link is right here:

1 Game a Week – Week 1

Platformer Prototype

Available now to play on your browser

If you wanna play around with the code, I also have a link to the GitHub repo if you click here!