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

Creating a real working environment for game development

It drives me mad when I talk to some younger indie devs how little actual *work* they do. They are hardcore serious game devs, into game jams, and going to games conferences, and maintaining twitter, instagram and facebook pages about their game, and they often talk at shows, or attend talks, or tweet about talks, and watch tons of past talks, and play fellow indies games, and meet up at game dev meetups and try out the hot games and compare them to other games and…

…very rarely they sit in front of a keyboard and code a game.

This is a big problem if you actually want to make a living from games rather than just enjoy the ‘indie lifestyle’. FWIW, the indie lifestyle is easy. Dye your hair (or for extra points just part of your hair) bright blue, get an apple laptop, and cover it in stickers from games shows. Buy a GDC T-shirt (or for extra points, one from a smaller show), and spend at least three hours a day on social media. Bonus points for every 100 posts on gamedev subreddits talking about tech and marketing and design issues. Super bonus points for getting into heated twitter arguments about whether or not games are art or inclusive.

Oh obviously, you need to have a name and genre (maybe even a game jam concept?) for your game, so you have something to talk about.

This is all fine, and reminds me a LOT of the guy who persuaded me to take up learning the guitar when I was at college. He had been playing the guitar for about 3 years and was very cool. He showed me guitar tab one day and I bought a guitar the next month. Within 2 months I was a better guitarist than him. I ended up playing in 2 bands, and working briefly as a session guitarist, as well as teaching probably 100 people to play. AFAIK he never played a gig.

The difference between us was that I wanted to play the guitar and learn how to play well, whereas he wanted to be a guitar player. This was probably related to a desire to be cool, or get women to sleep with him, or both.

My advice is to know which you are. Are you an indie developer because you love the indie scene, and the people? Or are you an indie developer because you want to make games, ideally full-time? I also suggest that if its the latter, you need to lock down and optimize WHERE you do it.

Briefly, when I quit my job to go indie the first time, and my wife was at work full-time, I experimented with coding in coffee shops, because thats what they show people doing on TV and in magazines. It was crap. They are full of mothers with screaming kids, expensive (but average) coffee, no stability, no room, no peace, an environment 100% NOT conducive to C++.

this is not work

You MAY be one of the 1% of people who can program and design games and do real serious *deep work* while in a noisy environment you do not 100% control and surrounded by other people who often interrupt you. You really may be… but you probably are not. Almost everyone can concentrate better when things are quiet. Programming especially requires *deep* concentration, that is easily shattered and hard to rebuild.

In short, unless your environment is quiet, free from clutter, dedicated to one thing (work) and set up to convey that this is a WORK location, not a chill-out zone, then you are not going to get much done.

My tips?

Get a dedicated room in the house/flat if you can. If you cannot, then set dedicated work times, when you are not to be disturbed for any reason except a literal burning building…

Get an office chair, I recommend an aeron but cheaper alternatives are available. Set it up to be perfect for typing and reading, not slouching. You are *not* going to work all day on a beanbag or a sofa. You just are not.

Only people insecure about creativity think beanbags will save them

If its not quiet enough, get noise cancelling headphones and wear them.

Do not fill your desk and office with lots of fun toys and other distractions. Yes, you are making a fun game, but 95% of your time is work and implementation. Don’t confuse your subconscious. Are all those desk toys REALLY making you more creative or just distracting you from actual work.

Most of us are pretty shallow. We really care about what other people think of us, and when we are young, especially if we are single, we obsess about seeming cool. Work is not cool, work is for serious grown-ups who are boring. Thus we spend a lot of time trying to look cool, rather than be effective. If you saw me sat here right now, unless you noticed the framed prints of past games on my office walls, you would assume I’m working in fintech or IT. Its a very un-gamey environment, and it keeps me focused.

When you have shipped game #10 and sold game copy 1,000,000, feel free to fuck around. I *do* indeed have a child-size Tesla model S propped up in my office, and a toy car with toy robots on my desk, and am happy to be interrupted by cats and visitors all during the day. I can afford to be slack, but it was not always the case.

