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

Radio 4, padlocks and publishers

So Friday was world-of-love conference day for indies. It meant waking at 5.30am and banging my head on a metal railing in the dark. Bah!

The conference itself was worth going to, met a bunch of people from indie development which was cool. Alice taylor and Sophie Houlden gave some great presentations, and tak’s talk was interesting too. I did a sudden ’10 seconds-notice’ interview with radio 4 for a program about indie games which will go out in june at some point. I hope they don’t edit me out :D I probably sounded a bit nervous, and didn’t say anything wildly controversial, but I got through it, and I’m glad I said yes to it.

I had a few of those ‘maybe I should have business cards made?’ moments, but decided maybe not. Afterwards was pub, then pizza. Just like the last world-of-love there was no room in the pub for anyone, and nobody could hear a thing. Surely there is a better way?

The bad news, is when I got home, we realised the next day some scumbag had tried to break into our garage. Very unusual, apparently they tried everyones. It’s not like where I live is high crime. They cut the lock using boltcutters, so I had to go get a new one, and then got bolts that were too short. doh! Still, you learn a few knacks as a boatbuilder, and those screws aren’t coming out in a hurry. Plus, I’ve ordered one of these. Maybe it’s time for me to invest in a night vision attachment for my bow. I already have a night vision scope, but I need both hands to shoot someone. Bah.

Also, a casual game publisher has stopped paying me my royalties. I hate publishers, they are almost all a bunch of criminals. Another lesson learned I guess, and another reason to ALWAYS sell direct to the customer if you can. Maybe they will suddenly appear and pay me, if not, they just go on my list of people to get revenge on when I rule the galaxy.

Contacts

I’m going to london indie conference ‘world of love’ on friday. I’m not speaking this year, but I’ll be there. I’ll probably have a few drinks with some people afterwards too.

I know some indies just never go to stuff like this, and don’t think it’s worth the hassle. I can sympathise, I live a LONG way from London, my alarm clock will go off damned early, even if I’m only aiming to get there for 10amish, and miss the start. I have a major drive, and a tube journey ahead of me, plus the entrance fee. Bah.

But I suspect it is worth it. I know a lot of people think these are good opportunities to meet publishers etc, but I don’t really care about that. I’m already selling my games through every portal I’m interested in, do not want any retail deals, and frankly, if someone wants to work with me, they should email me. I read them all.

I don’t feel more likely to work with someone or trust them because we have ‘pressed flesh’. I’ve never met my mac partner, or the people who do my art or sound. Why do I need to? I treat such relationships as a meritocracy.

My aim is more to meet and chat to fellow developers, and share tips and horror stories and ideas and warnings about how to do what it is we do. We don’t meet up often and there is always something to say. Plus I have to tell Nicholas how wrong he is about freemium :D

If you are a UK indie developer, not sure whether it’s worth going, I humbly suggest it probably is :D

The mental coding stack, and avoiding interruptions

I was coding something in G4 recently, and it was in theory a simple thing. I was trying to work out why a certain unit in my game was not opening fire on another unit when I knew it should be.

When I was looking at the unit onscreen, it was one of several, and stepping through code is frustrating if you aren’t sure who is who. The best solution in this case was for me to overlay a range UI on the screen so I could check it wasn’t a range issue. That meant writing some new code to display the range UI, which is fine. The problem is that meant getting the range for that unit into the GUI code, and there was no simple way to do that yet. That meant writing some new code to make a note of the range for that unit elsewhere…

In an office, this is normally the point where someone taps you on the shoulder or asks you a question… And then it all falls apart. At this point my mental ‘stack’ is this:

Working on G4
...Debugging the firing bug
...Adding a range overlay
...Writing code to access max range

The longer that list gets, the longer it takes to get back into what you are doing. With really bad bugs (I coded a neural newtork once…eeeek) you can be 10-15 layers in. It can take a good 15 minutes to mentally rebuild that stack accurately if it gets lost, and it *will* get lost the moment you lose your train of thought.

