Author: Tom Baker

Tom is an avid gamer, hobbyist programmer and occasional blogger. His interests include staring at his Steam library, trying to decide what to play, and abandoning half-completed projects. He also suffers from the delusions that he is funny. He is a big fan of self-deprecating humour.

Humble Beginnings

This post is the first in a trip down memory lane, looking at how the Esther Drifters project got to where it is today.

In the last post I hinted that I’m under no illusions that this project is a massive undertaking for a single developer – especially one who works full time, has a family, and a long back log of video games I want to play – let alone build! Ten diverse levels of gameplay, assets, and story? I must be mad.

But here I am anyway.

So, where does one begin with a project of this magnitude? How do you get from “nothing” to “everything”?

From the very beginning, of course.

“Concept X”

Long before the name “Esther Drifters” came about, the project was known as “Concept X”.

“Concept” because it was a new concept I was trying out, and “X” because I already had one broken Unity project called “Concept” and I needed to name the new game something!

I’ve been thinking about the finished game for a number of years, but when I began, I pushed all dreams of pretty graphics and polished animations out of my mind, and replaced it with a simple mantra.

If it ain’t fun with rubbish graphics, it ain’t gonna be fun with good graphics

Me

I decided to begin with a simple ‘whitebox’ prototype to prove the cover-based gameplay, and slowly build up from there.

Looking at git, my first commit was on Tuesday 9th January 2018, and a day later I recorded the first gameplay video.

As you can see… there’s really not much going on there.

In this build, the player can right-click to have their blue capsule move around the Nav Mesh, automatically avoiding any obstacles. Meanwhile, the ‘enemy’ capsules will be moving randomly from point to point.

For anyone that’s stumbled across this blog and is watching the video and thinking to themselves, “Really? I could knock that together in no time at all!”, you’re absolutely right! That is the whole point!

The idea is to start somewhere. Break some ground. Lay a foundation. Commit something. Produce a build. Show it to your friends. Once you’ve done something, hell, anything, you can start telling people you’re a game developer.

Now that you’ve begun, the next step is easier. Simply build on what you’ve done.

Cover, States, and Commands

I produced the second video few days later on January 14th 2018, and visually there’s almost nothing new going on, but under the hood a lot has changed.

By clicking on the side of any cube, the player’s blue capsule will move into “cover”. The enemy AI no longer moves randomly, but responds to the players position, attempting to put themselves into a safe cover position – that is, one where the cover is between themselves and the enemy.

This piece of functionality is the very core of almost every other aspect of the game. Since then it’s been tweaked and adjusted dozens of times, but the basics and the code at the foundation have remained relatively unchanged.

By the time the January 14th video was recorded, I’d also built the core systems that governs player and AI behaviour alike – the State Machine and the Command System. The full implementation of these systems will be the subject of an in-depth technical blog post, but at a very high level, all behaviour for the player and enemy AI is described in a number of “State” classes. For example, while moving, actors are in the “Moving” state, while in cover they are in a “Cover” state, etc.

Moving between these states is handled by a system of “Decisions”, which are pieces of code which examine the state of the game and if certain criteria is met, they will return a new State to be activated.

As a player, input actions like clicking the mouse or pressing a button will issue a “Command” to the selected actor. The data structure for an Actor’s commands is a little odd – sometimes it behaves like a queue, other times it behaves like a stack. These Commands are used as part of the Decision making process of the State Machine and can trigger State changes. When a Command has been fulfilled, then it is removed from the Actor. Enemies work in exactly the same way, but rather than being issued by an input device, the commands are issued by an “AI Director”.

Again, this is core functionality that went in very early. The code was – and still is – pretty ugly and messy, but it worked. That became a second mantra for my development process:

Don’t let perfect be the enemy of good.

Voltaire

Rather than getting bogged down in making the code aesthetically pleasing, I hammered out something that worked and moved onto something new. Only when messy or poorly structured code became problematic would I spend time on fixing it. The goal, as always, was progress progress progress.

The First Arena

The final video for this blog entry comes from the end of January 2018 – the project is now three weeks old at this point.

You’ll see from the video that the game is still butt-ugly, but has moved from the single white square plane to a crude arena built entirely of Unity’s default cubes, flattened, stretched and rotated to create ramps and floors.