Set your environment up to be worklike, and you *will* get more done. We are simple animals and highly influenced by our surroundings. Stop trying to be cool.

Why I skipped GDC in 2019

So… the interwebs are awash with the happy high-fiving post-GDC backslapping and cheering and ‘omg this was what my GDC experience was like!’, so in typical cynical British fashion I thought I would put fingertips to keys for my alternative take.

Some background: I’ve been an indie dev for 20 years and coding for 38 years (not a typo). I’ve released over a dozen games, including Kudos, Gratuitous Space Battles, Democracy and production Line. I’ve also published some games. I work full time doing this as my job, and live in rural UK. I’m 49 (bloody hell!) and married.

I went a LONG time as an indie before finally giving in and going to GDC a few years ago. I remember my first experience being one of nervousness at not knowing ANYBODY, so I followed Jake Birkett of Grey Alien games, (who I’ve known for years) like a little lost and bewildered puppy hoping nobody would notice I was a total n00b to it all. The next year I went back, and the next year etc. This year was the first time I missed it since I started going.

As an alternative to GDC this year I did pop along to a way smaller London event, and spoke a bit about Unity and making your own engine, and met up with some UK indies I’ve known a long time to chat about stuff, which I’m really glad I did. Its a 2-3 hour trip from my house to London, so I stayed over in a local hotel. Drink was drunk, Lamb was eaten, jokes were made.

My decision to avoid GDC this year was very deliberate, but not a complete rejection of the whole concept. I may well return there next year, but my motivations for doing so will be almost entirely opposite to the motivations of people who attend their first GDC, so I thought it worth talking through how I feel about it. In that spirit, lets start by being negative (hey…British!) by listing what people do NOT tell you about GDC.

Negative Item #1: San Francisco. I actually got married in the US, and we stayed briefly in SF on our honeymoon. It was fab. The golden gate bridge! the trolleybusses! the huge pancakes! it was lovely. A great tourist town. Really cool. Almost 20 years later and… Oh…my…god. I’m not sure whats worse, the fact that there are *so many* homeless people or the fact that local residents have got used to totally blanking them. I’ve occasionally given cash to them, sometimes when I’m in a good mood, a fair bit of cash. One guy shouted ‘are you serious man?’ at me once. I guess they are used to being ignored, an inconvenience. an embarrassment. As a visitor, its totally shocking. And many of them seem to have untreated mental health issues.

I know all big cities have a problem with homelessness, but having just got back from London I know its TEN times worse, (at least to the casual visitor) in SF. Bad as the homelessness is, its not the only problem. There are parts of SF that you are very clearly warned DO NOT GO THERE. The really scary bit? they are maybe *one* street away from five star hotels. Its like some dystopian sci-fi future.

In a very small way, I’m not going this year to protest that San Fran will not deal with its problems. This is not a poor city. And frankly, I don’t go abroad much. I don’t want to spend half my time worrying about being stabbed, or getting depressed about homelessness. Other really nice US cities are available. Also, WTF is wrong with Las Vegas? come on guys… Vegas!

Negative item #2: Money. Luckily, the gods of market forces have been good to me (also I work like a fucking maniac and have 20 years indie experience and no kids), so my company does very well. I admit it, I fly business class when I visit the show. I can afford to buy a complete GDC show pass if I wanted to ( I do not). The cost of that pass?

$2,499

This is for a conference pass. Not a new laptop, or a new laptop + apple iphone X plus 3 course meal. Its just a pass that lets you actually go to everything at the show. They have to be absolutely kidding right? By the way, that just gets you into the show. Your food & drinks are extra, your hotel extra, your flights extra, your transfers from hotel, extra. Is this serious? and that brings me onto my next item:

Negative item#3: AFAIK hardly anyone is getting paid. The speakers? they get a free pass (OMG at $2,499 value!!!), but fuck-all else. You think they get free flights too? free hotel rooms? nope. Nothing, at least not the last time I checked. The CONTENT at the show (the talks) are provided by volunteers. At least everyone else got paid. But no, most of the ‘helpers’ at the show are volunteers too, they aren’t getting paid either.

