Ok, it’s just a theory, but hey, if you don’t come to a guys blog to hear his personal take on things…you are doing it wrong…:D. And to be fair, it’s not just mine, I don’t recall where, but I recall once reading someone make the point that if you could go back in time and remove the movie ‘aliens’ and the book ‘the lord of the rings’, you would basically eradicate modern gaming. Obviously that is a huge generalization, but I think a decent point is being made. I’ve also noticed it in personal experience, I’ve been in a design meeting where the designer has described big sweeping changes to the way the game should look, and it was obvious to absolutely everyone that he saw ‘The Fellowship of the Ring’ the night before.

The problems with that is we have ALL seen Aliens and we have ALL seen The Lord Of the Rings. I’m serious in suggesting 99% of you readers have seen both. You have all seen Star Wars too.

Now there is some decent mileage in saying that you are making a game that appeals to your demographic, and that this is a sensible thing to do, and that yes, lots of people like space monsters, laser guns and orcs. The trouble is, EVERYONE ELSE is doing this too. As a result, you need to bring something else to the table if you are going to compete. The problem is, you are stuck, creatively speaking inside the prison of your own experiences.


Game developers tend to be young, sometimes shy, introverted indoors types who can be a bit obsessive. As a result, they tend towards having knowledge and experience in depth, rather than breadth, and from a game design POV that is stifling. Game design works well (in fact I’d suggest all creativity works well) when you bring multiple influences, hopefully really diverse ones into the mix. Saying you like both Star Wars AND Star Trek does not count. I mean really diverse.

I’d never heard of Ayn Rand before Bioshock. Since then I’ve even bought a book of hers (out of curiosity, don’t hate me, I’ve read The Communist manifesto too, I’m open minded…). I really liked Bioshock (up to a point), and I think the atmosphere and story was what made it great. When I play Bioshock I feel like I’m experiencing ‘Alien’ ‘20,000 leagues under the sea’ and ‘Doom’ combined with a (to me) fairly obscure Russian philosophers writings, with a strong background in art deco. This is why it works. This is why it is cool. This is why Bioshock is not just another corridor shooter or RPG.


Nobody who really does any proper game design thinks they are gods gift to game design. I certainly do not. But sometimes people *do* ask me for advice, and the advice I give is nothing to do with games. If you want to be a better game designer, Read a book you would never normally read. Sit through a movie you would never normally watch, Go somewhere amazing, try something weird. Build up as many experiences as you can. I’ve tried tons, from helicopter/fixed wing flying to horseriding, archery, clay-pigeon shooting, guitar & piano playing, and lost more. I’ve read a fairly bizarre range of books from War & Peace to Chuchill’s War Diaries to Kurt Vonnegut to A.S.Byatt and Naomi Klein.

Kudos (my life sim game) was inspired by a film (Donnie darko…don’t ask), Democracy inspired by a book about cybernetic chimpanzees, GSB by a book about D-Day. It’s probably hard to tell any of those connections, but there are there, and they make a difference.

Don’t stay in the geek bubble, don’t just read science fiction and fantasy, don’t just watch the blockbuster movies. There is a huge range of amazing culture out there that can act as your inspiration, stop sticking to the same few movies.

And yeah…I get the total irony of a guy making ‘Gratuitous Space Battles’ typing this stuff :D

The immaturity of silicon valley

December 14, 2014 | Filed under: Uncategorized

Sooo.. I read (for the first time) today some details of all of the sexual harassment cases that zillow are fighting. Reading about them makes me sigh quite heavily, because stuff like this is just *more evidence* that silicon valley is a VERY immature place.

Some background: I’m British and 45 years old. I’ve visited San Fransisco three times, that’s the extent to which I know the place personally, so these are the views of an older, foreign outsider.

I remember back when Bill Gates was ‘the new rich dude’ and computer people were suddenly becoming very wealthy and successful. I was really incredibly positive about the whole thing. As a scruffy long haired and occasionally bearded geek, I loved the idea that no longer could I be automatically sneered at in posh hotels or restaurants on the assumption I must be some homeless loser. For all anyone knew, that scruffy guy sat there in the corner was a dotcom billionaire. Plus the idea that I could have memorized the script to star wars, enjoy computer programming, and NOT be regarded as a ‘dork’ was awesome. It was time for the geek to inherit the earth.
And there is no doubt that we did. Us geeks with our understanding of C++ suddenly became very cool,. very famous, and very, very well paid. Maybe less so now, but even so, computer programmers do ok in the UK…


And of course those of us who have a LOT of experience, and start our own software business can do much, much, much better than that. Excellent! we win! we have replaced the city-types and the arrogant smooth-talking idiots in suits and a new world order is here…
Except the new wave of highly skilled computer-geek intelligentsia seem to be perpetually behaving like they are still in kindergarten. Frankly, I’m embarrassed to be associated with the ‘silicon valley dotcom success story’ type.

Exhibit A: Stupid office accessories.

