Game Design, Programming and running a one-man games business…

What income can you get from your old indie PC games?

There are a whole lot of different strategies for running a pc games business. I know people trying a bunch of different strategies and here are a few:

  • Publisher-funding model. Get publishing deals, and charge enough for the development milestones that you make a profit regardless of whether the final game makes a profit or not.
  • Patron model. Using patreon, or kickstarter or other methods, build up a loyal fanbase that pays you money to make games, regardless of whether they play them, or buy them in any quantity.
  • Straight sales model. Self-fund games, release them to the world as self published titles and hope the royalties exceed the development costs on a continual basis.
  • The big hit model. Go all-in, on a big title you bet your entire financial resources on, including remortgaging house/car etc. Assume that scale brings its own bonuses, and that the huge payoff outweighs the risk.
  • The continual release model. Release multiple games each year, maybe one a month, hoping that over time, the long tail builds up a relatively stable income.
  • The searching-for-a-hit model. Similar to continual release, but in this case the aim is to hope to strike it big with a sudden hit. Always be poised to drop everything and ramp up any game that gains initial traction.

Unless you didn’t already know, my method is the straight sale model. I’m pretty conventional in that I think the model where you just make the best games you feel comfortable with, from a risk POV, and aim to have them sell enough to result in a profit… is the most ‘normal’ and sensible way to do things. This plays to my strengths, because I’m not scared of risk, but not nuts, and also not a people-person as you need to be with patreons etc, and as a self-code-engine guy, I’m not churning out quick asset flips hoping for a hit.

However…

Because of the sheer bloody-minded determination to stick around, it turns out I have been making commercial aimed games since 1997, and therefore I have ended up with a big bunch of older titles that still run on most PCs, and can still generate revenue. have I perhaps become the ‘long-tail-indie’ just out of sheer hanging around? Could it be that actually positech games is self-sustaining on the basis of really old games, that although they do not sell much each, combined they add up to a tidy sum?

I’ll be honest, I have no idea how much those older games make without digging into the data, but I thought either way it might be interesting, so here goes.

Kudos 2 (2008)

This was the first game I made that made proper ‘omgz’ money. I got a cheqck one month for $20,000 and it was on the basis of that game, selling on about 15 different casual games portals. This was amazing. It was however, a long time ago now… 2008 apparently. This was certainly not my first game, mobygames catalogs a bunch of earlier ones, but it was the first one to make enough money that its worth even looking at the numbers.

Kudos 2 is unusual in that its not on steam. I also actually made it free on itch last year, but people tend to follow old buy links, and I still sell copies through BMT micro. Lets look at the last 365 days income from Kudos 2 for BMTMicro:

269 copies for a total of $1,463.69

Not bad, but this is pretty much the only income for the game. I accept donations on itch for it, and earned another $49

Gratuitous Space Battles (2009)

I always think of this as the game that was released on steam the day I moved house. That was a stressful day. Anyway… its old now (2009), and its on steam, and sold through BMT Micro, and also sold through apple on various devices. Lets check the last 365 days data:

Steam net income: ~$8,700 Apple sales: $0 BMT sales: ~$120

I actually forgot that apple sales were zero now because apple decided anybody who wanted to play 32bit games on devices they bought and paid for could go fuck themselves and revoked that ability, so there you go. Just one of many reasons I despise the company. But anyway… its about nine thousand dollars in the last year. Which for a game released 13 years ago is… pretty amazing?

Gratuitous Tank Battles (2011)

This is a game I often consider a flop, but its not really because it made a decent return at the time. However, its a game I have kind of forgotten about, after I made a single expansion pack. Its now 11 years old, so how is it doing?

Steam net income ~$550 BMT sales: ~$14

Whoah what the hell? Are those number correct? Yes they are! pretty bad. But why? I think its because the total peak sales of Gratuitous Tank Battles never managed to hit a real escape velocity. When it comes to long-tails for games, I get the impression that there are basically two scenarios:

The ‘Meh’ game.

This sort of game sells some copies, and maybe makes a profit, but it never really ‘takes off’. You don’t see dozens of youtubers covering it, there are not more reviews on websites than you can count. The community for the game never really gets going. Its not a watercooler discussion topic. People see its released…some buy it. And then its over. Gone. Done. The end.

The ‘Hit’ Game.

This doesn’t have to be Minecraft. It can just be a game that hit a certain threshold. I don’t know what that threshold is, but my best guess is $1-1.5million gross sales on steam. Once you hit that sort of level, you have a ‘community’. There are people posting online about the game every day. People who ask questions get community answers. People make mods, and the game thus expands. There is justification for DLC, which leads to more news, more coverage and more players, and you get a flywheel effect.

GSB and Kudos 2 hit the ‘hit game’ level. Kudos 2 is now so old its become irrelevant, but amazingly GSB still sells a non trivial number of units each year, and makes comfortably more than beer or coffee money.

Conclusion?

I think a lot of developers get frustrated that they are constantly in a grind, always having to desperately work on a new game to hopefully release it in time to survive the drop in royalties from the last one. Residual income from old games is almost zero, so you are constantly working away like a developer on a production line, never getting to relax.

I suspect many of these developers are at 90% between ‘meh’ and hit, but the problem is, being 90% of the way is not enough. Its pushing really hard on that flywheel, and feeling absolutely despondent, because you simply cannot see that point in the future where the momentum takes over. Its very, very easy to think things will never change, and that extra effort on a ‘failed’ game is simply not worth it. I totally understand why people do not push things that extra mile, when it feels like you have been pushing for the last 99 miles and got nowhere.

