Something went wrong. Try again later

MikeLemmer

Recovering from GotY

1535 3089 10 36
Forum Posts Wiki Points Following Followers

My First Gamejam

Nothing like a brisk deadline to light a fire under your ass. That's how I ended up cranking out my first game in 15 years for the GiantBomb gamejam last week. The last time I coded like that was when I made a Team Fortress 2 level over Christmas break while going to Digipen academy; I ended up skipping meals and only getting 4 hours of sleep a night because I wanted to work on it so badly. I didn't do anything that extreme this time, but it had me driving home early from Easter dinner before I forgot a bug fix and staring up at the ceiling at night going through if-then statements in my head.

The initial idea came from Brad discussing the Barkerville song while Vinny played Simon's Quest. "It's where the werewolves live," he mentioned. That reminded me of another game for the NES called Werewolf: The Last Warrior, where one of the mechanics was switching between a human that was weaker but could use guns, and a werewolf that could jump high & climb walls, but only had a melee attack. I liked the idea of a Metroidvania-style game where your exploration options changed depending what time of day it was. However, I put the idea on the backburner until the GiantBomb gamejam arrived. It was more "inspired by" GiantBomb than directly connected to it, but I figured it was still close enough to qualify. So I booted up GameMaker Studio, opened a few tutorials, and got to work.

First thing I realized was how damn complex movement controls could get. Even a relatively simple set of controls, like Mega Man's moveset in Mega Man 3 (walk, jump, slide), grew in complexity with each added button. What happens when the player presses the right button while holding the left button? How much of a buffer do you give the player to press the jump button to jump again before they actually land? Do I make jump height dependent on how long the button's held? What happens if a player slides off a cliff?

Part of the player movement code
Part of the player movement code

It got uglier when I entered collision detection into the equation as well. Detecting (and correcting) the player running into a wall was easy when the player was only moving horizontally or vertically, but I never did quite fix collision correction when the player was moving diagonally. Do I move the player vertically first? Horizontally? Do it in increments until I find a point he doesn't collide at? I didn't figure out that answer before the deadline, which has led to... some occasionally weird glitches. Like a player trying to jump onto an elevated 1-block tall slide chute and blinking halfway across the screen, for instance. Or the player getting caught trying to jump onto a 1-block thick platform. Luckily, they weren't gamebreaking bugs, so I just let them slide in the rush to make something complete before the deadline. I have a lot more respect for the old NES platformer programmers now; getting running and jumping to act smooth & natural is insanely tougher than it seems.

My initial plan was to make custom graphics for all the characters (including making the saved werewolves caricatures of the GiantBomb crew), but I spent nearly all of my time on coding and building levels. I eventually ended up ripping every single character sprite I used from the Castlevania 2 sprites. The simple 2/3-frame animation loops were a godsend for quickly setting up something that looked decent, and while my game looks more like a Simon's Quest hack than its own game, the alternative was having a bunch of blocks jumping about. A lack of a sliding animation in Simon's Quest forced me to improvise, though; I repurposed Simon's "lying on ground dead" sprite as a rudimentary slide. I actually prefer my quick workaround over a more-polished animation; watching the character slide facefirst everywhere is amusingly stupid.

There was much more I had to cut out to make deadline. Dreams of dialogue, inventory, and trading quickly dissipated. I wanted subitems (the classic Holy Water and Boomerang) and breakable blocks, but I had time for neither. Dropping into a pit to access a new area? Quickly scrapped. My initial 12 zones dropped to a loop of 4. Lake and mountain peak environments were scrapped in favor of just forests and caves. My initial 4 enemies were whittled down to 2: a zombie that walked back & forth, and a bat that flew around a given area. At this point, I had 2 hours left before deadline. I spent nearly all of that placing the blocks and enemies for each level. When that was finally done and I had to test the whole game for the first time, it felt... fun. It wasn't as grand as I had hoped, but it handled better than several platformers I knew of and each zone was diverse enough it didn't feel like I was doing the same area over and over. It took about 20 hours of work to get there, but it was nice to know it all hadn't been wasted.

Building the zones
Building the zones

All that was left was adding some rudimentary music and Title/Game Over screens. Both were harder than I initially expected. I had permission to use Smooth McGroove's acapella versions of Vampire Hunter and Bloody Tears for the game, but I had forgotten to get permission to use the Barkerville logo from the GiantBomb user who made it. I ended up resorting to green text on a black background for the title and ending screens. Even though I had permission to use Smooth McGroove's music, converting it into a format my game could use still took effort. I ended up ripping MP3s off his YouTube videos, then running those through a free MP3 cropper to get 30-second clips of them. Their insertion into the game was even more important than the title/ending screens, though; not only did they make it feel like a proper Castlevania game, but the song change between day & night provided an audio cue for the human/werewolf changes I was missing. With that last bit in place, I quickly made a few balance adjustment, packaged the game up, and submitted it for approval... 10 minutes late. Still, I had finished my first game in quite a while and breathed a sigh of relief.

So now what? Well, the basics are in place to make the larger game I initially wanted to. Most of the graphics and code would have to be ripped out and redone, but at least I have a base to build from. I definitely want some time to refine the controls and collision detection, and then work on the enemies before I revisit the zone layouts. Who knows? Perhaps in a couple months I'll have something worth paying money for. For now, I'm just glad I've made something even slightly resembling the classic platformers of old.

Try out my game here.

No Caption Provided

17 Comments