People want to start a discussion of unionization in game dev? FFS lets start here. You give a talk at a show where the tickets are two thousand dollars, you need to get PAID for your time. I’ve spoken at GDC twice (one indie rant, one talk with 3 or 4 other devs). I’m never doing it again. My time IS money, especially if I have to spend my own money to get there and back. FWIW, other shows sometimes DO pay, and sometimes even for flights & hotels.

The thing is, you may consider all this to be worth it if the actual content of the show really improves your business right? I totally agree with you but that means item 4:

Negative item#4: The overwhelming majority of the talks are of zero use to you. This is not a dig at the speakers, many of whom are excellent and put a lot of (unpaid) work into them (including the work done by everyone who ‘submits’ a talk, but gets rejected). The fact is… game dev is a vast topic and a lot of platforms, genres and technologies are in play. The vast majority of it is NOT helpful to you. For example, are you a mobile dev using java and opengl to make an MMO? Awesome, but me giving a talk on optimising C++ and directx for PC strategy games is probably fucking useless for you.

Unless you are bizdev + marketing + finance + coder (all languages) + artist + animator + designer… the overwhelming majority of talks are not in your area. And guess what… multiple talks happen at once, so the chances are you will miss some of the ones you wanted to go to anyway. And oh… sometimes there isn’t enough room, so you will not get to attend a talk anyway.

Of course that applies to any big show, but that doesn’t mean its not a factor. Also applicable to every other big show is…

Negative item#5: You may well get ill. Or suffer in other ways. I used to laugh at people who used hand sanitizer and fistbumping. What feeble office-jockeys are they? whats the worst that can happen? Then it happened to me. I was ill after the show. very ill. Horribly ill. Embarrassingly ill. Get me drunk and ask for details one day. Its actually quite funny, but at the time: No. It was BAD. You are shaking hands with hot sweaty geeks from all over the planet. You *will* get ill at some point, and lose productivity.

Also, even if you don’t get ill, if you are a shy introvert coder like me, GDC is NOT DESIGNED FOR YOU. There are a lot of very confident, loud, assertive, extroverted, friendly, upbeat Americans who will talk extremely loudly in very loud bars absolutely packed with people who all seem to already know each other. You think you will enjoy trying to close a publishing deal over cocktails in a loud dark nightclub where people are yelling across you? You will not enjoy that. Nobody does, and yet its the same, every year.

So given all this… why the fuck did I ever go back?

The Good Stuff. GDC, like any big game show allows you to meet probably at least a hundred people who *do what you do*, and are as keen to talk about it as you are. You will hear a lot of business insider stuff. You will be exposed to lots of ideas, and get insight into the way the industry is heading. We are all still apes in T shirts, so physically meeting and sharing coffee/beer with someone means you are WAY more likely to work with them in the future. Networking is a REAL thing, and GDC is the heart of games industry networking. Despite everything I’ve typed here, you should all go to it once (if you can afford it).

And I admit, that even as I type this extended long-form rant, I do regret the fact that so many people I’ve met before at GDC, like Ron, Tommy, Brad, Chet, Ichiro, John & so many others… I’m just not going to see this year and thats kinda sad. TBH, I go there more for the meals and the drinks and the banter and jokes than any actual *biz* need, but I miss all you people, and wish we could hang out.

Oh and BTW I missed out my ‘kinda preachy’ (*but if you know me well, you will know its my primary reason*) argument for NOT going to GDC. I’m an environmentalist, and if you are too, you either need to not keep jumping on long distance airplanes that pump out serious CO2, or you need to offset the fuck out of it when you do go. I *did* consider flying & offsetting but decided against it.

Anyway… hope this isn’t too depressing. Its my honest take. Be aware of survivor bias, and peoples desire to always appear happy on social media. People are not going to tweet ‘Went to GDC, was expensive and crowded and probably a waste of time’. Nobody does that, but some people likely did think it. Of course, YMMV :D.

