So…I’ve given my two mini-talks, at the indie soapbox and the AAA to indie thing, plus a podcast thing. I only have one official meeting to go, and thats me done for GDC 2015. So here are some early thoughts and memories.

I was SO nervous before the soapbox. I was dreading it. I really wished I hadn’t agreed to it. It felt mega stressful, but it looks like it went really well. I did worry about it being badly misinterpreted and taken the wrong way, but it seems not to be the case, which is a relief. The fact that the talks ‘went well‘ means I feel justified in coming to GDC. I guess it is good for PR, and I can make a ‘business case’ to myself for being here.

One of the best things about GDC is meeting up with people you know online but hardly ever see. I won’t namecheck people, but there are a bunch of cool, nice, talented developers who I only ever see at GDC or similar events and its great to shake hands again, have a coffee or a meal or a drink and chat to people who do what I do.

My hearing in large groups of people is *so bad* combined with what I suspect is a very mild case of face-blindness, that I worry that I spend a lot of time apologizing to people I don’t recognize combined with a lot of intense tom-cruise style staring at people as they talk (mostly as I’m lip-reading). I suspect some people think I am much stranger/arrogant/forgetful/grumpy than I actually am, because they only know me from loud parties at industry events…

GDC is HUGE. There are literally *whole buildings* full of talks, events, people and booths that I didn’t even know existed until today, and they are packed to the rafters with *other game developers*, which just freaks me out. We are not a bunch of nerds typing and being ignored any more, there is clearly a LOT of money in games, And some companies are obviously growing like mad, had a big booth which more or less screamed “PLEASE WORK FOR US” in an attempt to match headcount to ambition and revenue. Crazy times.

On the flipside, no way can the industry support so many indie devs with prices so low and sales so all-consuming. I’m curious to know what percentage of attendees are burning through savings with no break-even point on the horizon. Terrifying.

And holy crap I’m tired. If you are the worlds biggest ‘glitch mob’ fan (whoever that is), hate me now, because I have tickets to the glitch mob thing, but I’m on a hotel bed typing instead. Sorry!

GDC day one (well day one half)

March 02, 2015 | Filed under: business


The first time I attended GDC I wrote an article about how it can be good *if* you are a sociable networking type, and it can probably suck if you aren’t, and if you are randomly one or the other (like me), then it can be a mixed bag.

That kinda hits home right now. I’ve been to two talks, and they were ok, and chatted to a few people at the show, but not many, and I am just not someone who is going to introduce themselves to strangers. To quote mr darcy…

“I certainly have not the talent which some people possess, of conversing easily with those I have never seen before.”

Of course that’s just one of many ways in which I am like Mr Darcy. But anyway… I’m really glad I’ve arranged to go along to some indie meal tonight, because I know at least *one* person there, and if I sit down and order food I”ll *have* to talk to people, which is probably what I should be doing, and with any luck I can tag along with someone who goes to the other party afterwards. Maybe I should drink some wine :D

I find it quite difficult to write about stuff like this, which is kind of why I do it. I’m sure there are hundreds of blog posts and tweets right now from happy outgoing game developers about how cool it is to hook up with so many like-minded individuals, and thats awesome, I just realize I’m the shy, slightly awkward british dude sat in his hotel room networking with nobody, typing and eating some pretty gross cheese snacks and wishing there was a bloody kettle.


multithreading sound engine bug…

February 28, 2015 | Filed under: programming

I have a bug thats driving me nuts. I use some middleware as a sound engine. its the ONLY middleware I use, and its bugging me. theoretically its easy to use, but I have a situation that it seems incapable of coping with.

With this middleware, I can play a sound, and request a pointer to track it. I can use that pointer later to adjust volume, or stop the sound, or query if its finished. For various reasons, I need to keep my own list of what sounds are currently playing. Thus I have a list of ‘current playing sounds’.

The middleware gives me a callback which triggers when a sound ends. This is handy, as I can then loop through the current playing sounds and remove it, keeping that list up to date. The sound engine runs in its own thread, so that callback triggers in a different thread to the main game.