Short summary: Make sure nobody interrupts you when you are coding.

we aren’t in autoexec.bat any more toto…

Because I didn’t make it very fluid, I get an email maybe twice or three times a week about someone who had problems installing an expansion pack for GSB if they bought the base game from stardock or steam. The solution is easy, you need to browse to the place where the base game is installed during the installation. It had not occured to me, when setting things up, that this would be a big deal, but a non-trivial proportion of buyers don’t realise it, and they need me to walk them through it, which is fine.

Obviously I made a mental note to ensure that sort of problem will never arise with future games.

What really strikes me though, is how far we have come from the days of my gaming youth. Go back far enough and the boot-up ‘welcome’ screen on my first computer was this:

You were expecting icons maybe? or perhaps a graphic? or any way to actually launch programs or do anything? Unless you were lucky and had money to buy software, you would actually have to type in the code for each game (the whole program) from a magazine. The operating system was pretty much just a way to support the typing of characters on the screen. No danger of antitrust legislation for bundled apps there…

Fast forward through my days as a rock star and boatbuilder (long story) and I got an IBM 386. These were the days of playing X-wing. Now you might think it’s a pain to get the right drivers these days to run crysis, but back then, you had to literally reconfigure the structure of your RAM in order to run a game. People my age will get a cold sweat remembering autoexec.bat and config.sys, the two dreaded files that between them enabled you to balance your memory allocations just right to get that extra 16k needed to boot up SimCity.

The thing that really strikes me, is that re-configuring autoexec.bat and config.sys was so arcane, so complex, and so fiddly, and geeky, that not only was it much much harder than any problems current PC gamers have to deal with, but it was actually harder than most games. I may have got frustrated with constant deaths when storming the beaches in Medal of Honor, but that was NOTHING compared with the challenges presented by emm386.

As game developers, often geeky ones who are older than a chunk of our audience, we need to constantly remind ourselves that there is a huge swathe of people who never struggled with this crap. To them, sadly, the PC is just like a toaster or microwave. You press the button and then it does stuff. If it doesn’t. you complain to the manufacturer. Sadly, I suspect the nation of geeks and tinkerers we had in the 1980s has become a nation of passive consumers. Understandable, maybe inevitable, but maybe also slightly sad?

Maxxing out the PC

When you are running a new PC game, what percentage of your PC is actually working to produce the experience?

Obviously it depends massively on the game, the specs of your PC, your monitor resolution and other factors, but even in extreme cases I suspect it is pitifully small.

The most obvious under utilisation is the CPU. Most games still run in 1 thread, maybe 2 or 3 if there is some sound streaming, possibly more if they are ambitiously attempting multithreaded streaming in of textured data, and maybe a few more for online play. I don’t think that there are many games that will happily place 8 different threads on the 8 cores of my machine (quad core, but hyperthreaded, so showing up as 8). I can max out the CPU by rendering in a 3d package, or by compiling in visual studio, but I’ve yet to see a game manage it. I can understand why, mutlithreaded code is a bitch.

(One problem is, we don’t have exclusive access to all those cores anyway. Right now, this laptop has 53 processes running 715 threads. There are 17,000 handles open (mostly files, one assumes). All I’m doing is typing in firefox)

The second missed opportunity is hard disk access. Go to windows task manager, performance, then check out the resource monitor. Check out all that disk access. Who is doing that? and what for? You can bet that even during a gaming session, a dozen other apps and ‘services’ will be spamming your disk drive.

Of course the same goes for memory, and access to peripherals, the network yada yada.

It makes you wonder just how jaw droppingly awesome a PC game could be if it didn’t have all that nonsense going on all the time. Imagine a special ‘gamer’ mode of windows 8/9 that effectively locked out all those other services, clawed back all the RAM and the cpu cycles, and let your game have console style complete control.

A pipe dream, of course, because of backwards compatibility and a million other reasons, but I do find myself wondering what percentage of my PC is actually needed to play Battlefield:Bad Company 2.  Is it 5%? 7%? certainly not much more?