Gareth Williams

I Make Games

I make videogames, sometimes. Serial game jammer. Unity, C#. Made One Game a Month in 2013. Made PicaVoxel. Currently working on Jarheads. Senior developer at Future Visual.

Jarheads Dev Diary: The Story So Far

On Christmas Eve 2014, I quietly launched the first alpha of Jarheads. It's been almost sixteen months in the making to this point, and the Alpha represents the very minimum of the complete Jarheads experience and is the first time I have been ready to make it publicly available.

Now the fun really starts!

To go forwards, it's important to look back. Here's a breakdown of the history of Jarheads to date:

August 2013

In the run-up to Ludum Dare 27, and after finishing my July entry for One Game a Month, I started messing about with making a voxel engine - as was the technology du jour. I was attracted to the micro voxel style found in games such as Voxatron and began emulating that.

A couple of weeks later, I had an engine, a map editor and a "voxel sprite" editor all written in Monogame. I had a tech demo up and running that was loosely based on one of my favourite games from the Amiga days, Cannon Fodder.

At that point, the engine was stable enough to be used in Ludum Dare, which resulted in Spatium Secondorum Decem.

September - November 2013

Due to continuing participation in 1GAM, the game that was to become Jarheads took a back seatwhile I spent a couple of months trying my hand at HTML5 game development, and came 10th place in Ludum Dare 28

December 2013 - January 2014

With 1GAM complete, I started focusing on Jarheads (which had the codename "Kill All Enemies"). Over the holiday period I started implementing multiplayer using the Lidgren C# networking library. It was the first time I'd attempted to do networked multiplayer and all that entails. Great learning experience!

February - April 2014

Work continued on Jarheads throughout February, with multiplayer playtesting being done with a small closed group of friends. Implemented Team Deathmatch and CTF and an experimental points-based soldier stats system.

Ludum Dare 29 was at the end of April and I spent a couple of weeks beforehand writing a 2D pixelart engine in Monogame for use in game jams. It was the last project I would use Monogame for.

June 2014

After taking a holiday and a break from spare-time coding in May I came back to Jarheads development and was instantly roadblocked by some of the issues with getting Monogame games running on Mac and Linux. After a frustrating first week back, I made the hard decision to begin learning Unity.

By the end of June I had my voxel engine up and running in Unity and much of the initial work of porting Jarheads was well on the way to completion.

July - August 2014

Spent a glorious summer getting to grips with Unity and porting Jarheads across. I reached feature parity with the Monogame version on July 22nd. I used the Photon networking plugin and cloud service to implement multiplayer, and thus had to move from a client/server architecture to peer-to-peer.

I was initially impressed with NGUI, and used it to implement the in-game UI. While it was leaps and bounds ahead of anything Monogame/XNA had for UI development, had I known that the new Unity UI was going to be available in a couple of months I may have held off...

I spent the rest of July and most of August rewriting the editors in Unity and by the end of it, had a much nicer set of tools with which to take the game forward. Here's the editor in action:

September - December 2014

Work began on the real meat of Jarheads - the campaign. While I love the odd multiplayer game from time-to-time, I'm all about a good single player campaign and was excited to start getting all the ideas in my head into the game.

And that brings us to the Alpha launch. There's a number of features missing that will be in future releases and the final game. Co-op play is a big one. Vehicles and more mission objectives are also major additions, along with more multiplayer game modes.

If you're interested in following development more closely, I use Trello to keep track of features, tasks, bugs and work in progress. I also stream development over at Twitch.