Procedural Armageddon

Hey!  Listen!  

So I had a really great time at GDC this year – met loads of cool people, got some honest feedback, and went to see some really inspiring talks.

Overall the experience helped me to realise that I really need to push the boat out on my next game if I want to make any impact.  It’s the unique and risky stuff that tends to get noticed at the scale of development that I’m working at, and I’m not sure that Wind Racer fits the bill.  People were nice about it, but generally I’d say it got a lukewarm reception, whereas some of the other ideas I talked about really grabbed people’s attention.

To that end I’m putting Wind Racer on hold, and trying something new.  Without further ado, here’s an outline for the next game that I’m currently prototyping.

Procedural Armageddon

It’s the end of the world, and you play a demon or devil, basically damned and stuck on Earth as armageddon approaches.  There’s a loophole though – if you can find and convince a truly innocent character (which would be rare) to accept you for what you are, then you can escape with them when it all goes to hell.

What I’m hoping to build is a procedural narrative game, where you essentially have to use information and social interactions to manipulate other characters in the game world.  It’ll be like an interactive story where character interactions are your tools, rather than physical objects.

The idea is that you have to talk to and manipulate characters in the game to learn facts and form relationships to advance your position.  I probably won’t have a combat system.  If you do end up fighting you’d be so powerful that you can essentially kill your opponent immediately.  However, you may also lose control and kill other nearby characters, and that has a downside as it means you lose all of their knowledge and relationships too.

I hope to be able to procedurally generate a graph of characters, relationships, and information, so that when you play you won’t necessarily know who to go after, or what it will take to convince them to save you (and there may be multiple options).

An example situation I’ve been using is that you think there’s an innocent inside a club, but the bouncer won’t let you in.  If you dig up some dirt on him you might find out he’s got a drug habit, a criminal record, or some other character flaw that you can use to blackmail him into letting you in.  Alternatively, you could decide to kill him, but later on you might regret that, as he could be the only one with information or leverage on someone else that you need to deal with…

That’s it in a nutshell – I’m gathering feedback and discussing this with other developers to figure out exactly how it will work.  If it sounds like something you’re interested in, then please let me know!

Wind Racer

I’d like to take the opportunity to let people know that I’m now on, over here.

For now I’ve added the Train Jam game which you may have already seen, but also a prototype that I developed at the start of the year and took to GDC with me.

So, introducing Wind Racer – basically the game is Wave Race 64 crossed with the classic anime Porco Rosso. What I wanted to do was make an aeroplane racing game that didn’t rely on rings, or invisible canyons, it’s intended to be a bit more open and dynamic. Forgive the placeholder art, but feel free to try the prototype here.

One of the things I liked about Wave Race 64 (a jetski racing game for the Nintendo 64) was the dynamic environment that the water surface provided. Not only did the waves bump you about and provide jumps or challenges when making tight turns – the water level also varied, so in one lap you might have access to a shortcut by jumping a ramp over a wall, but in the next lap the water level has lowered and suddenly the ramp is a barrier to be avoided.

Also I’ve always loved aircraft, especially as depicted in Studio Ghibli’s movies such as Porco Rosso or Laputa. So back when I didn’t know how to make games yet, I played Wave Race 64 and imagined what it would be like if you were flying Porco’s Savoia S21. Instead of waves you would have air currents, the buoys would be balloons, and you would fly against air pirates and avoid course obstacles like anti-aircraft guns, while racing to win in a dynamic environment.

The beauty of Wave Race that I think a lot of people miss out on, is that it provided a very analogue experience. Many racing games have one true path around the track. What Wave Race had was a set of simple nav buoys, go left of the yellow markers, or right of the red ones. This provided much more scope to choose your path, and succeed or fail by degrees rather than in absolutes. You could race close to the buoys and take the quickest route, or you could look for short cuts by taking advantage of environmental quirks like ramps, dives, or hidden paths.

So that’s the idea for Wind Racer. A lot of aeroplane racing games rely on rings, or a set of invisible walls that give you a canyon to race down. I wanted to change that. The demo is bare bones, there’s no dynamic course, and the artwork is entirely placeholder (with patchy collision), but hopefully you can see the basic idea and from this post the potential of what the game might become.

I believe that at the very least there is a niche market out there for this game, and I’d love to hear from you if it’s the sort of thing you’d like to play. In the mean time I’m actually putting this game on hold for now, more on that very soon.

What Happened to Warships

So a lot of people have been asking me what happened to my action strategy space game. The answer is: I sold it!

The lovely people over at Blazing Griffin have further developed the game and turned it into Distant Star: Revenant Fleet. It’s in Early Access on Steam, you can take a look over here.

This has given me the resources I needed to work on my own projects full time, a valuable opportunity that I didn’t want to miss out on. So check out Distant Star if you were keen to see the finished game, and stay tuned as to what’s happening next for me!

Train Jam 2015

