Sunday, September 30, 2018

Battlescape

Back in 2014 I started work on a real-time strategy game called Zyrtuul. I knew that it was too much work for a single person, but often I just want to work on what I love rather than focusing on what is feasible, so I went ahead anyway.

I made a lot of progress over the year, but eventually (and inevitably) I ran out of steam. RTS games are complex and a lot of work, so I chose to rather change course and focus on games with smaller scope that I could actually release.




Since then I have released a few games on iOS. But although I had fun with them (despite the torture of the iOS deployment process) the problem with games that are small in scope is that, put simply, I'm not really passionate about them. Often I ask myself, would I play this myself? And usually the answer is no. I'm into games with more complexity and depth, and those are the kinds of projects I'd like to work on. Those are the kinds of projects that challenge and excite me.





With the games market so over-saturated the chances of getting your game recognized are pretty low anyway, so I thought "well fuck it, I'm going to work on whatever the hell I please, it's just a hobby in my spare time anyway."

And so I resurrected Zyrtuul. Except this time I decided that I'd go all out and make it multiplayer.





Back in 2014 when I first started work on Zyrtuul I was still fairly new to Unity and C#, and the idea of RTS networking admittedly scared me off a bit. Fast forward to 2018 and I have a fair bit of experience with Unity and C#, and my way of doing things has shifted significantly (coding conventions, design patterns that work well with Unity's world-view etc).

And so... I decided to start 'from scratch' (create a new project) and just drag in / re-factor the useful bits of code. I also decided to expand the scope and go all out. I wanted to challenge myself -- multiplayer and the full shebang.

The new project's work-in-progress name is Battlescape. It's a squad-based multiplayer game focusing on co-operative gameplay. I've always loved games like Starcraft and Warhammer: 40k, and back in the day LAN battles of Starcraft were inspirational for me. However, they've become very niche and overly competitive over the years (for example, the only way to be competitive in Starcraft 2 is practically devote your life to the game). I miss RTS games. I feel that they have become a niche genre; almost abandoned.




So I'm thinking, why should they be? I love them. Other people used to love them. I honestly feel that the mutliplayer RTS genre does not need to be inaccessible or intimidating to average players.

My idea with Battlescape was to focus on the co-operative aspect of it. It's multiplayer RTS, but you're all on the same team working together to overcome increasingly difficult challenges. Team-work, camaraderie, low pressure and a focus on allowing you to easily choose to play with your friends as if it was an old-school LAN.





I've made some really good progress so far. I'm quite proud of my squad formation logic. You can change formations on the fly and the units handle it intelligently (I was tipsy when I wrote the code and had to do some fair bit of math-wangling with a fuzzy brain). The core logic of the game is in place. However, as with most pet projects of large scope, I ended up burning myself out a bit.




I'm still in love with this project, but I've decided to take a break and come back to it later with fresh eyes. Also, I have unfinished older projects which (as with this one) I've abandoned due to burn-out. They need to be re-visited. Check out my posts on Araxxis Squadron and Lyntheria for more info.




Sunday, August 20, 2017

Lyntheria

Back in about 2005 during my very early days of tinkering with game development I put together a puzzle game called Lyntheria. It was the first complete game I wrote, using DirectX 8 and knowledge acquired during my Computer Science undergrad degree.


It was very rough around the edges and unpolished. At the time I thought fixing the resolution to 800 x 600 was perfectly fine, and I hadn't yet encountered the concept of making the gameplay frame-rate independent. And so... the original game is pretty much completely unplayable now.




Often you'll have a grand idea for a game, but upon execution you find it's not as fun as you imagined. Lyntheria wasn't like that. With Lyntheria, when I shared it with my friends I found that it sucked them in.


Getting people to pay attention to a game you've made is often difficult, but with Lyntheria people seemed to take it as a personal challenge, even sharing it with wifes and girlfriends.





Looking back I decided to see what it would be like if I re-created it with my current level of knowledge and experience. This was during 2017.


I really loved the result. It's a simple game (though some of the puzzles are mind-boggling at times, even to me, the creator of them). It was pretty much complete as of late 2017, though I never ended up releasing it because I wasn't sure if there is even a market for these kinds of games nowadays.





Often when I work on a game I'll have a period of intense involvement and focus, but I'll burn myself out on it (especially since I'm doing it outside of normal work hours). I tend to jump onto other new projects and then forget about my previous projects.





In retrospect I decided it's wasteful to spend some much time on a game without at least attempting to make a go of it, so I've decided to resurrect the project and try release it on Steam.




It has a puzzle editor (the same editor I used to create the puzzles). I've tried to make it user-friendly so that players can create their own puzzles and even upload them for their friends or other players to try. The process is pretty simple (one-click really). The main difficulty I faced was preventing unsolvable puzzles from being uploaded. I solved this by requiring the player to play and solve their own puzzle before allowing them to upload it.







There is a single bug remaining where very occasionally reversing gravity in some puzzles doesn't allow the puzzle-matching logic to execute correctly. In addition to that I added an additional campaign at the end without creating new puzzles for it (feature creep!). But on the whole it's very polished and the closest I currently have to something ready for release.


I'm thinking I should probably put my more glamorous and overly ambitious current pet projects on hold and focus on releasing games again. Anyway, enough rambling. Here are the remaining screenshots.























Sunday, February 12, 2017

Araxxis Squadron Alpha Completed

I've completed the alpha build of Araxxis Squadron and plan on uploading it to get some feedback soon. Here are some screenshots...













Saturday, January 28, 2017

Araxxis Squadron

My real-time strategy Zyrtuul was probably my favourite project. However, over time I came to realize that the scope of it was too large and that, as a result, it was unlikely to ever reach completion. So I decided to cut my losses and put it on hold indefinitely.





Out of the ashes rose a new, simpler game, Araxxis Squadron. I had put in so much work on Zyrtuul, and didn't want to let all of that time and effort go to waste. So I salvaged the game and decided to convert it into something new.





This new game is called Araxxis Squadron -- Into Legend. It has the feel of an old-school arcade space shooter, but there are also strategic elements, in that you have to penetrate the enemy's base to destroy their outpost core. So it feels like what you'd get if you took the old Asteroids or Space Invaders games, and added in strategy elements.








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.