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

Pushing 2D engines further

I have dabbled very slightly in 3D (Don’t be alarmed), and have retreated in terror at the additional grief it requires, and the compromises required, and the general ickiness as it seems to me.

So I am pretty unlikely to release a proper 3D game in the next few years, at least. I personally do prefer 2D games. However, that doesn’t mean I do not enjoy nice graphics, and certainly there are a ton of nice looking 2D games out there. The majority of them are side-scrolling or similar style games that rely more on a very good piece of art direction (Braid, World of Goo), than they do any sheer horsepower or rendering muscle. I’m not aware of many 2D games, indie or otherwise that tax a CPU/GPU as much as Gratuitous Space or Tank Battles.

However, having just bought a new PC, AND watched the latest cryengine demos, it’s pretty clear that modern gamers have enough firepower to render the bejezus out of anything in 2D, so we are in the happy situation of twiddling our thumbs thinking what crazy stuff to add next time-around.

One idea is is to push particle counts through the roof and have seriously complex explosions and smoke trails etc. This could certainly be ramped up, although smoothly transitioning to it from low-spec PC’s is a nightmare

Another idea is to use a LOT of different layers and components to build up individual units to give them a more unique feel. Obviously GTB is a big step up from GSB in that respect, but it’s got way, way more scope.

Shadows and lighting are two other possibilities. GTB infantry uses blob shadows. Animated shadows are certainly doable, but involve a crazy amount of texture RAM to do right. Maybe worth investigating. Faked 3D lighting using that clever deferred rendering thingy is another (fairly tricky) option.

More detailed environments is another. The problem here is art budget. It’s all very well saying we need 120 different bush or pebble models. Someone has to make them, and get paid for it.

More cunning explosions, using some sort of clever physics modelling, or procedural whatnots, or clever multi-layered shader thingies, is another option.

Of course the real problem is TIME. I already have this big scary change to Gratuitous Space Battles waiting for me to release for everyone. It’s just sat in-between holidays, GTB updates, redshirt, and talking to builders. Plus another new thing I haven’t revealed yet. I am quite tempted to just push out my GSB update very soon ‘as-is’. I was hoping to find a cunning way to use it to raise money for charity, but that’s a whole other story…

Why friends try to stop you being independent

I notice people doing this a fair bit, to people who are considering quitting their job, or starting up as an indie developer. My experience is obviously from indie game development, but the same applies to almost any ‘going indie’ career, even if it’s opening a corner shop. Why do they try and stop this? and do they have a point?

Reason #1 “You won’t make any money”

This often translates into a subconscious fear that you “will” make some money. If you do, then their own decision to stay in a normal job seems kinda crazy. Note that often the people who work for themselves tell you to go do it, it’s the ones in safe jobs that tell you that you won’t make any money.

Reason #2 “You will forfeit your bonus”

Isn’t it interesting how every job has a bonus and a promotion and a raise ‘just around the corner’?  Also, it may or may not be news to you but those share options they keep giving you are probably worth jack-shit. Ask to exchange them for just a ferw thousand dollars and see what they say. They are a way to keep you from quitting without it costing the company anything. And that bonus? It’s probably not going to happen. Look around your workplace and check that you aren’t just reciting that Luke/Uncle Owen scene. “You can go to the academy next year luke…”

Reason #3 “There is too much competition”

Yeah right… It would be crazy to start up a new search engine Sergey, have you not seen yahoo and Lycos, they OWN this market. And what does Zuckerberg think he is doing, MySpace is already the king there… Times change. The games industry is always changing and growing. Sure there is a lot of competition, but a lot of it sucks, and there is room for a few more. If there was no competition the same people would say the market is too small, or it was impossible to create a market for that.

Reason #4 “It will be lonely”

I met guys in offices who would sit with headphones on and not talk to anyone for the whole day. Going indie doesn’t have a monopoly on loneliness or boredom :D. Plus fellow indies are a chatty and likable bunch. There are probably a few developers, maybe not in games, but certainly in software, living not far from you. Once you get over the initial geeky shyness, getting out and meeting other devs becomes great fun. With skype, instant messaging, phones, facebook etc, you don’t have to be a hermit to work for yourself. On the whole, I’ve found people who work for themselves to be a much more optimistic and cheerful bunch than average.

Reason #5 “You’re wife/husband won’t let you”

Remind them of the ‘richer/poorer’ bit in the vows :D But seriously, your friends don’t know more about your private situation than you do, so don’t listen to them on it.

Reason #6 “It means no job security”

Must I point you at recent layoffs in the games industry? We aren’t like the car or oil business. When game devs go broke you get no notice. I mean NO notice. The doors are just locked one day, and if you are REALLY lucky, you won’t lose a few months salary that they lied to you about and said was ‘an admin problem’. Being indie is MORE secure than a proper job, because you have multiple income streams. If steam stop selling my games tomorrow, I’d be fine (gutted, but fine :D), because there are myriad other deals scattered about that trickle in some royalties. Plus royalty income slowly tapers down, you don’t get a sudden shock and a P45. Don’t get me wrong, being indie does ‘feel’ insecure for the first five years or so, but it really isn’t.

