One of the best things about the indie dev community is that you get to meet a lot of people from all over the place who wouldn’t otherwise necessarily meet. You can be an indie dev living anywhere (although its harder some places than others), and more than ever before, they come from different backgrounds. I find people pretty interesting (ok, I find 0.1% of people interesting), and I do find myself doing a bit of pop-sciency amateurish analysis of people. When you do this with creative people it gets rather fun.

I find it very amusing that when you meet Tim (wicksteed, designer of big pharma) he basically *is* big pharma. Its truly his creation. He is always happy and upbeat and smiling and positive, just like big pharma. From my POV, Tim is young and modern, just like big pharma feels. The music is the clearest indication of this. The music is like Tim. The game is bright and cheery. Tim made a game about curing people.


When you play Gratuitous Space Battles 2, thats me. If you haven’t met me, just watch a few minutes of the battles and listen to the music. Thats me. Thats what my brain and my soul is like. it’s lots of explosions and power and drama and a voice shouting ARGHHHHHHHH at a billion decibels whilst smashing things. The game is dark, over-complex, ambitious and pushy. Cliff made a game about destroying everything.


It’s kinda funny how games made by just one person really are a window into their soul, and their personality. Mike Bithel basically is Thomas Was Alone. If you introduced me to a random line up of 100 game developers I’d never met, and told me one of them did a game about repressed rectangles with feelings, I’d know it was Mike. And after playing TWA, I know mike probably reads the guardian and is a vegetarian. Mike made a game about friendship.


And this is awesome. It means that entertainment really is connecting us to people. That gives us empathy, and opens our mind in the way that ‘committee design’ never can. I have no idea who the designer of the Battlefield 4 games is. I imagine its probably Tom Clancy, more likely a committee of people with a tom clancy design manual. Who knows.

In any case, I think it is really good when games have personality. The absence of it definitely feels bad, like a farmville clone (or for that matter the original) designed mostly by people in the PR and accountancy department. The best artistic design is done by slightly crazy people who are drunk/drugged/suffering in some way, which drives them to think of things other people would not.

Don’t do your game design by committee, or with a spreadsheet. Let it just flow from your soul. If that means your games are downbeat, or dark, or whatever then thats fine too. Better to be dark than to be fake.

I was never 100% happy with the radiation effect in Gratuitous Space Battles 2, so I’ve coded a better version for the next patch. Here it is in very short silent video form:

I thought maybe some people may be interested theoretically in how it is done. Now I’m sure if this was in 3D in unity there is already a 99c plug-in that does it without you even having to understand coding, but thats not how its done so here we go…

The first thing to remember is that the spaceship is not a 3D mesh at all. its a series of sprites rendered to different render targets and then composited. That means that I’m not wrapping a texture around a mesh, but drawing one sprite on top of another, but cropping the final output to the alpha channel of the base (ship outline) sprite.

Before I learned much about shaders, I had a system that did this using mostly fixed function, which I use here, but build on with better shaders to do more stuff, making it a hybrid approach and fairly complex :D. To simply draw one sprite on top of another, but use the alpha channel from the bottom sprite, I use a custom vertex format that has 2 sets of texture co-ordinates. One set is from the splatted image ‘radiation’ and the other is from the alpha channel of the ship outline.

It gets a bit fiddly because where I’m drawing the splat sprite could be anywhere on the ship, so I need to work out the offset and dimensions of the splat in relation to the ship image, and store that in the second set of texture UVs, and pass that into a shader.

The shader then simply reads the color data and alpha data from the radiation splat, and multiplies the alpha by the alpha at that point on the base ship texture, and voila, the image is cropped to the ship.

But thats a very simplistic explanation because there is more going on. To make things fast, all of my radiation gets drawn together (to minimize texture / render target / state change hassle), so its done towards the end of processing. In other words, there is no painters-algorithm going on and I need to check my depth buffer against this ships Z value to see if the whole splat is obscured by some nearby asteroid or debris. That requires me passing in the screen dimensions to the shader, and also setting the depth buffer as a texture that the shader can read.

