Week 2 Game: MAZES
Hello! It's time to take a look at what I'm making for week 2 of One Game a Week!
When I started thinking about this week's theme (RETRO ARCADE), I started to think of some old-school games that I really enjoyed. My experience as a gamer largely begins with the Super Nintendo in the mid 90s, and those games aren't really thought of as "arcade" style. There are some games from a few years earlier during the the era of the original Nintendo that I've gone back and played, and some of those games really convey the low-fi arcade feeling I planned to emulate this week. In particular, I kept thinking again and again about the original Metroid game. I loved the idea of traversing the various caves and corridors of this dark, winding planet. I thought that this might be how I interpret this week's theme -- by building something that evoked the feeling of the original Metroid.
While it would be very fun to build a game that borrows the exact mechanics from Metroid -- shooting beams and missiles -- I started thinking about perhaps creating a different type of game that was less focused on combat and more focused on exploration. In thinking back to games I played as a child, my mind started focusing on another project I worked on in my younger years, circa 1997. I was in grade 3 at the time.
Long before I learned to program, long before I knew I could make video games, I used to make pencil-and-paper games for my brothers and friends to play. One of my favorite types of pencil-and-paper games to make was what I called "The Maze Game". I was obsessed with mazes and I would draw probably a dozen per week -- many of the mazes I drew were full of keys and locked doors, enemies to try and navigate around, and complex twists and turns and branching paths to try and disorient the player. I had a notebook that I would fill with my "levels" for The Maze Game, and I would have people sit down and trace through the maze with their finger. I'd sit with them and watch so I could enforce the rules and make sure they didn't cheat, and then once they got through a certain level, I'd flip the page to the next maze.
I think my love for drawing mazes might have come from my early love for the PC game Chip's Challenge -- that game was sometimes less about mazes and more about maneuvering blocks around, but the ethos of using your brain to navigate a space really hooked me as a child.
After thinking about my maze creating experiences for a while, I decided that for this week, my game would be to build an arcade version of my old maze booklet. I considered having the game be a top-down maze exploration game similar to Chip's Challenge, but my mind kept returning to creating some kind of platformer like the Metroid game. I decided to synthesize those two concepts --I thought it might be interesting to make a game where the levels are mazes, but the player navigates these mazes using platformer mechanics -- almost like a combination of Metroid and Chip's Challenge. That sounded interesting to me!
I decided that my second game would be called MAZES -- right to the point!
So now I had my idea -- my next step was to figure out the basic mechanics for my player to move around.
Setting up platformer mechanics
As is the case for many lifelong gamers, I've played a ton of platformer games in my life. Naturally, when I became a game developer, I was interested in making games similar to Super Mario Bros or Donkey Kong Country -- some of my favorite platformers of all time. However, this was one genre of video game that I'd always had a hard time creating. There are a ton of little problems you can face when trying to build a platformer -- it's a surprisingly finicky task to program the physics of a character running and jumping without having a variety of problems. And that's before we even think about writing code to handle things like sloped surfaces or moving platforms or any of the fun wrinkles we tend to think of as things that belong in a platformer.
My first main game engine that I learned to use was Unity, and I love Unity -- but in my experience, creating a platformer in Unity is a really painful process. For whatever reason, it was always a challenge for me to get a good set of platformer mechanics to work in Unity. I tried using Unity's built-in physics engine, but that always seemed to cause my character to subtly bounce in place, which was annoying. I also felt like the physics always felt "slippery" when you tried to get the character to stop. I even bought a set of platformer code from the Unity asset store which claimed to fix these problems, but after buying it and trying out the product, it was more of the same issues. I also invested a considerable amount of time trying to program my own platformer code from scratch in Unity -- but that was also pretty frustrating. I spend a couple weeks trying to re-implement the original Super Mario Bros -- as simple a platformer as you could get -- but there were a number of problems that were tough to solve. There's a great blog post I remember reading at the time that discussed how to overcome some of these challenges -- I followed the post's advice but it didn't really seem to fix the issue in all scenarios. I'll put a link to that blog post here so that anyone who is interested can see some of the problems I struggled with. A sample image from the article:
I'll readily admit that this is a flaw with me and my development skills, not a flaw with Unity -- there are platformers made in Unity that seem to avoid these issues, after all. For whatever reason, though, I could never really figure this problem out.
I eventually figured out a way to address this problem. After I created my puzzle game 4-Dimensional Design Studio for Ludum Dare 29, I remember going back and looking at the winner of that competition -- the winning game was called The Sun and the Moon and it was created by a user called Managore. I played this game and I was completely floored -- I couldn't believe that someone had created this game in just 48 hours. There were so many well-designed levels and such fantastic, stylish artwork. And to top it all off -- the platformer mechanics felt perfect.
I saw this fantastic platformer, and I wanted to know how the platformer mechanics were set up -- it turns out, it wasn't built in Unity at all. It used a different game engine called GameMaker Studio -- I had no experience with GameMaker at the time, but I decided that if GameMaker was good enough for this Ludum Dare-winning game, it was good enough for me. I spent several weeks learning to use GameMaker and build a small prototype with it -- and I fell in love. It was SO easy to build a platformer in this game. I spent about twenty minutes working through a tutorial video, and at the end of that twenty minutes, the platformer mechanics just worked. No caveats, no weird glitches, no unfixable behaviours -- it just worked.
I realized that if I ever wanted to make a 2D platformer again, I was going to do it in GameMaker studio.
One of the great things about the Compo rules for Ludum Dare is that you have to upload the source code of your game -- the idea is that other developers can look at how you achieved certain things in your game and potentially learn how to do them too. I've followed Managore's work in every Ludum Dare since that one back in 2014, and every single game he's created has been mesmerizing. I thought that a good way to learn how to build my own platformers would be to see how he structured some of his code and then work from that as an example.
One of his games that struck me as particularly engaging and beautiful was A Knife Made of Whispers -- even the name of the game is wonderful! I thought that this set of platformer mechanics felt sublime -- just the right heaviness, just the right jump height, just the right everything. I decided this would be the game I'd use as my learning example.
I've since found out that this amazing developer Managore is a guy named Daniel Linssen -- he makes amazing games and anyone who is a fan of indie games should check out his work. You can follow him on Twitter here and you can check out his itch page with all of his games here.
Thank you very much Managore for creating all of these wonderful games and for providing such a fantastic set of learning tools to the development community!
So I've been studying a lot of the tricks used in A Knife Made of Whispers, particularly focusing on the platformer mechanics but with also with a learning eye directed toward all the nice little visual effects and subtle animations that bring the game to life. I don't have too much to show just yet on my game, but I think I have a workable codebase at this point that I can use. I did sketch out some concept art which should convey a rough idea of what I think the game might look like:
In my next article, I'll focus a bit more on how I am generating the mazes for my game -- I'm playing with the idea of procedurally generating them, but we'll see if I am able to implement that functionality in time.
Until then, have a great week everyone! And if you haven't checked it out yet, you can play my week 1 game, Curious Castle, right now!