Healthy game launch. Yay!

So you may have missed it, but we launched Production Line out of Early Access almost exactly a week ago. It looks like we have had a pretty good launch. We were in various charts in various categories, sold a lot of copies, got some good word of mouth coverage, and a fairly minimal amount of bug reports. I have remained relatively calm, and relatively sane, and am still motivated to improve the game and continue to do (some) work on it for the next few months. Woohoo.

TBH this is the smoothest game launch is Positech’s history. This is the first time I’ve done early access, so its the first time I’ve had literally tens of thousands of people hammering the game code *before* I officially declare the game *done*. Frankly, these days most indie games get a way bigger EA launch than a final product launch, so its not as gentle a ramp up as it sounds, but it still resulted in a pretty bug free departure from Early Access

Something I was very happy with was that I could set the ‘final’ build live for all the EA players, not touch the game *at all* for a few days, and when I was absolutely sure everything was fine, just literally click the ‘release out of early access’ button knowing that things were pretty stable. I highly recommend this!

So far we have had ONE patch since release, which fixed a short list of things, and there is another one on the way in maybe a week or so, which will be the accumulation of a bunch of bug fixes (even some pretty rare crashes) and some UI features people have asked for like a camera speed slider, autosave interval slider, and some extra stats. It feel so good to be in a position where people are saying ‘the game needs a better UI for feature X’ instead of ‘the game needs feature X’.

I definitely have plans to do some paid content for the game (DLC) alongside regular updates. I’m obviously not in a position to even tease anything like that yet, but as I prefer content-heavy DLC to code-heavy DLC (its just optimal given that I am the only coder), such things do not take *much* time to do (although there is of course a big art budget cost).

Right now I’m pretty happy with how Production Line has gone. Even if the game makes NO MORE MONEY AT ALL, I’ll be happy (but amazed!), and I think over the long tail of the next 2+ years there is a good chance of it making at least 50% of its current earnings again, which I’d be very happy with. I’m currently minded to *not* go mad with sales and discounts, as I think this is getting a bit out of control and games are being devalued, but I may think differently about that in a years time.

