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

Money is not the objective of growing a big business

This is something I think about a lot. As someone who is very analytical about everything, especially thoughts, I find myself thinking the question: what is the point of running a business? At a small level, when the business makes the average (or simply high) personal income, the objective seems pretty obvious. Running your own business brings creative freedom, and freedom from people telling you what to do (something I struggle with). Its also possible to achieve a higher level of income from running your own business than it is (easily) from being an employee. Multiple indie devs have earned > $1million a year, but unless you look at hedge fund managers or top, top, top lawyers, you would be hard pressed to find anyone earning that as a salary who is not also the CEO. To a certain level then, the ‘objective’ of running and growing a business seems pretty simple and obvious: Money.

I think there are two misconceptions around the issue of making money from running a business once you get above the $100,000 a year level, which many psychological studies have suggested is the level beyond which extra money does not translate to happiness. I’d like to offer my take on them both. They are:

1) Nobody needs more than $X, so why do these people keep working?

2) The point of growing the business is so you make much more money.

The first one I think is easily addressed, and it comes from the differing experiences of people who run a business doing what they love, and people slaving away at a job they hate. For the former, the job is their life, is what they love, its what they enjoy, its what they do. For the latter, the job is a means to an end, and something they would like to do as little of as possible. If you are an employee, and you hold this view, think of it like this: Imagine something that you really enjoy doing, and would do all the time if you could. lets say its playing tennis. Imagine the opportunity to start a business where you played tennis and were paid for it, and you earned the same as your current job. Awesome right? Now imagine things go well and you get really good at it, its your full time occupation so you get so good at it, it takes over your life. You love playing tennis. Suddenly you are making $100k a year playing tennis. You are living the dream. Then things start expanding exponentially, you get offered amazing world tours to show off your tennis skills. People are always telling you how great is is watching you play tennis. You earn $1,000,000 a year playing tennis. This is amazing. You buy a nice house, car, maybe a boat, if you like that sort of thing. You get used to a decent life. The next year you make $10,000,000 playing tennis.

Why would you stop playing tennis? After all, you love it. Sure, people pay you way beyond what they would have to pay you to do it, but thats fine. Meanwhile, people who hate tennis wonder why you dont just stop being such a workaholic. Surely you have *enough* money right?

Now replace the word ‘tennis’ with ‘management consultancy’ or ‘engineering’ or ‘computer programming’. The same applies.

People often get to the top of their profession (and thus earn huge amounts) because they are obsessed with what they do, and they LOVE what they do. Wondering why they keep doing it when they don’t ‘have to’ is looking at the phenomena the wrong way.

So onto the second misconception. This is aimed at people who own big, serious businesses, probably worth a few hundred million, or a billion+ I’ve already established that these people are not going to stop work, and the business is, with any luck going to continue to grow. What I think goes wrong is that the people running these businesses tend to get obsessed with the profits as some sort of score card. They think growing the profit (or market cap) is ‘the point’. I suggest that this is definitely, definitely not ‘the point’, and if you are a CEO who runs a big company and thinks it is, you need to reassess your life.

I read a great book by Henry ford, who was a *complex* man in many ways, and had some funny ideas, but one of the things he was very keen on was employment. He went to great pains to analyze every possible job in his factory to work out what jobs needed people to stand or walk, what jobs required just one arm, or one leg, what jobs could be done just by touch, and was able to employ a large number of blind & disabled people on his production line as a result. He was a bit obsessed (way too obsessed) with his employees home life, and their health, and stability of their relationships etc. He was actually pretty nuts… but in his mind, this all came from a sense that there was a *responsibility* of the large company to be embedded within society, to be a big part of society, and to improve society. Not as some sort of corporate PR, but as the actual driving goal.

Modern business has forgotten this.

You have to look no further than the idea of special employee-only buses to whisk your staff through the post-apocalyptic nightmare outside your ‘campus’ (sounds better than ‘compound’ right?) to their offices, to see how much modern business (esp tech) forgets this. Modern tech thinks that market share, profit and market cap is EVERYTHING and they dont give a damn about what they do in order to get there. Profits are to be spent on ludicrously expensive corporate headquarters, to keep the 0.01% of society you care about (your employees) insulated from the world around you. This is WRONG, and a really *bad* way to keep score as an entrepreneur.

