Tuesday, June 28, 2016

Shimmerblade: A Side-Scrolling Platform Game

One of my newest and more promising game prototypes is a side-scrolling platform game, using retro 2D game mechanics (reminiscent of the 8-bit and 16-bit era of gaming where side-scrolling platformers dominated), while using 3D models and modern graphics techniques.

The game is inspired by some of my childhood gaming memories, borrowing ideas and elements from (apparently quite obscure) games like 'Wonderboy in Monster Land' and 'Wonderboy 3: The Dragon's Trap', both of which I played extensively on my Sega Master System back in the early 90s.

Wonderboy in Monsterland

Wonderboy 3: The Dragon's Trap

I started work on it in early February of this year (2016) and made significant progress between then and the end of May (realised that you can get a lot done in four months if you push really hard, start with a lot of good content, and make good re-use of code from previous projects). During the early stages the focus was on implementing basic side-scrolling platform game mechanics. I re-used some code from one of my projects from a few years ago called 'Shroomsters' (albeit with a fair bit of modification).

I'm targeting PC for a change so that I can focus on nice visuals without too many limitations. It's a nice change from mobile and allows me to not worry about overall scope and technical limitations as much.

I put a lot of work into the visuals -- tweaking materials, coding up various shaders and getting the post-processing effects looking good. The scenes are crafted by hand (with the help of some high-quality outsourced art). I've made use of various post-processing effects, including bloom, screen-space ambient occlusion, radial light scattering (sunshafts / god rays) and FXAA (anti-aliasing achieved via post-processing).

The scope of the game is quite a bit larger than other projects I've focused on in the last two years or so. Previously I had made the decision to deliberately scope down my games because my older, more ambitious projects turned out to be too much work to complete by myself in a reasonable time frame.

As such, rather than working toward a complete product, my initial goal is to finish a vertical slice -- that is, a portion of the game (a quarter of the final game, for example) that is complete and playable in something resembling its final, polished form. From there I can release it as a demo and, depending on how the cards fall, decide how to proceed. Despite some solid progress, a lot of work still remains. By the end of May I had run out of steam and progress slowed, but I hope to get back into it soon.

On a related note, others seem to share my enthusiasm for the Wonderboy games and have also begun working on similar projects. These are larger companies with teams of artists working on them full-time, so even attempting to compete with them would be futile. Fortunately, I've taken a fairly different approach and so mine has a very different look and feel.

I definitely plan on playing the aforementioned games when they're ready though (they both look amazing). One is Wonderboy: The Dragon's Trap (a modern remake of the original Wonderboy 3). The other is 'Monsterboy and the Cursed Kingdom' (inspired by the original, rather than being a remake).

Saturday, June 18, 2016

The Bloody Glade 99.9% Complete

I just realized that it has been about 9 months since I posted about the progress of The Bloody Glade. At the time I estimated it to be 80% complete. For the most part that was accurate -- as with most projects during the later phase it became difficult to maintain pace and focus, so I took a break from it to focus on other projects and allow my enthusiasm for the project to be naturally rejuvenated.

I find that pushing myself too hard with a single project for too long eventually starts to rapidly diminish how much I like the game and to hinder progress. Taking a break and coming back to it later gives some perspective and a fresh eye.

I recently took to fixing those bugs and issues that I had been avoiding, and added a bit more polish, tweaked the gameplay and stats a bit, and removed a few game mechanics. One of the main mechanics I disabled was quick-time events for spell-casting. Previously you'd need to perform rapid tap or swipe motions in order to successfully cast a spell. In theory it sounds good, but in practice it felt like it interfered with the flow and pace of the game. So I decided to streamline and simplify it. I find the new, simpler version more fun.

A big problem I faced was performance on mobile devices. I found that creating enemy characters on the fly, as each stage progressed, was creating lag spikes and momentary freezes. It was nothing dramatic, but enough to provide an inferior gameplay experience to what I was experiencing on PC. I eventually found a simple solution -- simply pre-spawn all characters at the start of each level and enable / disable them as needed.

I've finished creating the promotional content and have thoroughly tested it on iPad and iPhone. There was an obscure crash that was happening during the final boss battle but, I think I've fixed it now. Another round of testing should verify this (hence me not making the 100% complete claim, and saying 99.9% instead).

That makes two games pretty much ready for release: McGrimm's Time Trap (yes, I still haven't released it) and The Bloody Glade. I'm still deciding which to focus on releasing first.

Sunday, May 8, 2016

McGrimm's Time Trap

Last December I was on a plane returning from Cape Town to Durban and I spent the time contemplating game design ideas. The concept I came up with was a simple action-based evasion game where, instead of having computer-controlled opponents, it stores and repeats player-generated gameplay. Basically, you become your own opponent.

This evolved into a time-travel based concept where the player is cursed to repeat the same scenario over and over again (like in the movie Groundhog Day). Except, in my game, your previous incarnations would still be present. Occupying the same space as your previous selves would disrupt the space-time continuum, and so you must evade previous versions of yourself.

On the technical side there was a bit of work involved in order to store and replay the player's actions in a way that would not be too memory-intensive, but at a high enough resolution so as to be accurate. Fortunately it ended up working well without much hassle (basically I just store snapshots of the player character's state periodically and then, when replaying, use interpolation and extrapolation for generating state information between snapshots). The core gameplay was done over the course of the next few days.

Of course, adding polish and getting something that is bug-free and fluid enough to release ends up adding significantly more time to any project, and I (like many developers) tend to lose interest and thus neglect most of my projects after the initial creative proof-of-concept phase.

But I've been trying to be more disciplined and follow through on my projects, so I recently spent some time getting the game ready for release on iOS. It's pretty much done, I just need to push through that last cumbersome step of actually deploying it.

I struggled to think of a good name. I ended up going with "McGrimm's Time Trap". I  don't dislike the name, but don't think it's amazing either. It sounds pretty generic, but I can't think of anything better.