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

Unskilled labour and a futurist/political rant

I worry. I worry about the future. it’s a long story, but I really do. And the thing is, I tend to worry not so much about me, but about everyone else. Frankly I live in a wealthy part of a wealthy country with a good job. I’m ok. I am also a pretty experienced computer programmer. Like I say…I’m ok.

I read the old futurist books now and then. I also watch videos of robots like these.

If you know a friend who works in a warehouse and is NOT currently studying part-time to develop some technical skill in some area, show them that video. Then ask them what they will be doing for a living in ten years time. Or maybe in just five. They already wiped out the need to walk around the warehouse, how long will the ‘pick worker’ be human? Not long that’s for sure. Robots work 24/7, never strike, never get ill, never argue, never sue you, don’t need lighting, heating, toilets, car parking space… If you can replace a human with a robot, it’s an absolute no-brainer. If you were building a new factory now, would you assume a need for *any* human input?

Now look at the date on that video…Yup, this is OLD technology. REALLY OLD. Imagine how much better it is now, in the warehouses we don’t get to see because they don’t want competitors to know about it. I think we can safely kiss goodbye to every warehouse job in a decade or two. What’s next? Well why pay people to stack shelves in a supermarket when robots could do it when the store shuts?  How long till that happens? they already replaced a lot of checkout staff, the shelf stackers will be next. Even the security guard is likely to be replaced by some sort of drone in the next twenty years.

Twenty years will probably see mass market acceptance of driverless vehicles in at least some countries. Kiss goodbye to every taxi driver, every delivery driver, every bus driver, every train driver, every chauffeur. Digital cameras basically put kodak out of business. They employed 145,000 people worldwide. That business no longer exists. That was relatively unskilled work too, gone. We have tens of thousands employed in call centers. For how long? isn’t AI getting better at that sort of thing than call center staff? How many people will the mass-deployment of ‘siri’ style tech put out of work? A million? ten million? I’m drinking coffee as good as any I’ve tasted as I type this. It wasn’t made by an expert barista. It was a £200 machine you can buy. Yup, robot baristas are already a mass-market thing. Those jobs are gone too.

So where are the unskilled jobs going to be? Maybe some will exist in the developed world with appalling labor conditions and wages digging in mines or sorting trash, but where is someone living in London with no skills going to work in 2035? I’m guessing nowhere. I don’t think any such job is going to exist.

And this is what worries me, because nobody I meet who does such work has any clue how doomed it is. No politician really discusses it. We worry about short-term 1 or 2% ups and downs in consumer spending, as if that really matters when it comes to employment and wages. All the commentators and economists out there seem to be ‘surprised’ that the economy is doing well but wages are low. Really? you didn’t predict that millions of unskilled people fighting over the same dwindling supply of jobs was going to depress wages?

Whether you are left wing or right wing, no sensible debate on unemployment, wages and inequality can be taken seriously unless the topic of unskilled labour is put front and center. It is just *not an option* to have unskilled people in a modern society. We should stop arguing about which company will, or will not bring unskilled labour jobs to our country, or what wage they will pay those people. It is a false debate. Those jobs are going very soon regardless who people elect the govern the country.



On programming decent 2D Game Explosions

Getting explosions right is HARD. Explosions are (obviously) a big part of Gratuitous Space Battles 2, and I want the GBS2 ones to be better than GBS1 by a noticeable margin. They already are, but I’m aiming for greater heights. Currently the explosions look like this:


And this: (smaller ones)


Which is ‘ok’, but I’d like them to be better, which means spending a lot of time looking at video of space battles (oh the things I have to suffer), freeze framing, stroking my chin and looking at code. There are a number of things people assume about this task which I’ve found not to be true.

Assumption #1: You can do it all on the graphics card. Not so, because different people have different cards, whose capabilities may vary dramatically. I want GSB2 to be playable on a standard laptop, not demand a DX11 driver and card. Plus a lot of these techniques assume Directx11, and you then need a DX9 backup for people who still have windows XP anyway so….

Assumption #2: it’s simply about the number of particles. Not so. I have a fairly efficient particle system that can handle lots, but I have found more does not always equal better. In short, it doesn’t seem to be how many particles you have, but how they interact, what textures they use, and how they move. Render modes (additive vs normal) also factors in a lot.

