Updated: Mar 6, 2019
Week 2 of One Game a Week 2019 is in the books! So how did it go?
In terms of trying to hit the objectives I set out for myself at the beginning of the week, this project was a failure. I ended up having to bail on my plans for procedurally generated mazes -- instead, my final game has levels crafted by hand. I guess this was a successful week insofar as I managed to complete a game this week and learn a lot in the process -- and I'm glad I managed to pivot to hand-made levels early enough to still finish my game on time. Unfortunately, I ended up having to cut most of the major features I'd hoped to include. I even had to cut a lot of the minor features, too.
Despite my struggles with this game, I'm looking forward to sharing it -- I hope you enjoy it! Before I get to the game link, I did have one thing I wanted to mention first. I plan on releasing all of these articles and games for free -- I want everyone to be able to read this content and play the games. Having said that, if you would like to support the One Game a Week project, I'd really appreciate it. When you go to download the game (link below), you can play the game for free, but there's an option to make a small donation. If you've got a few dollars to contribute toward the creation of these games and articles, I'd be very grateful for that. Thank you very much to anyone who is able to support the project!
Without further ado, I present to you a link to my second game of One Game a Week 2019: MAZES
I've made this game downloadable for Windows and Mac -- for Windows, the game will be in a .zip file, so you will need to extract the contents before you can play it. On Mac, the game will be a .dmg file. Please feel free to reach out if you have any issues getting the game to run on your system.
I'll also issue a SPOILER ALERT!! for the rest of this article!
From this point forward I'm going to be talking openly about the game and some of the maze solutions -- so if you want to play the game before reading any of that material, go play it now before you read on! Game Link right here!
Aggressive Feature Removal
When I look back on my development process for this past week, I think that I did not have the appropriate sense of urgency when it came to content creation. Part of it was due to my reliance on procedural generation -- I sort of thought that once I figured that out, I'd mostly have my content in place. Naturally, when I had to shift to hand-crafted levels, the time required increased. I probably should have decided to make the switch earlier when I was having some problems with generating compelling levels, but I just didn't appreciate how much work was left to be done.
In order to actually get my game to a finished state, I had to cut a lot of functionality. For example, I ended up cutting enemies from my game entirely. Although the focus of the game was always meant to be exploration, I thought that I could increase the challenge and sense of urgency and action in certain areas by including some baddies. In my previous maze games I made on paper, these enemies were primitive shapes and only had basic movements, so the art and programming requirements would not be very large -- but I ended up not having time to create even a very rudimentary AI for them, so I ultimately decided to just cut enemies entirely.
I also had a few nice little touches I planned to add -- one of the noticeable ones will be the color of the main character. I had planned to match his color to the primary color of each level, but I ran out of time to do that too. This results in a visual experience for the game which is a bit harsher than I'd hoped, particularly in the red level -- apologies to any color-blind players. I'll try to take some time at some point down the line and alter the art style or make a mode that's a little easier on the eyes or more accessible to people that might have problems with the game's reliance on color.
This game was a great lesson in the amount of "extra stuff" I'd need to do for my platformer to be compelling. I knew I needed to implement keys and locked doors, and I'd hoped to include enemies, but there are a lot of little things that help make platformers special that I'd not considered -- maybe ladders, or trampolines to jump higher, or areas where the gravity is different. I didn't realize until I started making my levels how much these little flourishes accomplish in terms of diversifying your levels and creating new challenges for the player. I tried to make some tricky maze layouts, and I have a few sections where you need to jump very accurately to progress --but without any additional challenges or twists on the core mechanics, the space in which I could create levels was somewhat limited. I guess I know for my next platformer -- those little flourishes take time, and it's important to plan for their inclusion.
GameMaker macOS builds are a huge pain
I do most of my development on a Mac, and a lot of the people that play my games use Macs. So of course I wanted to create a Mac build of my game. In Unity, this is very very simple -- but in GameMaker, this was a huge pain in the ass. Getting a working Mac build for MAZES was a very, very annoying and time-consuming task.
I first struggled through a ton of problems with code signing -- I eventually found a guide for this that was pretty helpful which was created by YoYo Games (the creator of GameMaker). You can see a link to the guide here: How to compile your app for macOS.
It seems like there are a couple of ways to go -- you can compile it using the "VM" setting, and GameMaker will do the code signing for you. Or you can compile it with the "YYC" setting, and go through Xcode to get all of the code signing set up yourself. I first tried doing this through the YYC option -- for some crazy reason, though, this setting broke my game -- after the title screen, the whole game screen went black. I have no clue how to fix this -- I decided to just try using the VM setting instead.
I eventually managed to figure out what code-signing values GameMaker wanted me to include, and I got a build which worked fine on my machine. So I zipped it up, and uploaded it to itch.io -- but when I downloaded it and tried to run it, I was greeted with this informative error:
After a lot of Googling, I eventually figured out a solution -- the way that the project behaves when compressed into a .zip file causes this error. If, instead, you put your Mac executable inside a folder and use the Disk Utility to create a .dmg file, it will work fine.
So, finally, after wasting many hours trying to get a working Mac build -- I finally figured it out.
A Wonderful Creative Surprise
I have spent a lot of time for this project scouring opengameart.org and other websites to try and find some art, music, and sound effects to use in my game. Along the way, I discovered something really lovely that I wanted to share.
One of the audio tracks that I found (and used for the title screen of my game) was from this collection. A lot of the music tracks on opengameart.org are just one-off creations or part of a small group of songs -- but this seemed like it was part of a much larger collection. I first came across this music several months ago and bookmarked it as something I might be able to use for One Game a Week. At the time, I investigated the source of the music a little bit, and was delighted with what I found.
It turns out this song was from a soundtrack -- a soundtrack composed for a game that doesn't exist. The name of the game was "Poupi's Incredible Adventures". I highly encourage you to take a quick look at this project -- it's simply delightful. Here is the link to the soundtrack homepage.
I know that sometimes people create music for hypothetical games or games they plan to eventually implement, but this was on a whole other level. All told, there were 70 tracks for this game -- and not just tracks that could be easily mistaken as something written for another game. The track names each were labelled for specific game scenarios like "Poupi goes to space" or "Poupi surfing". Some of the tracks have little high pitched chirpy dog-barking sounds -- very clearly intended for this particular game. The really incredible thing, though, is that all of the tracks from this soundtrack are public domain -- anyone can use them in their work.
Anyway -- I just wanted to really give a round of applause for the creator of Poupi's Incredible Adventures. The artist is listed as "Komiku". I thought that your work was incredibly creative and unique and it really just captured my attention in a way I can't explain. It was beautiful, it was wholesome -- and it really felt like a wonderful creation just for the sake of creating something cool. I find myself examining so many assets through the lens of their utility -- "oh, this sound effect will be great in my game" -- but such an elaborate soundtrack for a game that by the creator's own admission probably won't ever be made really reminded me of the beauty of creating great art for its own enjoyment.
So thank you Komiku for making these songs public domain for people to use, and thank you for your inspiring work!
Wrapping up Week 2
Week 2 was a challenging experience, but a highly valuable one I think. I feel like my brain is back in the GameMaker space and I certainly learned a lot about the little considerations for both creating mazes by hand and by algorithm, and also I learned a lot about creating interesting platformers.
I'm very much looking forward to my next platformer game so that I can start with all of this knowledge in place, with a set of mechanics that are ready to use, so I can focus more on crafting great levels. Having said that, though, I am definitely proud and excited of what I came up with this week!
So that's it for OGAW 2019 Week 2! Thank you very much for following along -- and I hope you enjoy/enjoyed the game!
Here is the link one more time in case you haven't played it yet: MAZES
Also, in case you missed it -- here is the link to last week's game: Curious Castle!
All right! After a tough week, I'm ready to tackle a new project. I'll be back later today with the theme announcement for week 3!