So that gets us a nicely Z-cropped image that wraps around the ship at any position. It also fades in and out so we need to pass in a diffuse color for the splat sprite and calculate that too. We also have to do all this twice, once for the splat, and once for the slightly brighter and more intense lightmap version, allowing the radiation effect to slightly light up areas of the ship hull during final composition.

At this point the shader is a bit complex…and there is more…

I wanted the radiation to ‘spread’, and to do that, I need to splat the whole thing at a fixed size, but gently reveal it expanding outwards. To do this I create yet another texture (the spread mask) which also gets passed to the shader. There were various ways to achieve this next bit, but what I did was to ‘lie’ to the shader about the current UV positions when sampling this spread mask. Basically I calculate and pass in a ‘progress’ value for the spread, and I use that, inverted, to deflate the UVs of the source image (which is CLAMPed). So effectively my first UVs are -4,-4,4,4 and the spread splat is a small circle in the center of the splat, expanding outwards to full size.

Because I’m only doing this when I sample the alpha channel from the spread mask, the color and alpha data from the base ‘splat’ texture remains where it is, so it looks like its a static image being revealed by an expanding circular (but gaussian blurred) mask.

I’m pretty pleased with it. The tough bit I’ll leave for you to work out is how that works when the source radiation image is actually a texture atlas of different radiation splats :D

Fun fun fun.



Its a tough time out there in the world of indie gaming. I talk to a lot of devs ‘off the record’, whether we are just chatting, they are pitching a game to me, or they ask for advice… so I hear opinions from a lot of people and… its a tough time out there. 1,592 games have been added to steam this year apparently (and its only July). How on earth do you get any attention for your game? who on earth is going to buy it? how are you going to break even.

Now to be honest, I’m one of the doomsayers who will tell you that you won’t, and you will almost certainly lose money. Thats just the way things are. Only the top 20% or so will break even, only the top 5% are going to make a living. Maybe. There are a lot of poor games out there, and the globalization of attention means the distribution of attention/money to games gets more skewed all the time.

So you might think its fine for established devs, with money in the bank, and known IP. But actually those devs have a problem new developers do not have. lets arrogantly call it the success trap.


If you are working on your first game, or have a bunch of failed games behind you and little/no press attention / audience, in some ways you have a big advantage. In fact three advantages, a sort of ‘newcomer bonus’…

1) Nobody is bored of hearing about you. You are new, fresh and exciting. If you make an amazing game, you are an ‘overnight success’ and also ‘hot new talent’ and ‘the new face of…XXX’ and all these other media friendly things. We seem hard wired to get excited by ‘new’. If I make the same game, its less newsworthy. Seriously.

2) There is nothing to compare your game to. Its the ‘first’ (even if it isn’t) game from you. MY GOD YOU MUST BE TALENTED. Literally 100% of your games are hits! you are like Guns n Roses with their first album, or the first Highlander movie. Surely everything you make will always be this good how awesome. Also insert comment about minecraft here.

3) You can take risks and do new things and be adventurous with your game, because there is no opportunity cost.


This last one needs some explaining. Right now I am mulling over what to do when I finish tweaking Gratuitous Space Battles 2. I like working on it, I want to keep improving it, making it as good as possible. I may then do a completely new strategy/sim game (designed in my head, but not started yet). I also have 2 ominous looking camera tripods in the office now hinting at something even more ‘new’ I could work on instead.



I could make Democracy 4.

If Positech Games was actually a public, traded company, we would be making Democracy 4. We would *have* to, because shareholders would kill us otherwise. Its the *obvious* thing to do. It would sell, it would make money. We should do it. We should do it in *exactly* the same way that Valve should be making Half Life 3.

And yet…I’m trying to resist doing whats ‘easy’ and expected’ and thinking about doing radical things instead, but this takes effort, and is worrying, because there is an opportunity cost. In other words, if I do something weird and new, it has to do better than Democracy 4, or internally I’ll think I screwed up.

New devs don’t have that in the back of their mind. And thats a good thing. Be experimental while there is no downside.