This is where it goes wrong (but only on fast speed). I decide from the main game, to stop a sound. I firstly check that the sound exists within the current playing sounds. It does, so I access the sound pointer and tell it to stop. But wait! in-between those two events, the sound has expired naturally (in another thread) and the pointer has become invalid. CRASH.

using critical sections just produces race conditions, because stopping the sound has to happen in the same thread as the callback, and there are likely several sounds generating callbacks in the same frame (on fast speed) as the one I’m trying to stop, and it reaches a deadlock. It’s a real pain.

One solution is to make all such sounds loop (and thus never expire naturally, and rely on me killing them, which should work ok) and I thus never hit this problem. Another is to just not stop them prematurely (looks weird). I have currently hacked it, but I suspect the 1.18 build still has this issue manifesting itself as a 4x speed lots of beam-lasers crash.

Another solution is to tell the sound engine to run single threaded but that seems horrendously hacky.

I may have to try the always-loop solution. One day I’ll write my own sound engine again.


So hey, another week, another update to the GSB2 beta. Hurrah! When I look back at the change list there is actually a ton of cool stuff in this update. If I had the time, I’d make a video explaining it all…but I don’t so here it is in lovingly crafted text form!

The complete changelist is here

But the highlights are…

  • All Unlock costs are 50% higher, so you don’t ‘progress’ stupidly fast any more (hopefully!)
  • In some cases (the first race for now) ships come with a pre-defined ‘default’ visual appearance rather than just a blank hull, because some people were too keen to fight than design ships, and this way those ships still have decent visual appeal.
  • Steam workshop support, and a general implementation of mod browsing and creation and toggling is done now, although the workshop is likely inactive for everyone at the moment.


  • Some cool new sound effects :D.
  • You can now type in exact values when adjusting stuff on the ship design screen. (A feature much requested)
  • A better end-battle dialog to explain how honor works. (The actual dialog has the right numbers in :D)


  • Sub-deployments are in! (although a tad buggy). You can now save and load sub-deployments and use them in any mission, allowing you to have predefined formations of ships to use as the core of a fleet.


Obviously more patches will come, although things are likely to stall slightly for GDC and then Rezzed, but hopefully around that time I’ll get the translations done and maybe the mac/linux port, so even if the release date moves into April, it will be a decent release with lots of cool stuff. Trading card artwork is being done right now, along with extra module graphics. I’m reading all the player feedback and implementing tons of tiny fixes for stuff which people point out. In the meantime, it really helps if people up-vote any videos/articles they see about the game, all coverage is appreciated, and sharing this blog post/tweeting it is much appreciated too :D

If you are at GDC I am in two talks. And do come along and try out both GSB2 and Big Pharma at Rezzed in London if you can.



Gah! this may be the year I dump firefox, its bugginess and post-eating crashiness is finally starting to try my patience… Anyway I am in crunch mode. I know that in theory indie devs do not crunch, but GSB2 was originally scheduled for a December 2014 release. That became January, January became February and now I am targeting the end of March. And although that sounds four weeks ago, in game-shipping terms it is only a few days of work away and this is why…

I want to be PC+Mac+Linux capable on release day and I need time for the port to be done.

I want to have *at least* French + German versions on day one and they need time to do the translations…


Plus…I have a bunch of ideas/tweaks/improvements from the beta to put in *before* I declare it ready for any of that. And then… even more timing related angst because I am going to both GDC and Rezzed between now and release. MADNESS. (I have to attend both, because I’m speaking at GDC and also showing off GSB2 and Big Pharma at Rezzed…). This might work out ‘ok’ because with luck, people will be working on translations and/or mac builds whilst I’m at these things, which is at least something that can get done while I’m busy smiling at people at shows.


There is also some other stuff to dop, such as extra ship module graphics for variants and also steam trading card stuff. And of course a lot of testing and general QA/Polishing. Even as I type this, I’m starting to think *cliff you are nuts…it will not ship in March, FFS get a grip and let it slip a few more weeks*.


Anytway, if you can’t wait (and who can!) you can grab the current build of GSB2 when you pre-order-the-game here!