Woot woot!  I just finished Train Jam and wanted to quickly post my game, Robo-Coaster:


  • You need a mouse or trackpad to play, plus WASD or the arrow keys
  • Alter the mouse sensitivity as appropriate on the title screen with left/right arrow keys or AD
  • Mouse to look around, left mouse (or spacebar) to shoot, tap up/down to toggle your speed or reverse your direction on the track (you can’t stop), tap left/right to switch to another track when it’s alongside
  • Esc to quit

Kill spiders, get a high score, and watch out for the UFO (once you’ve killed that you’ve probably seen everything – there’s no end to the game).

If you want to download a copy to play, here’s a link:

Music from Kevin MacLeod –

Thanks go out to all of my fellow jammers and the Amtrak train crew, it was an awesome trip and I’d love to do it again next year :)

Extra special thanks to Adriel Wallick for organising the event!




More Bullets

I was recently asked about how I implement bullets, so I knocked together a quick example (left/right arrows to move, Ctrl or Alt to fire):

The example itself isn’t particularly impressive to look at, but it features:

  • Pooled bullet creation to avoid bullet instantiation and destruction at run-time
  • Bullet collision tests carried out using raycasts to make them cheaper
  • Time-slicing of bullet collision tests (X bullets per frame)

Unity 4.3 compatible project here:

You might want to replace the simple object pooling with your own more generic solution, I didn’t bother with that for the example to keep the code to a minimum.

If this is still not fast enough for you, you could try removing the bullet objects entirely – manage their positions centrally inside the manager and draw one mesh that represents all of them. This would have less overhead, and potentially be more cache-efficient.

I haven’t dealt with audio here, if you fire off hundreds of sound clips every frame then that will slow things down too. The solution to that is to re-use a few audio objects based on the most recent and audible sounds, so that you’re never playing more than a handful of samples at once.

Also, since I used primitives for art, the objects in the sample are scaled using their transforms’ local scale.  Don’t do this with real art, as it could stop Unity from dynamically batching your objects.

Post-GDC Build

Here’s the latest build, thanks to everyone who played the last one and provided feedback – it was all very useful.

Major changes:

  • The game is now called Warships of the Void
  • General overhaul of the front-end and some in-game visuals
  • Tweaked enemy spawns and completion rules for the asteroid field missions
  • First pass of a new game/sector progress screen
  • First-pass free-to-play style shop – pricing structure has been “borrowed” from recently released mobile games, and obviously will need balancing (it’s not hooked up though, so buy whatever you want, it won’t ask for payment)
  • First-pass mouse and keyboard controls – right click fleet movement, WASD or arrows for pan, shift/ctrl or -/+ for zoom

There’s probably more that I’m forgetting – just give it a go and see.

Regarding the target platform, the game was always intended to be on mobile and tablet, where it would end up being free-to-play for commercial reasons.  However, I’ve had a lot of feedback from people who would prefer a paid download game on PC/Mac/Linux so I’m considering my options and I’ve added some basic controls to help with web testing and demos of that.


Build for Test & Feedback

I’ve uploaded a new build for some organised testing and feedback, figured I may as well share it with everyone:

This build is still a bit rough, with some known bugs, but it’s starting to take shape.  The game is moving towards being a rogue-like-like fleet combat game now – no more career system.  Just conquer the galaxy!

Survey link at the top of the build page, or just drop me a tweet, all feedback welcome!

Annual Update…

I’m just going to ignore the fact it’s been a year, here’s the latest: 2013.html

It’s probably another three months or so of spare time work since the last demo, I had a nine month gap for various reasons.  Spot the changes, or ask me on Twitter (which I’ll soon be using more often too).

I’m currently thinking of using Twitter as a micro blog for my latest thoughts, and just dumping pics, files and whatever else on here infrequently.


February Demo

Roughly a month of spare-time dev progress, it’s demo time:

As before this is very rough just to give you an idea of where it’s going, and it’s an iOS title so mouse clicks are simulating taps and drags of your finger.  Hold left Ctrl (or Cmd on a Mac) while clicking and dragging the background to simulate a pinch or stretch (it mirrors your touch to the other half of the screen).

Quite a few changes have been made:

  • Some basic UI flow – a title screen, mission select, fleet summary, fleet purchase, victory and defeat screens
  • Two types of fleet to purchase, both allowing shields as an optional upgrade
  • A couple of test missions – Deep Strike has the most content (an enemy base and a flight of ships coming at you), while Jolly Roger has a static beam cruiser hidden in some rocks (try flying some fighters or an unshielded fleet in front of it)
  • The third mission (Survivors’ Guilt) is empty so you’ll win immediately – useful if you want to win more cash for buying more fleets ahead of doing Deep Strike
  • Updated visuals for some of the ships, the background, ship damage, more types of weaponry, etc
  • Modified control scheme – you don’t click and drag ships to select fleet direction any more, you now select the fleet, then drag the circular compass to set a heading (click inside the compass to stop the fleet)
  • Click enemy ships to set a target priority on them (red targets are preferred over yellow, which are preferred over non-prioritised targets)

I’m still missing a lot of features, and everything could use further iteration of course, but hopefully you can see the structure of the game starting to come together.

At the moment I’m working on some basic mission generation – they’ll be procedurally generated from templates rather than individually designed.