Convinced? :D

Back from holiday, and mac testers…

Sooo… that’s enough time sat on a beach reading books. Especially if you sunburn easily and then really hurt your foot kicking a beam, and have to limp everywhere. At least there was a tropical storm to liven things up! I’m not back in the world of debugging, huge towering inboxes, and 1,001 things to do before breakfast. (Not to mention no more huge buffest at breakfast…darn…). I miss the cocktails and the live music :( (Also it’s amazing the quality of the musicians just playing in restaurants in the caribbean).

looking for mac testers

One thing on my todo list is to find some mac testers for Gratuitous Tank Battles. Have you already bought the game and want to test the mac copy? if so, do me a favour and email cliff AT positech dot co dot uk. I can only really do that for people who bought direct from me (because that’s the only way I can verify buyers), and if I don’t reply, it means a bunch of people got in there before you. Please use the email address you bought the game from.

My foot really hurts…

That steam stutter bug, and tracking it down…

Right from it’s initial launch on steam, there was a bug reported in Gratuitous Tank Battles for a tiny subset of steam players. The bug was basically that the game ran horribly slowly, with stuttering and skipping music.

Regular blog readers will know I am a bit obsessive about optimisation, so naturally this seemed weird to me. Right from the start I doubted that this was actually the games graphics engine or core gameplay code running slow. Not given the specs of the users reporting it, which was a wide cross-section of hardware types. Happily, this was confirmed by the realisation that running the game from the .exe, outside of steam, enabled it to run perfectly. A good workaround, but not actually a fix.

This was followed by weeks, maybe even months of me investigating what on earth it could be.

Initially, I assumed it must be something about the steam integration code. So that resulted in a ton of going through it with a fine tooth comb and checking every parameter, asking valve if I was doing it right, checking with other devs how I was doing it compared with them etc. I ended up moving the code that initialised steams systems from one point in my code to another, as they recommended, but there was no change. I also changed a callback to run every 100 frames rather than every frame, and again, no difference.

Then, finally we found some helpful players who not only had the bug, but were happy to run diagnostic code on their PC for valve to analyze. A very helpful guy from valve then crunched through it, and found that an alarming amount of time was spent in the sound library, and in Heapvalidate(), called from it. This then led to another 48 hours of me looking at heap validation code, memory errors, installing xperf, the application verifier, trying (and failing) to download Microsoft platform SDKs, lots more poking and prodding…

and then eventually  I got a reply from the sound library people suggesting that yes, it *might* be their code occasionally calling HeapValidate() all the time, and to upgrade to the latest build.

So I did that and it has fixed it…(afaik)

How annoying. The one piece of code in the game not written by me, and it had a bug in it! At least it’s fixed now, so all is well. I bet my code has bugs too :D We still don’t know why it was actually caused by the interaction of the game with steam, but that just seemed to be the randomish trigger for the errant memory checking.

I have a new ninja PC on order. I dread re-installing anything. Is there a magic new way to do this, or will I sit there downloading and installing stuff for 2 or 3 days again?

Another Gratuitous Tank Battles patch!

So… I’ve released version 1.014 of GTB. It has some under-the-hood changes nobody will notice (yet) but also this:

1) Added hint to make divisions if you have lots of units and have not created any yet.
2) Changed the way unit icons are created so they make more sense for long-barrelled guns.
3) Added new option to allow the game to auto-manage and update divisions for each type of unit.
4) Fixed bug where if you didn't restart the game, you kept unlocking the same unit.
5) Added support for colorblind mode.

The big change there is 3). I wish I’d thought of this originally, but like all my games, they evolve and improve in response to player feedback. The game will now automanage and keep up-to-date a separate division for infantry, vehicles, buildings and support structures/vehicles, and you can swap between them as before using tab or alt+tab.

because I’ve added this *now*, it’s not the default, and you need to go into the division manager and turn it on. if I was more organised, I’d be tracking that as a stat. The trouble is,  you get a lot of people buying games cheap in a sale who play 2 levels, then never return, which is bad for all kinds of reasons (it encourages designing purely for the casual gamer, for one), so ideally I’d be tracking people who play 10+ missions, and then analyzing what percentage of them even use divisions, and how many of them enable auto-management. My stats tracking sucks, yet again. I’ll get it right in my 99th game, I promise!

4) was also an embarrasing bug that I wanted to fix, and is the main reason I suddenly rushed this update out without much fanfare.

In other news, I’ve been working on some future stuff (early days yet) and also re-uploading a bunch of ‘signed’ exes to keep the paranoid gremlins at Norton Internet Security happy (god knows why).

The steam sale was pretty good, but not wallet-burstingly so. We do live in strange times. As a game designer, I’d prefer less, high-margin sales than a whole slew of people grabbing GTB for cheap and hardly playing it. I’m definitely from the hardcore gaming school, rather than the ‘angry-birds’ school of gaming, and I hate to see gaming change to the point where everyone owns hundreds of games, but has played hardly any of them. That’s not a market working properly, it’s like a weird mind game.

It’s amazingly sunny right now in the UK. I know because my solar power readout tells me. Obviously I’ve never gone outdoors. That would be mad.