There was a time when blogging was new. I used to read this one guys blog practically every day. Sadly his blog and company is no more, but back then, when dinosaurs roamed, the done thing was to use blogger. Blogger got bought by google, and wordpress became popular, and over the years I ended up with this blog running on wordpress, hosted on my site. And here we all are.

And I’m glad we are here.

What I like about the fact that this blog is here, owned by me, and hosted on a server controlled by me, is freedom and independence. These are VERY important to me, and its surprising how little freedom of discussion we really have these days. I’m not talking about political censorship (of which, despite extremist rants to the contrary we have very little in the UK), but corporate censorship.

The background of this site, the font choice, the images, and the words I type are all MY choice. This is what I think, unedited, uncensored, not restricted by the opinions of facebook, twitter, blogspot/google, youtube or anyone else. This is more important than it sounds.

Recently my twitter page lost its custom background. Interesting, because this was a corporate decision by Twitter. I pay nothing to use twitter, so I have no say in this. If twitter decide to close my account, and cut me off from all my followers, there is *nothing* any of us can do about that. In a similar way, facebook could close my account (or yours), google could close my gmail account, youtube could close my youtube account, and so on.

When you look around at all the people you know, and the way you talk to them, communicate with them, and stay in touch with what you might call a ‘community’, its worth remembering that that list of ‘friends’ and ‘community’ exists almost entirely at the whim of a scarily small list of corporate entities. This is also true of relationships with customers as a business.

I have facebook owned facebook pages. Valve owned game community pages. Google owned Youtube channels. The only real direct connection I have with customers is my own forums (hosted by me) and this blog (hosted by me).

Direct sales as a software seller are your insurance policy. Direct relationships with customers are also an insurance policy. Yup, its slightly more hassle to run forums and host a blog than just use existing solutions. But its a good idea.



A long list of fixes, tweaks and improvements this time for Gratuitous Space Battles 2. Here is the full list:

Version Release 1.38 July
1) Fixed bug when toggling between fleets in a custom map, where the player fleets icons would not re-load.
2) Fixed bug where ship components that spun are were not composites ignored applied custom textures.
3) Fixed bug where textures may display wrongly in some cases on the ship design screen.
4) Fixed bug where green ship running light did not appear.
5) F2HullMod 8 can now be colored correctly.
6) Zyrtari ship components now ordered correctly.
7) Fixed bug where the game could crash if you beat the first campaign mission when trying to autoload the next one.
8) Point defense beams now oscillate wildly around missiles traveling too fast for them to intercept.
9) Weapons that deliberately do zero damage (like decoys) no longer qualify as least damage done in the post-battle stats.
10) Contrails now correctly drawn even on complex multi-layer fighter & gun ship designs.
11) Ship module comparison window now shows extra data for shield penetration vs resistance.
12) Point Defense weapons now display tracking speed.
13) Missile modules now display missile speed.
14) Balance Change: Frigate/Destroyer Anti-fighter missile Range boosted from 800 to 900.
15) Balance Change: Frigate/Destroyer Anti-fighter missile Damage effectiveness changed to 100% vs Hull, 25% vs Shield.
16) Balance Change: Frigate/Destroyer Anti-fighter missile Firing interval reduced from 2900 to 1500.
17) Fixed text spillover on the messages screen.
18) Added new feature: messages in your inbox now contain a button to jump to the challenge if appropriate.
19) Added new window that shows effectiveness of point defense weapons vs missiles when you select the tracking attribute for one.

The ones in bold are the ones I think really matter. These are things that make the user experience of the game so much smoother. Making comparisons between modules and selecting the right tool for the job just got a lot easier. Since this patch uploaded I’ve been working on a fairly ambitious change to the way shields are drawn, and it looks like it just cannot be done, but its helped me find and fix some other minor graphical glitches as I do it, so hopefully its not time wasted. I may do a long technical blog post about what I was attempting and why it didn’t work at some point.

In the meantime you can grab the game from the link below:


In other news Tim is still beavering away on the code for Big Pharma, you can read about the upcoming patch for the game which includes patents and custom games over at his blog here.


There are no comments yet