FWIW I think this applies to almost all endeavors, but especially creative ones that require popularity. I used to be in struggling heavy rock bands, and the constant putting up of posters and handing out of flyers for gigs, in the seemingly futile, pointless effort to get a few people to show up is soul-crushing and demotivating.

But in a sense, that explains why so many fail. Only dumb optimism or sheer bloodyminded obsession with success can possibly explain why some people still go out every single night and stick up those posters or give out those flyers, or keep tweeting and blogging about their video game. It always looks hopeless, totally and utterly futile, and impossible odds, and never gets you anywhere…until it does.

A video game budget breakdown: Gratuitous Space Battles 2.

Indie developers, especially ones working on their first game are always very interested to know how much stuff costs, and whether they should spend more money on X or Y. It can be a bit intimidating and scary when you have no idea what you are doing and its your first game. To try and help with this, I thought I’d release some data about the last full game I shipped as the developer, which was Gratuitous Space Battles 2. For those who aren’t aware, its a top-down 2D space strategy game with more lasers and particles than you can shake a stick at, and it looks like this:

Image4

Or in video form like this:

Anyway, here is a pie chart breakdown of the cost (EXCLUDING MY CODING TIME) for Gratuitous Space Battles 2.

b1

And for those who hate marketing, here is the same chart but without any:

b2

Obviously you have to strongly remain aware that there was a LOT of coding time by me which I have not included here, because obviously as the owner of the company its hard to work out how much I should value my own time at. Regardless of this, maybe some people find this useful;. If you want more insight into why the costs are the way they are, you probably need to check out the game. GSB2 is a VERY GUI and visual-effects intense game. It has a lot of very complex GUI elements, and thats why its such a big chunk of the cost. It also has very good dramatic music. If you are making a 3D game, costs might be different. If you are working on mobile or ipad, again it might be different. This was a hardcore PC strategy game designed for huge monitors and hardcore players. How does this budget breakdown compare with yours? Share in the comments :D

Indie game developers move on. Or they fail.

I’ve been asked if I am still working on Gratuitous Space Battles 2. And I am not. I’ve been accused of all sorts of stuff as a result. I wont repeat that here. What I want to talk about is the economics of this question, why people get angry, and why it makes sense that I am not working on Gratuitous Space Battles 2 right now.

First some facts. GSB2 started work around November 2013. It was released on the 16th April 2015. So the dev time was about 17 months.

Now the game was in beta for a while before release, with sales from my site, and is on sale also at GoG and the humble store, but most people wont have any idea how well it sells on any of those, so lets just look at the steam sales as reported by steam spy:

Owners 10,876. Assume average of 50% off maybe? so assume $10 a copy? so lets say it made $108,000 and add in another $50,000 from other sources. However steam take their cut so thats really only about $120,000. Actually thats a bit shy of the real figure, which is just over $150,000. So I guess some people (mostly kids) are screaming at me at this point for being a greedy scumbag and so on, because I am implying the game failed or I can’t afford to keep working on it.

screenshot_14-08-2014_12-40-20

The development & marketing cost for that game was $115,000. The *profit* so far is about $40,000. If I look at the hours I spent working on it, I earned about $12.74 per hour. That is assuming I stopped work on it when it shipped, even though I did not, and continued to add patches, fix bugs, add new features and polish existing ones for months after release. Something that made zero economic sense.

If you think $12.74 an hour is good for a software developer with more than twenty years experience you are flat out wrong. If you think that you can run a business in the UK earning £17,549 which is the sterling equivalent, you are flat out wrong.

Gratuitous Space Battles 2 failed, partly because it was released into a sea of space strategy games that are so numerous I cannot possibly list them all. I still think its a darned good game and am very proud of the engine that was coded for it. I think it is superior in every way to the game that came before it. I’m sure it will continue to earn some money in the long run on steam, but not nearly enough to make it anything other than a relative flop.

screenshot_14-08-2014_12-29-05

And yet…people will still hurl abuse at me for moving on. Of course I am moving on, that is why I am still in business, and that is why I am able to pay the rent for the server on which this blog post resides. Some games are hits, some are flops. Almost all indie game studios have flops and it normally puts them out of business.  I am not asking for any sympathy, I do not want any, I am not blaming anyone but myself, and …oh for fucks sake, why even bother typing any further, as I know I will get nothing but abuse and vitriol for even posting this because many teenage gamers think that I should be working from now until my death bed to implement every possible idea, tweak, or change that they can imagine for the game because they paid $10 for it once.

That makes no economic sense, and when you harass and bully and scream at the devs of ‘your favorite games’ to do this, all you do is accelerate the date at which they go out of business and stop making games. If there is a way to turn off comments just on one post I’m going to do it here, but I expect abuse on twitter and so on anyway. Apparently thats what you have to put with for $$11.74 an hour in 2015.

FWIW positech overall is doing just fine, I’m developing a new game and publishing others. I am also personally fine, I just know many devs feel this way but are too scared to say so, I’m doing their venting for them :D

 

Coding the GSB2 Radiation effect (directx9 C++)

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.

 

 

Gratuitous Space Battles 2 Updated to 1.38

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:

buy_button

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.