Anyway, this is nothing but good news, which is a change from the usual indie ‘I sold no games and have eaten my pets’ stories, but I’m not going to pretend things went wrong when they didn’t. I always blog openly about my screw-ups (2 recent games still in the RED for me :(), so I may as well be honest when things go well.

Thanks to everyone who bought the game so far!

Production Line leaves Early Access tomorrow! (new trailer)

My super-complex spreadsheet which I use to track the spending and income for my latest game (Production Line) informs me that I have been working on it for 3.12 years, and have spent a (very roughly estimated) total of 9,115 dev hours on it. The game is leaving early access tomorrow!

In truth I have probably spent a lot more hours than that, as I tend to overwork, and spend a lot of time in evenings checking forums and reddit/facebook etc to reply to people, but anyway you look at it, 3.12 years seems to be quite a long time to work alone as the only coder and designer on a game.

Bizarrely, I am still very much enjoying the games development, and have a list of extra things I would like to tweak and improve after release. In many ways the decision that the game is ‘released’ is a purely arbitrary one. In marketing terms it encourages people who dislike the state of most EA games to try the game out, and it also signals a potential slowing down in the addition of new features.

I still have a lot of ideas for stuff that could be added to the game, and I suspect we will have some paid DLC once the dust has settled. I wont rehash my pro-DLC arguments here, but I’m in believer in it both as a developer and a gamer. Why will DICE not sell me panther tank DLC for Battlefield V? TAKE MY MONEY. (also new hats please!)

Speaking from a personal point of view.. I am TIRED. I’ve felt like it for a while, and I think I do need a brief period where I scale down my work slightly. We are currently working on Democracy 4 (I’m not coding on it), and helping to manage that is an imminent concern. I currently have NO PLANS for any other game after Production Line (as a coder), so I’m pretty free (assuming it sells ok) to relax for a bit.

While I relax (Maybe for an HOUR!), here is the new launch trailer for Production Line. I really enjoyed getting this made. I hope you like it :D

Oh and if you have suddenly decided to buy the game, you get a steam key and we get 95% of the money if you buy using the widget below!

Technical debt… or investment?

Coders talk a lot about technical debt. here is a rough definition:

“Technical debt” (also known as design debt or code debt) is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy solution now instead of using a better approach that would take longer.”

It’s often used in the context of justifying redoing some work. As in… “we have a lot of technical debt. The best thing to do is rewrite all this properly from scratch”. To some extent that can be justified. The engine for your games is effectively your house foundations. Don’t start building a house without ensuring you have decent foundations, and all that sort of thing. The problem with this mindset is that people (or rather…computer programmers) often get into the situation where they want to re-code everything from scratch again, and again, and again.

The thing is, the more experienced you get, the more you realize that the big, messy, patched, complicated looking smorgasbord of code that you are working with probably HAS to look like that. it probably looks like that for a reason. Its not pretty, its not clean, it doesn’t make for nice diagrams but it WORKS and thats important.

If you think thats not true I point you towards the apache web server (literally a pun on ‘a patchy web server’) and Microsoft windows, an absolute towering pile of code mess that is the very definition of technical debt. How can I possibly view these as good things…?

The simple answer is: Practicality and commerce. Apache is not the most beuatiful work of art in terms of highly structured, elegant, perfectly designed code, and windows is literally the state of the art in horrible hacks. (Like this one, to ensure sim city still runs). To quote:

They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.

And it you are someone who considers code to be beautiful, who likes to describe themselves as ‘a software architect’ instead of ‘hacker’ (or code monkey), then stories like this will fill you with rage but…

…Apache sure is installed on a lot of servers, and a huge number of PCs still run windows. Why? Because accepting that your patchy, confusing, held-together-with-string piece of code is actually MORE reliable than new stuff you could code today is actually a sign of coding maturity.

I do not open source my engine, and TBH nobody would likely use it if they did, but part of my reasoning is that it would be embarrassing. I couldn’t even decide on a naming convention. At one point I didn’t care, and I had classes called things like IniLoader. Then I thought it would be cool to have a ‘G’ prefix to indicate game engine, so I have GArc GFile, GHashTable. At some crazy point I had my classes in all caps, hence DEBUGENGINE.h. Some of the code separates functions with /************/ some of it with //////////////////////////////. Pretty much the only coding standard was a member variable naming convention with FirstLetterCapped.

By far the two biggest embarrassing pieces of dodgy code in the ‘more or less part of the engine’ GUI code are the following. Please try not to laugh.

Stupidity one: I have a GUI_ButtonBase class, and a GUI_WindowBase
class . They are DIFFERENT things, with no connection, despite a button obviously being a derived class of a window in any sensible system. Thus my GUI_WindowBase class contains separate lists of buttons, and child windows. *sigh*.

Stupidity two: All my windows have a virtual function call CheckClick(int x,int y), which they process, then call on any children. You would think that this took the x,y of the current mouse position and operated on it, but for some reason I gave up bothering and use helper functions like IsMouseInside() to check such stuff, which ignores the passed-in x and y. I still go to all the bother of passing x,y, down the hierarchy, but its ignored. I’m just paranoid about it.

Sure I could fix this, I could rewrite my button code, junk that dumb x,y, thing and rename all my classes sensibly while I’m about it. I would then need to spend several days changing all the code in Production Line, AND checking it, and I *ASSURE* you, I would miss something. There would be a new crash bug. I wouldn’t spot it, and maybe after a dozen players encountered it, someone would tell me about it. I would have achieved nothing, but frustration for my players, and a smug feeling that my code was less embarrassing.

I’m not giving into that. My current code WORKS, it has less bugs than it *ever* has. My current game (Production Line) is more stable than ever, and more stable than any game I have ever shipped. Going back and changing parts of my engine because they look messy, or because modern code fashions have changed or because there is a new API or code pattern would be MADNESS.

Don’t be too hard on your old code. Sometimes age brings wisdom.