Arguably the most important feature of the game is now present – shooting, and how shooting interacts with cover.

In short, when shooting, if your target is behind valid cover, it is impossible to hit them. Conversely, if your target is out of cover, it’s impossible to miss. If you pay close attention, you can spot projectiles curving in mid-air Wanted style to chase down their victims. It wasn’t for almost two years that enemies started missing the player!

From the start, I’ve wanted to create an illusion of chaos in battles. Bullets whizz past the player, sparks fly and smoke fills the arena, while in reality the player is safe as long as they’re positioned well. I want to create space for the player to pick their moves carefully without having to panic and micro-manage their units. I still haven’t quite captured this feeling yet, but a future blog post will take a closer look at the steps I’ve tried to bring this feeling to life.

The End of the Beginning

A journey of a thousand miles begins with a single step

Lao Tzu

If you’re an aspiring game developer and you head to any game development forum, and post your grand idea for the next great MMO that you’re going to build single-handed, you’ll probably get laughed at.

Even pitching a project like mine will probably raise a few eyebrows if you’re an amateur just starting out (like me).

And honestly, that’s probably the right reaction.

I don’t know if I’ll ever manage to finish this project, but as I’ve mentioned a few times already, the goal isn’t the destination – it’s the journey. Hopefully this blog post has demonstrated that no matter how big or grand your plans are, the starting point looks pretty much the same. Start out small.

Prototype a single mechanic, and then another and another. Tweak, polish, experiment. Don’t worry about how bad your code is (yet), or how crude the art is. Just keep on going, and before you know it, you’ll be well on your way to be a game developer. It won’t be long until you can post screenshots and gameplay videos to those same forums, and people will start raising their eyebrows for an entirely different reason.

Introducing: Esther Drifters

Looking Back

Some time in late 2016, Project Ant began to run out of steam, as is traditional for pretty much any project that I work on. After over four hundred commits, development came to a halt and the project slowly gathered dust and faded into the background.

Despite it’s rather unceremonious end, I actually consider the project to have been a resounding success. I learned an incredible amount about Unity and game development in general, and proved to myself that I’m capable of producing at least rudimentary artwork suitable for prototype video games. I really enjoyed working on Project Ant, and might come back to it one day.

However, I’m happy to say that I’ve not been entirely idle. In January 2018, I started a new project.

The big one.

I’m here today to introduce “Esther Drifters“.

Esther Drifters

All the best stories start with a crash landing

Esther Drifters is a 3D Real Time Tactics Sci-Fi game where the player takes control of the crew of the Esther Drift, a former mining ship turned freelancer, as they get swept up in a planet-hopping adventure.

The Drifters are mercenaries who will take any job that crosses their path, be it from The Guild (the mining communities on the edge of the system who have risen up against their oppressors) or The Confederation of Planets (the system’s central governing body who wish to unite everyone under a single banner).

The four-person crew will each have their own play style and abilities, and the gameplay is focused on moving from cover to cover, suppressing and flanking the enemy who will be trying to do the same to you!

Shooting from cover

This project is my most ambitious by far. It’s my first attempt at a 3D game. I’m an absolute beginner when it comes to 3D artwork – modelling, texturing, and animating. I’ve never built a linear story-driven game with scripted events and distinct levels.

As with Project Ant, the goal is to step outside of my comfort zone, and push myself to see exactly what I can achieve.

Looking Forward

So where do things stand right now?

I’m just over two years into the project now, and have committed over two hundred individual pieces of work, and at this point I’m getting close to finishing the first level of the game.

The long term goal is to have ten levels. The maths on that doesn’t quite add up, I know – at this rate it’ll take over twenty years to complete the project. However, the entire first year of the project was building up the initial systems, and I started over at least twice.

At the start of 2019, the game was a white-box prototype arena-style level, but over the course of the last year, I have:

  • Built most of a level, including all the systems needed to drive scripted events and cutscenes.
  • Modelled, rigged, skinned and animated the four main crew-members and an enemy soldier model.
  • Modelled and textured terrain, trees, logs, boxes, and two spaceships.
  • Built a new arena level for rapid prototyping of new mechanics.
  • Built an ability system supporting different abilities per-character either as cooldown-based or pickup-based.
  • Re-worked the enemy AI at least twice – and there are plenty more changes to come!