Tesla loses money, and Apple makes a fortune, but I’d wager more people look up to Elon Musk as a hero than Tim Cook. The reason is that you get the impression Elon is trying to achieve some social goal, with money just *a means to an end*. With apple, the ONLY goal is money.

Right now, if you run a big profitable tech company, the #1 best thing you could do to actually achieve some good in society (and my point is that *this* is the objective of running a company) is to hire some people. Pay them well, give them a decent quality of life. Amazon is an economic behemoth, it doesn’t *need* to treat its warehouse staff so badly. No tech company with more than a billion dollars in free cash should ever, EVER, keep you waiting on the phone for tech support or customer service. Those areas are a GREAT way to increase employment, keep customers happy and achieve some social worth. I’m a hardcore free-market worshipping capitalist. I even read a bit of ayn rand (its a bit heavy going after a while…)  I am NOT some jealous leftie moaning about other peoples wealth. I just realized, after a lot of thought, that giving people jobs, hiring people and yes… paying your taxes, makes you feel way way better than just adding another zero to a bank balance you are already having trouble spending.

 

Why advertising always works, using science, not bullshit

Its my life’s work to persuade indie game developers, computer programmers and other ‘smart’ people, that they are wrong and that advertising works. A lot of people think ads dont work, and some even arrogantly think ads work, but ‘not on them’ because they are ‘too smart’. This is totally and utterly wrong, and the reason these otherwise ‘smart’ people are so wrong is they fundamentally misunderstand how ads work.

The top assumption about ads is that they are trying to consciously persuade you to purchase the product. Ha. No. That was maybe 50-100 years ago. Thats not how ads *actually* work, although frankly 75% of people who actually work in advertising have no idea about this. Sometimes you see really bad ads and its clear they have no idea, but there is plenty of scientific research into ads, and more importantly the working of the brain, which shows how they really work.

Our brains are basically super-parallel pattern recognition machines. Pattern recognition is an excellent way to structure the brain, and also explains why we are so amazing at recognizing faces, but so awful at basic maths. First and foremost, we are not philosophers, scientists, programmers or politicians. First and foremost we are a lump of flesh and bone that wants to find food, and not get killed. Everything else, even sex, is secondary. By having our brains work as big pattern recognizers, we get very good, very accurate and very FAST at recognizing visual images. Computers can run rings around us at math, but still struggle to match our ability to navigate our 3D world by driving a car. We are awesome at recognizing stuff.

If you had to write a very FAST (and thus very short) program for staying alive, and could do only on the basis of visual input, yet had amazing pattern recognition, how would you write the pseudo code? Here is the simplest (and best) code.

IF IfSeenThisBefore() {Relax()} ELSE { RunLikeHell()}

It makes perfect sense. Our basic, animal selves have seen fellow humans all the time, but never seen a lion. So when we see a lion, we run like hell, because it MIGHT be dangerous. Any visual pattern we have hundreds of copies of stored in our brain is a sign that we saw those things a lot AND LIVED. It really is that simple. To put this in less ‘scared mammal’ terms… Fear the unknown.

Xenophobia isn’t all the fault of fox news, its baked into us, and its baked into most mammals too. Be wary when you are in an unfamiliar situation. If you see images you have never seen before, be alert. be prepared to flee at a moments notice. Seek out familiar sights, which are signs that its safe. When you think about it, this explains a whole host of human conditions and situations which we dress up as being more complex.  Scared of going to a party full of strangers? Yup, same phenomena. Scared of first day on new job, Yup, same phenomena. Hate sitting in a restaurant alone waiting for your partner? Yup, same phenomena. We are hardwired to FEAR novelty and to seek out comfort in FAMILIARITY.

So deep down, we always choose the familiar, in all circumstances, when we are not deliberately and consciously over-riding that using our higher-brain functions. And guess what? when we are casually browsing, we are not using our higher brain functions, a load of visual fluff enters our optic nerve and the subconscious brain responds to it, always seeking out the familiar as a sign that things are ok, and nudging us in that direction.

