Haven’t posted on here in quite some time! It’s been a while since I’ve taken the time to work on anything game-related; with the newest gm(48) rolling up and actually having a (mostly) free weekend I figured I would try it out. Once the theme had been announced – “Top Down _______” – my immediate thought was: “not gonna do a shooter.”
So, what to do?
Well, I decided I would try my hand at one of the “perpetual falling” games but with the added twist of swimming against the flow and collecting items in order to allow passage to the next level. And, with the theme of “top down” I also had the errant thought of the digestive system… going from top to… bottom. Of course the best way to accomplish this was to have the player be a parasite which infects cells in each organ, fend off white blood cells, and escape through an orifice to the next organ. I had the gameplay aspect and the thematic design in mind but as I hadn’t fully settled on the notion until well into Friday evening. I decided the best course of action is to get some sleep. I planned to rip into the game first thing Saturday morning.
Saturday, April 18th
9:35am – As I previously mentioned, it had been quite some time since I had actually taken any time to mess around in GameMaker: Studio. This naturally meant that I was extremely rusty and had to spend quite a bit of time reviewing things that I should have inherently known from making projects in the past. The code for the game itself is actually fairly simple – I just had to re-learn how to do the things I wanted to do. Fortunately, what this vacuum of knowledge did give me was the opportunity to understand how to utilize global variables effectively across multiple objects. Unfortunately, this knowledge was not truly practiced until after the jam was already over (more on that in a bit). Regardless, most of my Saturday morning was spent researching how to accomplish exactly what I needed to do to pull this thing off correctly.
12:35pm – By the time I felt sufficiently renewed in my (extremely) limited GameMaker skills, it was midday Saturday and due to my timezone, I had only until Sunday at 5pm to finish. I spent most of the day on Saturday working on getting the movement engine down and creating extremely simple AI characters that would attack the player. Originally, my plan was to manually place the “white blood cells” around each level but shortly thereafter I had the bright idea to create a generator object that would randomly spawn enemies around the level (always below and off screen) to give a minute sense of randomness. This proved to be part of my undoing, as I had never truly done this before. My lack of experience coupled with some really odd bugs of how it actually generated the enemies led to most of Sunday bug-hunting. By the time I settled for a system that I could at least accept (even if it wasn’t actually what I had originally intended), it was mid-afternoon on Sunday. Talk about puckering of the butthole. From here on out, I slammed everything into high gear and, unbeknownst to me at the time, truly sealed my fate.
Sunday, April 19th
4:15pm – I attempted to make a rudimentary menu and a rudimentary victory room if the player is able to beat all three levels. Unfortunately, due to the way I originally handled global variables and the related objects, I ran into bug after bug until I decided to just throw enough objects into each room to just get the error codes to stop propagating. At this point, I am literally sweating from the stress of finishing on time and submitting my bug-filled mess of a game.
4:35pm – My previous attempt at menu and victory rooms had the unintended side effect of skewing all my HUD text into seemingly random spots depending on if the player died, restarted the room, or achieved victory. I said “screw it” and would just note the known bugs in my submission.
4:55pm – Good, I still have five minutes. I jaunt over to the GameMaker subreddit and start writing my post as my executable is uploading to my VPS. I realize that I wanted to make sure the subject line of my post was correct, so I take a gander at another submission on the site and happen across a comment that explains the new submission rules that weren’t in the sidebar. Shit.
5:02pm – Welp… I log into the new submission site and see that I missed the deadline by a matter of seconds. Because I looked in the wrong place for instructions on how to submit, all the stress and frustration felt like it was entirely pointless. I breathed a great sigh of defeat, saved my project, and closed GameMaker down. I need a beer.
Tuesday, May 5th
gm(48) finished on Sunday April 19th. I began working on a different game a few days after it finished in an attempt to wash the experience out of my mouth. As I continued working on the project, I began realizing that a lot of what I was doing for this game could be applied to my failed project. So, I set aside my current prototype to go back and see if I couldn’t fix the issues I created in my rush a few weeks prior.
I’ll be honest: it’s amazing what one can accomplish when stress is no longer a factor. I revved the project back up, played the build and realized what was causing the HUD text issue immediately. Boom, fixed. Gaps between walls that kill the player are too tight. Boom, fixed. You can now actually beat all three levels! The player’s attack could be generated as quickly as one may click the right mouse button. This has the unintended side effect of making it less challenging and more just a simple click-fest. Boom. Fixed. Other updates to clean it up:
- Added a splash screen after creating a simple logo; not a graphic designer but ah well… it worked.
- Added a full menu system (thanks to Shaun Spalding’s tutorial!)
- Added a cleaned-up victory state
- Added a cleaned-up “you’re dead” message
- Added a clearer explanation of the controls, goals, and ways to die
- Added a recharge bar to indicate when the attack is ready again
- Added sound effects
- Added music (thanks to Bensound at http://www.bensound.com/royalty-free-music)
- Disabled admin controls (so the player can’t just immediately hop into the victory state)
- Fixed a bug where white blood cells stopped spawning once the room’s limit had been initially reached even if they’re being destroyed
- Reconfigured all object masks to provide a bit more forgiving collision detection
The completed game can be found on my itch.io page.
At the end of the day, the game was a good experience. Mostly, it was a personal lesson to myself that I should stop being lazy so that I stress less during the next game jam.
Things have been extremely hectic in my personal life lately! As such I haven’t been able to post updates to this page as much as I’d like during the haphazard development process for this game. During this time, however, I’ve been able to complete v1.0 of the Legend of the Strigiformes prototype. I’m not entirely sure if this is something I’ll pursue as a complete game or simply use the experience here for future projects, but at any rate I’ve completed four distinct zones (home, forest, desert, and temple) as well as rudimentary AI for the enemies. Only one enemy type exists in the game, and it is set to be a homing missile. A small example of the weapons, HUD, and beginning room can be seen here:
This is an early preview of the basic movement for the as-yet unnamed protagonist in my mini “Zelda-like” prototype. I’m using this game as a basis for development of a larger, richer game later; for now, this is a fun side project that I’m going to use to hone my skills in GameMaker: Studio and also satiate my girlfriend’s request of a “game about owls”.
I decided during my original design phase that I wanted to have acceleration and deceleration in the character movement. The speed of these, as well as the overall movement speed, is still not balanced or final but rather placeholder while I work through the code base to get things where I want them. Regardless, I wanted it to provide a good feeling of movement without being overly noticeable. For now, here is what it looks like:
Again, this is very alpha as evidenced by the lack of HUD, enemies, and overall room design! What makes me most satisfied about this is it’s purely in code and not using any drag and drop features of GameMaker: Studio beyond creating an object init and an associated object Step event. The code, as well, is quite a bundle of elementary code which will be cleaned up and optimized. For now, I wanted to quickly get movement, acceleration & deceleration, and collision into the engine. I also changed the mask a bit so that the player sprite would disappear a bit when on top of a wall, but would not necessarily overlap the wall when coming up from under it to provide a moderate 3D effect. This is going to need some tweaking as it’s extremely basic but the foundation is there. In the following weeks, I’ll be working on the following:
- cleaning up the movement code to make it a bit more optimized
- character ranged weapon
- character melee weapon
- three different and distinct enemy types
- two different environments
I’m looking for a fun, somewhat goofy theme for this game. This project is a sizable undertaking considering the previous game I created utilized a single environment and a single enemy type with two different movement types. You can check out the game Lumberjack Quest on this page, though fair warning: it’s extremely rough.