So, I’m hoping that now that I’m getting the hang of it, things might move at a slightly brisker pace.

Things don’t end well for this dropship

Currently due to the global Coronavirus pandemic and due to the birth of my daughter Sophie, the project is on a brief hiatus. I moved my desk and most of my computer equipment into a spare bedroom to make a home office, but left my PC behind. If I had brought that with me, I’d never get any real work done!

A Mexican Forest Moon standoff

So, in the meantime, to keep the project fresh in my mind, and to keep my own motivation and excitement up, I’m planning on writing a number of blog posts showcasing how the game is coming along so far, with a mixture of my thoughts on game design, and a couple of dives into some of the technical aspects of the game.

Hopefully someone out there may find some inspiration in the blog, and will realise that if someone like me can build something that looks like a game, then maybe they can too.

‘Til next time.

Watch this space

“Project Ant” has been mothballed for approximately 4 years (as evidenced by the lack of activity on this website). Fear not though, a new and shiny project has been underway for around two years now, and I will be sharing information about it here soon.

Project Ant Dev Update

So much for regular updates. It’s been over a year now since I last posted, but here I am again, and Project Ant _is_ still going. There were a few months at the back end of last year and the beginning of this one where I was distracted by, amongst other things: ‘Destiny: The Taken King’, ‘League of Legends’, ‘Rocket League’, the ‘Uncharted Collection’ and ‘Final Fantasies 7, 8 and 10’… Let’s just call it research?

Anyway, development is back in full swing again and there is actually a surprising amount to talk about, so read on to find out what’s new!

Read more

Overlapping Alphas in Unity 3D

In my last blog post, I unveiled the pheromone system and it’s accompanying overlay as a core game mechanic. The overlay was basic at best, and had one really irritating flaw – where two node’s pheromone indicators overlapped, the transparency is doubled. At best, this is pretty ugly, and at worst, it completely obscures the terrain behind it and ruins the data the overlay is trying to show altogether.

Note the hideous overlaps…

I searched high and low over the internet looking for an answer, but couldn’t find any decent solution to the problem. That is, until I posted on reddit asking for help, and a genius who goes by the name ‘Wompipomp’ came to my rescue. With his help, I came to a solution I’m pretty happy with.

Read more

Project Ant Dev Update – 29/07/15

Would you look at that? It’s almost as if I planned it! Not only have I managed to make it to a second dev update, but I’m also posting it (almost) exactly one month after the last one! Note that this isn’t a guarantee of monthly updates. They’ll happen as and when I have interesting stuff to talk about, and believe me, there’s plenty of interesting stuff (at least, interesting to me) in today’s post!

Read more

Learning to Walk Again

I’m a programmer, with barely an artistic bone in my body. Part of the big challenge of working on this game has been seeing just how far I can get by myself. The first tool I learned to wield was Inkscape which allowed me to create the SVG cartoon Ant sprite you’ve seen a few times in these posts already. My first attempt at animating that sprite involved manually creating 4 different poses in Inkscape and using Unity to switch between them. The effect wasn’t brilliant, but it served it’s purpose.

A couple of days ago, I spotted that Spriter was included in the latest Humble Bundle, so I snagged it and decided to give it a go. And this, my friends is the result:

Read more

Introducing: “Project Ant”

We all know by now how my projects turn out. Take this website for example, no posts since a one-off last summer, and then nothing for almost another year. History will probably repeat itself here too, so if you feel you’ve been burned before, then now is probably the right time to stop reading. If however you’re prepared to indulge me, this post will hopefully mark the first of a series of activity around my latest project, which currently has no real name other than “project ant” (on that note, if anyone can think of a decent name, please let me know!).

Read more

Generating 1D procedural terrain in Unity

Well, it’s been a while since I blogged anything. Partially because of laziness, and partially because I haven’t had anything very interesting to share. Recently though I’ve been dabbling in some Unity. I was attempting to create some 1D procedurally generated terrain, but couldn’t find much information on the topic on the internet. So, in order to help the next poor soul who attempts it, I thought I’d take a quick whirlwind tour through the process and it’s pitfalls.

Read more