When your brain looks at a sea of capsule art on steam, or GoG or the Humble store, or itch.io, its subconsciously checking for anything familiar. If you recognize a logo, even subconsciously, then BAM! Thats the first thing you are going to give your attention to, and maybe click on. You will not do it deliberately, you will not do it consciously, you will deny that this is true, its very possible that even with a gun to your head, you will not be able to recall seeing that logo anywhere beforehand, but even the slightest, faintest, vaguest impression somewhere in your brain will give that logo all it needs to double, triple or quadruple its click-throughs on that store page.

Ads work. Just not how you think.

Game pace vs content cost

A friend of mine is making a game that looks absolutely stunning. its a 3d action game, and its got a wonderful art style. The art ‘design’ is fantastic and the level of detail is really high. There are lots of tiny little interesting objects all around the world that have been lovingly modelled and textured and animated and had sound effects attached to them. It makes for a lovely world. The game is a sort of survival/action thing with some sneaking, but a lot of running, and as a result, you get through areas of the game relatively quickly.

Here is an icon from Production Line (my car factory sim).

If you play Production Line, you’ve seen that graphic a lot. Its in every game, all over the place. You see it maybe 10,000 times in the course of a decent play-through, and it may be on the screen 70% of the time you are playing, because its a key resource in the game. You can guess that, lovely though it is, it didn’t take days of artist time to make this icon. In other words, getting that piece of ‘content’ produced was pretty cheap.

Content is cheap, but at a certain level of output, the cheapness starts to multiply and become not so cheap…then expensive, then ruinous. This is why the realistic FPS scene is dominated by a small number of big players. You simply cannot make a photorealistic style FPS that is only going to sell 500,000 copies, even if they are all at $59.99, because you will go bankrupt immediately. Take a look at this:

Its awesome right? Its amazing that video games look this good these days. But textures that high-def take a LOT of time to make, vs the 128×128 pngs in Production Line. And worse still, MUCH WORSE, is that you are running around those worlds at a high pace, zapping, shooting, dodging, jumping. You are not sightseeing, you are running like crazy.

In a multiplayer FPS, things are not so bad. You can limit the fighting area, and get a lot of mileage out of a relatively small area. In a single player action game, you are going to whizz through that content at high speed. This means you need a LOT of content, especially when gamers are constantly complaining that a game that cost them $59.99 is *only* 40 hours long. (A pretty good cost/entertainment ratio in any media frankly). The situation is so bad, that even the huge budget publishers make sure that game stories include some reason why you have to backtrack, and ‘revisit’ older areas of the game for some nebulous story reason. This is not lazy writing, its producers and accountants telling you that you need 40 hours but only have the budget for 10 hours of content experienced at the expected pace.

Few indies are crazy enough to make an FPS, but plenty make ‘fast paced’ games. Be aware that you need to take the content-consumption rate into account when designing your game. It is, of course a balancing act. On the one hand, you want the player to constantly be exposed to novelty, to ‘keep the game interesting’ but on the other hand, you simply cannot afford to do this at high speed. You need to design your game according to your budget, or you risk making a heavily compromised game, or running out of money. Do not fall into the trap of thinking games need a ton of varied content to be good. Chess has few pieces and a tiny game area, yet has entertained people for an amazing amount of times. Some of the best, most classic TV episodes are those written with only a single set and 3 or 4 characters, for purely budget reasons.

If making the player move 10% faster adds 10% to the required content and dev time/budget, is it still a good idea?

The big old HTTP vs HTTPS nightmare

In case you didn’t already know, Google is building up to giving a bit of an SEO smackdown to sites that do not use HTTPS, but simply use HTTP (Like most sites). If you notice sometimes you see sites with a big old green padlock in the address bar, thats because they are https, and thus ‘secure’ and you can be pretty sure the page you got was the page you thought you would get, compared to http, where pretty much any script kiddie/russian haxxor may have spoofed between you and the server and served up fake stuff.