Generally, my approach has been to have a bunch of particle emitters all clustered together into one explosion. I have some big black clouds that build slowly, some firey small particles that fade out quickly (additive ones), some flame-texture particles that are additive, and some not additive, and I render them in a deliberate order and it looks like the stuff you see above, which is fine, up to a point.

The thing I haven’t managed to really convey is the ‘billowing’ effect of an explosion. Here are some of my reference images…


This sort of thing is very hard to get right ‘in-motion’ because it involves some 3D movement of frankly millions of particles, so obviously the first question is how on earth to ‘cheat at it’ and get it looking vaguely right. In Gratuitous Stank Battles I tried a complex system where particles had #heat’ assigned to them, and cross-faded between white hot to black smoke (and different textures) over time. it looked ok, but probably not enough difference to warrant a bucket of extra code that was associated with it.

I am starting to think that decent explosions are 90% physics, 10% graphics. What I need is some more complex control over the movement of individual particles, rather than just more of them. With the explosion at the bottom, I’m thinking that there are a bunch of different ‘focal points’ of the explosion, different ‘billow-centers’, if you will. There has obviously been a central ‘bang’ and this has ‘spawned’ a bunch of airborne ‘flame emitters’ which continue to create new burst of flames which are created, balloon up, and then down and dissipate.

Currently I have zero support for such a system. An explosion is a single event, which may have a bunch of timed emitters with it, but it has a single focal point. Secondly, a particle has a single growth variable, which means it either is spawned and gets bigger over time, or it gets smaller over time. What I may need is the capacity to associate a timed sinewave with the size of a particle.

So my latest explosion todo list (fun stuff I do when I’m not busy) is something like this…

Add support to particle configs for a ‘sinewave-based’ growth variable, with starting size, max size and duration.

Create a new class of object called a GUI_SubExplosion, which can be spawned by an explosion and drift off from the central point slowly over time. Have that sub-explosion itself contain a list of particle emitters that it manages.

Should be worth a try anyway… In the meantime here is the latest big pharma blog video. and a nice article on showmethegames about banished.

Work out what you are good at

I’m not very good at game balancing and low level design decisions (like whether gun A fires faster than gun B, or what the cost of power C is). I’m just not. I also suck at art. I have no idea what colors go with what colors. This is why my better half chooses my clothes. I’m safe with black, but beyond that, I’d end up dressed like a circus clown if left to my own decisions.

I’m good at some other stuff. I’m very good at Game Names, big-picture ideas for game themes and ‘style’. I’m very good at optimization, and good at the business/strategic/marketing side of things. The thing is, it’s taken me a while to absolutely come to terms with what I am and am not good at. I started selling games in 1997, so it took me 17 years to work this out. That means that for most indie devs out there, the chances of you having really worked this out yet are pretty fucking low.

I know one game developer who is good at big picture stuff, but very bad at mechanics and actual coding. They are awesome at marketing. I know another who is a genius at both high and low level design, but not so good at strategic biz stuff. Both are great talented people who are doing ok. Both will remain nameless :D

The big decisions and difficulties come when you think about what to do regarding the stuff you aren’t good at.

There are basically two choices: Get good at them, or outsource them. Obviously it isn’t that easy. You *can* outsource almost anything. Even big-picture stuff like game name and style/design can be outsourced. You won’t see an advert for people who do this, but there are plenty of very talented designers who would work for you as a consultant on such stuff. There is no shortage of guys in suits who will act as consultants for you on the topics of business and marketing/PR as well. When it comes to coding/art etc, the options to outsource that stuff are well known and varied.


In the long run, you need to work out what bits of your business you do want to control and run personally, and what stuff can be left to someone else. For me, with my temperament and skills/interests, I want to control all of the business, PR and big picture design. In an ideal world I’d do all the coding too (I still do…), but I could cope with letting that go a bit one day. That means I need good artists, QA, and design people, and I’m gradually over the years building up a list of the right people for all this.

The tendency, and I’m sure many indie devs encounter this, is to pretend you can be good at everything, just given enough enthusiasm/late-nights. This is bullshit. Steve Jobs didn’t solder together Apple II components, nor did he design the iMac. He knew what he was good at, and stuck with it. At the start, when you have no money, you’ll probably need to offer revenue share to artists or PR/biz people who help you out. That’s fine. At the very start, if you are feeling adventurous, you probably (for at least one game) try and do it all yourself, for no other reason than to work out what you really do enjoy, and what you don’t. Try not to be like me, and take over a decade to work this out.