Metroidvania Month 15 - Game Jam Entry VoidRift - Postmortem


That was a blast!!

This was a first for us in so many ways:

  • First time Game Developers
  • First Time using Gamemaker Studio 2 in production
  • First Time working in a team
  • First Time Game Jam
  • First Time using Music Software DAWs (Digital Audio Workstations) with loops and sounds
  • First Time doing Pixel Art
  • First Time Autotiling

The only thing that wasn't a first was playing other people’s creations.  That was unexpectedly awesome considering I usually hate playing alpha and beta builds.  Something about the comradery of being in the trenches together really made it special and feel so much different than before.

I felt as though we were part of a community of people doing something special. The fact that we all left feedback for one another was an important part of the process.  It was endearing and I was so grateful to have others experience our creation. It was valuable and motivating to have others see the potential and the things we got right despite the bugs and other issues that plague a game during the beginning stages of its life and the development of the developers making it.

There were several challenges with this jam and mistakes that we made during the jam that I would like to mention here.  First, the biggest issues were associated with developing the game using an engine we have never used before.  While that is part of some jams, it was interesting to constantly be reading the documentation, looking up examples and plowing through various things that we had no idea if they would work or not.

During our test level, we were able to get most of the weapons, enemies, and collisions worked out.  Simple, right?  We then focused a large amount of effort on getting up to speed with implementing graphics and messing with Gamemaker Studio 2’s Autotiling system.  Very cool stuff, but we had a lot of interesting head scratching moments trying to get the tilesets just right.

Once we got the basis for the base level tile, we set about to build the first main area map. I did not realize how big it was in the concept drawing.  Building it was a bear of a task, and we had it laid out to be pixel perfect.  It took me well over an hour to count and draw each tile for the basic outline in the demo.  Midway through the process, I got a massive hand cramp (also might have been in the wee hours of the morning) and had trouble continuing.  Thank goodness I had a drawing tablet, that allowed me to finish the drawing of the level with relative ease.  Still very time consuming, but something that I would recommend to anyone – a $50 tablet is great for any kind of digital creative.

After the amount of work drawing all of that, I didn’t want to essentially redo all of the tiles with a "objSolid" object overlay as we had built the demo level/area with.  This is where I should have used Git and forked my code (I implemented Git Desktop during this procedure but am a stark novice with it).  Another piece of software that, while great to have and use, added to the complexity of the project.  Still, it saved my butt later when I modified some code and had to get it back (only used the history view, not restore commands - as I am a timid novice).  Anyway, I wound up switching all of our main collision code to be tile based on a tutorial I found with Pixelated Pope from YoYoGames.com.  It seemed legit and worked well… but now there were issues colliding with anything and everything that wasn't a tile!  I clearly did not understand collisions well enough to get the code working right again.  Too many bits of code were converted in the midst of my "brilliant idea" to perform a global search and replace… Whoops! 😉

I would say that it is not wise to change so many systems simultaneously and without testing at several points during the process. Cue Homer Simpson - "Doh!" I think we would have been better served to keep what worked, or to fork the code and revert to the branch without the code that didn’t work or that made things so buggy.  Lesson learned.  Now I just need to carve out some time to play with Git.

On a side note, it was really motivating to see how much code was changed with each commit – sometimes it's hard to see what you have done or how much progress was made without that… especially when you are cleaning things up and changing things around that do not necessarily change the basic gameplay when you test.

The backgrounds with autotiling also presented many challenges from being a "blah, well, it just looks solid…" to a cool, though completely off, design using a lot of sharp wide angles.  At the very last point before submission, we trashed all the backgrounds, but left the stars animating, which caused a visual SNAFU that left users feeling nauseated and marred the playability of the demo.

We decided early on to have a modular character so we could swap out and add pieces, armor, etc.  Both cool and easier to add things without having to redraw everything.  While this seemed like a good idea early on, it presented a host of issues with animation and collision detections.  We are still not sure if using this method will be viable long term but are going to move ahead with it as it's a neat concept.  If anyone made it to the first boss, he is also in several pieces that must be destroyed to beat him.  Hint - there are much better weapons than the first canon to aid in his speedy destruction.

Making music for the game was a blast! It was fun to get back to my DJ roots.  I had a much better time than expected, and I am proud of how the first track turned out.  Ideally, we will have a full album, but I also want to experiment with adding and mixing loops I create to add a more dynamic feel to the soundtrack of the game.  I think I am excited and intimidated about implementing this, so we’ll have to see where it goes.

The last, arguably game-breaking bug was the fact that something caused an infinite loop in the room/camera manager code and the ability to load the last room.  It's sad as it completely messed with the ability to:

  • See when you died
  • See the end screen
  • Easily restart
  • Easily exit/quit

As it is, the game pretty much freezes and we throw up a static image with our info on it.  I was too tired and frustrated at my lack of ability at the tail end of the Game Jam to get anything else working. I was even really stumped at how the image didn’t display properly with my hacked-in solution to display something upon player death. I called it at the same size as the screen/view size, yet it took up half the screen.  This kind of kills the experience, but I suppose it's not an uncommon thing, as I have seen similar issues in other jam entries I tried.

Lesson Learned: Make sure the game can properly flow from Init -> Title -> Game -> Game Over.  Constantly check this so you know where it all went wrong, and you are not struggling to figure it out hours before you crash from no sleep trying to make the deadline.

Oh my - also vital to get good rest and take adequate breaks.  You can screw up a whole lot of stuff that you will not have the energy to fix if you are not careful.  It's like trying to swim too far - you just will not be able to make it back to safety exhausted.  Furthermore, the mental exhaustion from staying up late and taking poor care of yourself takes time and energy out of the next day(s).  So be prepared for that if you do stay up.

Lesson learned: Get rest and have good habits.  Take breaks.  Eat well.  Shower.  Profit.

I think we placed rather well; all things considered.  36th     place out of 71 entries. We fit nice and snugly in the middle which is a huge accomplishment as first-time developers. We will only go up from here! My personal goals are to get better at GML, Gamemaker Studio's native language that is similar to Javascript.  Specifically, I need to understand collisions better.  Additionally, I plan to practice using Git so I am more fluent in the program. Git is a helpful and powerful tool that can help me to both become a better programmer and allows me to manage my code in a way that I can try massive changes like the tile collisions without completely tanking the project again.  Because that is not fun the other way around!

Files

voidrift_prototype.zip 17 MB
Mar 18, 2022

Get VoidRift

Leave a comment

Log in with itch.io to leave a comment.