It used to be the case that you only saw https when shopping, or entering passwords or logging in or handing over information in a form. It was assumed that other traffic was harmless, but the advent of man-in-the-middle attacks, and more sophisticated malware malarkey means that google basically want everyone to use https everywhere, and if we don’t, they will punish you in SEO, which for a small website and brand basically means death.

So I grabbed my SSL certificate ($90 / 2 years), and installed it on my server, and sure enough you can visit https://www.positech.co.uk and everything is padlocky and impressive:

The problem is, 99.99% of links to my site obviously point to http://www.positech.co.uk, and are thus technically insecure, so you have to ALSO set up a server-wide redirect to make all http calls https calls. So I got my managed server dudes to do that 9I have a dedicated server). And thats when EVERYTHING fucked up. Gratuitous Space Battles campaign mode log-ins stopped working, stats reporting for production line just ended, and various other things went BANG. I had not realized it, but a billion years ago when I coded my online integration into my engine, I had coded it to use HTTP and explicitly not accept any redirects to HTTPS (Which would have failed). This has come back to haunt me.

Combine this with the fact that you likely have, on any page you manage, a whole bunch of third party content that likely is NOT https, and things get ugly. In my case, the most common culprits were embedded youtube videos, which were defaulting to http. They are simple to change (just a URL edit) but there are lots.

So this morning I gave up and removed the default server wide http redirect and experimented with some internal changes. So if you just go to www.positech.co.uk, it has an explicit page-level redirect to force the https version, PLUS all the outbound links from that page now hard code in an https link. However, I have not done it everywhere. For example this url: https://www.positech.co.uk/cliffsblog/ will not automatically direct you to https://www.positech.co.uk/cliffsblog/ yet, even though the HTTPS version is fine.

I HOPE that google is sensible enough tom understand that getting a cert is easy, but converting every page so you can do server-side redirects is tricky, and actually checks for the legit serving of an https page before http, and doesn’t penalize the lack of server-wide redirects, but who knows. FWIW, I found this page really helpful for working out where my problems were, and if you are going to do the transfer yourself, you should bookmark it now.

I guess this opens up the wider topic of whether or not hosting your own html style site on a dedicated server makes any sense in 2018 for an indie games developer. I am not sure how I feel about this. My site has existed since 1998, so I have a lot of legacy stuff on there, and I am pretty old-school about the internet, in the sense that I think broken links and content removed from the net is pretty bad. HTTP has tech built in from the start to support redirects, it really is a last-resort that you should EVER hit a 404 page… but I digress.

I know many indies will think the cost (hundreds of dollars a month) for a dedicated server is nuts, but I spread that over this blog, my main site, my own metrics collection stuff, the online component of GSB, the update checking code and patch delivery for a bunch of older games, my forums (which are surprisingly large and busy for a single-dev company), a site I host for an old friend, and also showmethegames.com and other bits and pieces. This has all grown up over the twenty years that I’ve had positech.co.uk, and transferring all of that to some turn-key solution without breaking a load of stuff would be pretty bad.

I know many indies think that if they are PC developers, then their homepage is basically store.steampowered.com/yourgame  but I find that approach dangerous. I am an INDEPENDENT game developer, and the longer you hang around as an indie, the more you see the tides change around you. When I started, Download.com was THE STORE, then it became real games, or yahoo, then eventually steam & impulse, currently its just steam, but who will it be next year?

If your entire business model is based around a single company, whether its facebook, bigfishgames, steam or microsoft, then your independence is pretty marginal. You are in effect, a subdivision of that company only with no fixed salary or pension, but with considerable day-to-day freedom. Stores can change their royalty split when they feel like it, and their submission rules. If Microsoft buys valve, and decides that violent games aren’t what they want on their store, do you still have a business the next day? This should keep you awake at nights.

Anyway, enough doom and gloom, just my thoughts on why I’m such a dinosaur with his own http problems :D

 

You should aim to be the Elon Musk of software

I’m an Elon Musk fanboy, drive a tesla and own tesla stock, I’m a true believer. One of the things I like about the man is the way he does everything in reverse, when it comes to efficiency and optimization. The attitude of most people is