When you are 15 years old, or even a drunk twenty something, an office filled with slides and bumper cars sounds awesome. But beyond a certain age, or level of maturity, it just seems kinda dumb. Do you really want to negotiate million dollar deals while sat in a bumper car? Do you genuinely think it makes you more creative? Was creativity not invented until people designed slides and bean bags? To me, an office filled with bean bags and ‘zany’ things is a lot like someone who wears over-sized brightly colored glasses and a loud bow-tie everywhere. In other words, its a desperate attempt to compensate for the fact that you know you don’t have any creativity, and convey a tragic, almost pleading message to the outside world that convinces us otherwise.


Exhibit B: A complete lack of awareness of the real world.

There is life outside silicon valley. There are countries whose main problems are a lack of clean drinking water and a lack of energy or food. Silicon valley focuses purely on people whose main problem is that they think their smartphone isn’t bendy enough, or that a 2048 resolution for their TV isn’t good enough. Social problems are largely ignored, especially if the start-ups actually contribute to them. Ifd there is a massive property price problem and inequality being caused by the tech workers, no problem! just bus your workers past the poor people so they don’t get in the way!


Exhibit C: Short-term thinking.

Some Silicon valley types are awesome at this. It seems like Zuckerberg, Peter Thiel and Elon Musk really get it. Most don’t. Especially the desperate young twenty-somethings who want to become a billionaire NOW, RIGHT NOW, and it really doesn’t matter what happens the day after they ‘cash-out’. Everyone is obsessed with an exit-plan, not a plan to grow something you are proud of, make people happy and create something worthwhile. Just big piles of cash and an exit plan. Many of them even intend to sell their company long before it’s made any profit. As an environmentalist, I’m really sick of business people with short term thinking. Many silicon valley types just want to be rich. They don’t care how, or why. The product is irrelevant to them.

Exhibit D: Laddish, ostentatious behavior.

When people spend an insane amount on a wedding, trash part of the environment in the process, then make amends by just throwing a pile of cash at it afterwards to ‘fix the damage’, I am strongly reminded of the attitude of the upper class UK ‘bullingdon club’ (see below) who would trash expensive restaurants then throw money in the faces of the owners. In short, there is nothing wrong with being rich, but when you literally throw that money at people with indifference after you behave outrageously, and think that makes it ok, then people are perfectly justified in calling you a spoiled brat. The differences between some of the silicon valley set and the wold-of-wall-street set is paper thin. That goes especially for people who hire escorts to mingle at office parties.


Exhibit E: Regulation is so last-century.

I’ve been in Uber cars, thanks to smart friends with smartphones. (I don’t ever really use a phone) I like the ‘idea’ of Uber. I think it could work well. Not having to pay the driver is cool. Knowing when they will show up is cool. Bringing the free market to the closed-in monopolies of city cab firms is awesome. But guess what? Cab drivers need regulation. You need to know that driver is paying tax, you need to know that driver isn’t someone with a history of violent assaults. You need to know that vehicle is safe to drive, and taxed. These regulations exist for a reason. The same applies to regulations about renting out a house or flat/apartment. There are regulations on fire escapes and insurance and safety for a reason. The reason given by the owners of Uber and AirBnB for ignoring all the regulation seems to be ‘errrr….internet dude!’. Sorry that just doesn’t cut it with me, and I’m hardly a flag waving communist.

Exhibit F: Taxes.

As I just said, I’m hardly a marx-quoting leftie, but taxes are the price we pay to live in a fair, safe society. Tax rates in Italy might be nuts, but not in the US or UK. Don’t be dicks, you have stockpiles of cash. Paying your fair share of tax is what makes you a pillar of society, rather than a cancer upon it. Don’t be dicks about tax. And yup, Positech pays all the tax it should, as a normal company registered in the UK, and paying UK corp tax levels on every penny it earns. It’s really not that difficult to do the right thing.


So anyway…my basic theme, is internet billionaires, we thought you could be so much better than this. You are making geeks look bad. Get your shit together. Act like grown ups, not frat-boys.





Stuck on a normal map thing…

December 12, 2014 | Filed under: programming

My lack of maths skill will be my undoing…

I have some normal maps, you know the kinda thing…


And I have all the code (dot product stuff) that plugs in the float3 that is the light direction, and then gives me a tint I can apply to the final pixel to get a nice pseudo 3D bump map effect. Thats all lovely and works, and is cool. The problem is, when I want to rotate that bump map, it obviously all turns to crap :D

This is NOT a case where I can just liue about the light angle, I already get all that… What I need (for this pre-processing cleverness) is a way of taking that image above, and effectively rotating the whole thing by a given angle, and working out what all the pixel colors would be in that case. This is an arbitrary rotating value (so not just 90 degrees or whatever). I’ll work it out eventually, but I suck at this, and I bet it’s easy. This isn’t speed-dependent stuff so slow is fine, either pure C++ maths or some shader code.

My current shader code for rendering using the normal map:

float4 normalcolor = tex2Dbias(g_samNormalMapColor, texCoord);
normalcolor.b = 0; //experiment to force only r or g channels

//convert it to +/- 1.0 range
normalcolor *= 2.0f;
normalcolor -= 1.0f;

float3 LightDirection;
LightDirection.x = cos(sprite_angle);
LightDirection.y = sin(sprite_angle);
LightDirection.z = 0;

float dot_prod = dot(LightDirection, normalcolor);

Thats just lovely, and obvioously I could lie about the angle I put in, but then how do I get the red and green out of it?

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.



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.