‘This thing runs at 10m/s. How can we make it run at 12 m/s?

Whereas Elon takes the opposite view:

‘Are there any laws of physics that prevent this running at 100,000m/s? if not, how do we get it to do this?’

This is why he makes crazy big predictions and sets insane targets, most of which don’t get met on time, but when they do, its pretty phenomenal. If the next falcon heavy launch recovers the center core too, thats even more game changing, and right now, the estimate is that the falcon heavy launch cost is $90 million verses $400 million of its nearest competitor (which only launches half the weight anyway). That not just beating the competition, but thats bludgeoning them, tying them up, putting them in a boat, pushing the boat out into the middle of the lake, and laughing from the shore during a barbecue as the boat sinks.

When it comes to my favorite topic (car factory efficiency, due to me making the game Production Line), he comes out with even crazier targets.

“I think we are … in terms of the extra velocity of vehicles on the line, it’s probably about, including both X and S, it’s maybe five centimeters per second. This is very slow,” he said. Musk then added he was “confident” Tesla can get a twentyfold increase of that speed.”

Now we can debate all day long whether the guy is nuts, and over promising and whether or not we could ever, ever get a production line that fast, but you have to admire the ambition. You dont get to create privately-made reusable rockets without ambition. I just wish we had the same sort of drive in software as he has for hardware. The efficiency of modern software is so bad its frankly beyond embarrassing, its shameful, totally and utterly shameful. let me dredge up a few examples for you.

I’m running windows 10, and just launched the calculator app. Its a calculator, this is not rocket science. A glance at task manager shows me that its using up 17.8MB of RAM. I am not kidding, try it for yourself. I’m pretty sure that there was a calculator app for the sinclair ZX-81 with its 1k (yes 1k) of RAM. Sure, the windows 10 app has…err nicer fonts? and the window is very slightly translucent… but 17MB? We need 17MB to do basic maths now? As I type this, firefox has got 1,924MB of RAM assigned to it, and is regularly hitting 2% of my CPU. I’m just typing a blog post, just typing… and thats 2% of a CPU that can do 49,670 MIPS or roughly 50 BILLION instructions per second. Oh…we have slightly nicer fonts too. wahey?

I’d wager the percentage of people coding games who have any real idea how the underlying engine works is tiny, maybe 5%, and of those maybe 1% understand what happens at a lower level. Unity doesn’t talk to your graphics card, it does it through OpenGL or DirectX, and how many of us really understand the entire code path of those DLLS? (I don’t) and of those, how many understand how the video card driver translates those directx calls into actual processor instructions for the card hardware? By the time you filter your code through unity, directx and drivers, the efficiency of what actually happens to the hardware is laughable, LAUGHABLE.

We should aspire to do better, MUCH better. Perhaps the biggest obstacle is that most of us do not even know what our code is DOING. Unless you have a really good profiler, you can easily lose track of what goes on when your game runs, and we likely have zero idea what happens after our instructions leave our code and disappear into the bowels of the O/S or the graphics API. Decent profilers can open your eyes to this stuff, one that can handle displays of each thread and show situations where threads are stuck waiting is even better. Both AMD and nvidia provide us with tools that let us step through the rendering of individual frames to see how each pixel is rendered, then re-rendered and re-rendered many times per frame.

If you want to consider yourself not just a hacker but an ENGINEER, then you owe it to yourself, as a programmer to get familiar with profilers and code analysis tools. Some are free, most are not, but they are a worthy investment. Personally I use AQTime, and occasionally intel XE Amplifier, plus the built-in visual C++ tools (which are a bit ‘meh’ apart from the concurrency visualizer). I also use nvidias nsight tools to keep an eye on graphics performance. None of these tools are perfect, and I am by no means an especially good programmer, but I am at the very least, fully aware that the code I write, despite my efforts, is nowhere REMOTELY close to as efficient as it could be, and that there is plenty of room to do better.  If Production Line currently runs at 60FPS for you (average speed across all players is 58.14) then eventually I should be able to get it so you can play with a factory at least 10x that size for the same frame rate. I just need to keep at it.

I’ll never be the Elon Musk of software, but I’m trying.