For some context, I’m 48 years old, I’m a game developer who makes and sells PC strategy games, and promotes them through various means, including youtube trailers and a weekly developer video vlog which can be found here.

I worry about youtube. Not just youtube, but the growth of video content in general, and the growth of super-HD globally available video content more than anything. Not in the default ‘new things scare me!’ way, but because I think they are probably skewing society in a way that is harmful, and I see this through the lens of someone who produces a weekly vlog, and occasionally looks at others.

When I was a young gamer, in my teens, there was zero content when it came to covering my hobby. Gaming was for kids (definitely) and the geeky ones at that. I’d guess more boys played games than girls then. The idea of a gaming ‘celebrity’ did not exist of course, because it was pre-internet, let alone the idea of making a living from playing games, and the idea of people knowing who you are, who did NOT go to the same school as you was not even out there. Unless you were Michael Jackson, you were not known to anyone outside you local school as a kid. Not only was fame when really young not achievable, it wasn’t really on anybodies radar. If someone at your school found you attractive, that was great. You could be the best looking person in school I guess, but that sample size is pretty small. I’m reminded of the most beautiful girl in the room:

Gaming now is very different, and video content is very very different. One of the most well known youtube celebrities is ‘Zoella’ apparently. She has 12 million youtube followers, and her net worth is estimated at £2.5 million. She started her youtube channel is 2009, aged 19. PewDiePie is one of the best known gaming youtubers, with 63 million youtube followers. His net worth is estimated at £20 million. I have never sat and watched a whole pewdiepie or zoella video (I’m BUSY), but something stands out about these two, and all the other super-well known youtube celebrities.

They are unusually good looking, and started pretty young.

There is a MASSIVE culture of youtube videos about how to put on makeup. HUGE, like TERRIFYINGLY HUGE. If you wonder why on earth your teenage daughter has the capacity to sit and watch youtube videos for ten hours straight, its because there is a vast, vast rabbithole of this stuff. And if you think its a female-only culture, think again. This ‘one minute beard grooming’ video has over a million views.

When I was in a heavy metal band, I sometimes had a beard. Sadly very few pictures exist, but you know how much ‘beard grooming’ I did? Fuck-all. I occasionally picked out clumps of paint or sawdust from work (I built boats), and that was it. And believe it or not, despite this horrifically minimalist beard-grooming regimen (by modern standards) I did actually meet girls and even slept with some. AMAZING! How could anyone as rough and un-groomed, un-sculptured, with imperfections and a complete lack of a daily skin-care moisteurizing regimen, ever be happy or meet anyone?

It was easy, because frankly our standards were more localized. If I thought I was as attractive as the average dude in the pub, or the average boy at school, then…yeah thats pretty good. I didn’t obsess about my looks or seek out a completely impossible level of perfection that young people do now. I am SO GLAD that we did not have youtube, and social media when I was a teenager. the amount of angst, anxiety, body-image issues, self-confidence issues that I have avoided by simply not being exposed to so many attractive, confident, well-lit, perfectly edited and filmed people who modern day teenagers consider to be ‘just like them’… I feel so lucky.

Anyway, my broader point is that we talk a lot about fake news video, we talk a lot about racist or mysogynist or other hate-fuelled video content, and I think society needs to also take a look at the more subtle confidence and body-image effects that exposing young people not just to the most charismatic and beautiful people in their class (which is depressing enough), but in a class of a BILLION people, is doing. And do not think that because your kid is smart that this isn’t applying to them. I have a confession to make: I worry about how I look in my youtube videos. Should I get my teeth whitened, should I have that tiny lump on my nose lasered off, should I get a hair transplant even… and I am a married fourty eight year old man. What.The.Fuck.

I can only imagine the impact this youtube culture has on teenagers.

 

 

 

About two weeks ago someone pointed out to me that the positech forums were ‘disabled’. I assumed that they had been auto-disabled because their phpbb3 version was old, and I had put off updating it. So I set about doing the (incredibly buggy and tedious) update process, and it got confused, and borked some things, and then started running slowly, with the database being a different version to the php files, and me wanting to basically burn the whole thing to the ground. Its 2018, and phpbb3 frankly still looks like its from 2005, and I hated updating it, and I hated having to fiddle with the (frankly random) UI for assigning permissions which seems like it was written by seven different coders, none of whom speak the same language, and who definitely dislike each other…

So to cut a long story short, I hunted around for decent, managed forums, found a package I really like (although its eye wateringly expensive TBH), and decided top go with that, and they are currently trying to migrate it all, so that every post, image, avatar, user account and so-on, all get exported and we can just pretend this whole phpbb3 thing was a mistake made in our past, which will always haunt us, but something we agree never to talk about in polite company. I’ll keep you updated.

Now i am fully aware that the ‘general consensus’ is that forums are a waste of time because you can just use reddit/discord/steam/someone else, but frankly the idea of working for years to build a nice big community that will then get suddenly overnight locked behind a paywall (as facebook did with its groups), or which someone could suddenly just close (like people whose twitter accounts vanish) or where someone can start dictating different terms (like youtube are doing to monetization)… well that doesn’t sit right with me.

Make no mistake: community has value. it has a LOT of value, which is why silicon valley is often assigning such sky high insane valuations to social media networks with no business model (snapchat), in the belief that just ‘capturing the place where the community is’ has incredible long term value for a business. My forum has been neglected on and off, but now it has a total of 75,000 posts in 10,000 topics, none of which is spam. This is all discussion of MY games, and is an SEO goldmine in terms of making my site a go-to site for discussion about them. This has VALUE. It also will have more value if I give it more love. So… in the near-term expect to see me banging on about my posh new forums, and how I will be taking part in discussions there more often.

Recently I did a blog video:

And in that video I talked about the modding support coming to the game, which prompted a few people to say WHY! WHY are you doing modding support now, when nobody asked for it? The answer is quite simply that hundreds of people asked for it, they just did it through the in-game questionnaire on developer priorities. I present to you the charts from the last two versions.

So yup, mod support is coming, and its cool, although not the final version by any means. And yes. I AM keeping an eye on the ‘vehicle types’ demands and plans are underway.

I recently read a question online from a developer who found youtube videos with links to pirated copies of his game, wondering if he should politely ask them to remove the links, or if he should get a lawyer and get them to write a DMCA request for him etc. There was some VERY POOR advice given to them,, but I thought I’d chip in and say YES TAKE THE LINKS DOWN! And its easy to file a DMCA request with youtube without needing a lawyer or more than 2 minutes, you do it here:

https://www.youtube.com/copyright_complaint_form And select copyright infringement.

And you don’t need a lawyer, and if everyone who had an indie game occasionally checked youtube and did this, a lot of these people would lose their channels, which would be *no bad thing*.

 

There are no comments yet

There are a lot of games on steam.  Those games are also cheap, PLUS steam has a refund policy. As a result, gamers don’t have to be patient. To be blunt…if gamers get confused or frustrated playing my game(s), they can refund them, or forget about them, and play something else. This is so different from when I was a kid, games were EXPENSIVE, there were far fewer of them, and you had to sit there and try things until stuff made sense. If you were really lucky, there might be a manual. These days, even if there is a series of explanatory videos, an illustrated manual, pop-up tooltips and an in-game tutorial, most players will ignore ALL of that, and just try to wing it. If things don’t make sense… your game is toast, your review score drops, your refund rate goes up, your sales go down, and you find yourself practising ‘do you want fries with that’ in the mirror ready for your next career move.

Obviously this is suboptimal.

I make innovative and fun games that have historically been a bit confusing to play and a bit buggy. This is the year where I try to address my game production shortcomings. Early Access is a godsend to me, as is collecting metrics on gameplay usage (anonymously). I can tell when people do not use a feature, and collect a lot of opinions from people on what sucks, and what needs work. I’ve made real progress in the last few weeks on reducing the bug count in Production Line, and I know I have a fair bit of work to do when it comes to the GUI and the ease with which players understand the game mechanics. In short, I need to give some more thought to a lot of my first-pass GUI choices.

A few screenshots illustrate a ton of minor things I need to give some thought to. Take this example:

Theoretically thats a fairly obvious and simple piece of UI that shows you information on the imports to a production slot in the game. The player uses this tab to adjust where those imports come from, presuming they have researched the tech that allows such configuration to be made. Each line shows a different resource item that comes in, the percentage of the last 100 items to be used that were locally produced (within this factory) and 3 mutually exclusive buttons to set the import mode for that resource.

There are potentially loads of issues here. The game tracks the last 100 items used by this slot, but if 90 of them (in this case) were Door Panels and only 10 were Chips, then the sample size for chips is way lower, and the ‘local’ percentage is not as accurate or granular. Does this matter? Does the player know what ‘local’ means? should there be a tooltip for that part of the GUI (there is for the buttons, but the player may not hover-over those). This entire tab is also hidden (grayed out at the tab button level) if the player has not researched the tech. Should they still be able to see the local percentage in this case? or are we fine hiding that from the player until then?

Then we have those selectable buttons. Firstly, do they look like they are clickable? They change the cursor and highlight on mouse over, is that enough? And is it obvious they are exclusive to each other? they don’t ‘look’ like conventional radio buttons used in multiple-selection. Should I change the UI? Finally, whats with the text? it explains things but isn’t it a bit clunky? Should I have column headers with text and then just radio buttons with green check buttons to illustrate selection on each line? would that make more sense? Does all this text even fit in German?

Lets take another look at the same bit of UI in a different circumstance:

In this case, the entire efficiency tab, which normally contains a pie chart, is completely blank. Why? because nothing has actually happened in the last X seconds of game time, meaning that there is no data to display here. However, this is surely a GUI bug, we should be drawing a pie chart anyway and showing the last state the slot was in surely? Thats easily fixed… Meanwhile the entire slot is effectively paused, because the stockpile is FULL, and there is no room to export more product. Effectively, we are on hold due to a lack of component usage or storage elsewhere in the factory. The ONLY clue to this is the ‘Status: No export room’ text. This is woeful. The immediate state of the slot is not even that obvious to ME.

Possibly I should highlight that status in red, or have it flashing, or maybe both. Perhaps the grey progress bars should be red, or flashing?

While I’m at it, on the stockpile strip, those numbers show the currently in stock value PLUS the number of requested items currently en-route in brackets. Nowhere is this explained. Can I explain it easily in the space provided? I shouldn’t make those icons any smaller, but maybe instead of numbers I should just have 16 slots for icons and a different color or shape to show which ones are en-route? Would that make more sense? would it be visually cluttered?

There are no trivial answers to any of these questions, they all need some careful thought and experimentation. I may end up changing all of this, or none of it. Maybe some of my ideas would make things worse…its hard to tell without trying. the really painful thing is that the end user who buys the final game post-release wont see any of this. They will see a GUI layout of a window with some text and icons and think that it all sprang into existence fully formed. It really isn’t like that. To get the level of UI polish I want (and need) I’m going to have to iterate on this stuff a lot. This is tricky when you are the only programmer, and only designer. There is much to do…

 

 

 

Twenty Years Old

May 20, 2018 | Filed under: business

Not me…hahaha! I wish. My company is now twenty years old. That isn’t twenty straight years of indie game development with no breaks, but its twenty years of existence. Our first ‘real’ game was ‘asteroid miner’ which was released around 1998 and looked like this:

You cant even buy it now, it used directx5 and doesn’t work on many PCs. It was ok, but kinda sucky by today’s standards. Multiplayer asteroids with mining, basically. I did the art myself. Impressive huh? It sold a few copies in shareware, and then it got bundled into a collection by a retail company called egames. After that I made a game called StarLines INC, which eventually got renamed Starship Tycoon, and got revamped and improved graphics. I think I actually used some paid art for that one. it did much better, and it looked like this:

I still like the idea for the game. maybe when i retire I’ll do a re-make?

I then got distracted by doing some really bad top down racing games called Kombat Kars and Rocky racers, I even made a minesweeper clone, and some space shooty things called Space Battle 3001, and Saucer Attack. Not long after all that I think is when I ended up working at Elixir, then left there and made ‘Planetary Defense’ which looked quite reasonable:

Then I got a job at Lionhead. I think by this time I’d already made Democracy 1. I quit lionhead, and made Democracy 2, and Also Kudos and Kudos 2. These started making proper money, to the extent that I didn’t vaguely regret leaving my job. I then made Gratuitous Space Battles:

Which was a big hit, my first game on steam, my first game to earn a million dollars. Then came Gratuitous Tank Battles and GSB2, and the publishing of redshirt, my first 3rd party game. At roughly this time I made Democracy 3, which was an insane hit and also made millions of dollars, and not that long after that I think I published Big Pharma (I think this was the third million dollar selling game), then came Shadowhand and Political Animals, and Democracy 3 Africa (The first game where I employed someone to write code)

Along the way we have twice donated a chunk of earnings to war child and built two schools in Cameroon. Positech has made a profit every year and made enough to live on since Gratuitous Space Battles, which I guess is quite an unusual feat. I’ve avoided growing the company at the rate at which most people would. At one point I was developing (coding one game) managing the coding of another and publishing two others, all without any help on the admin side, and that was too much for me. Unless I was to hire a personal assistant or someone similar, I’d never be able to scale to that many games at once again.

So now in 2018 my focus is on first-party games (not publishing). We are developing one game (Production Line) and there is another game that will be announced once there is something to show. I have a full time coder working on that project. In terms of people management and time-management and project management I guess I’ve learned the following things:

1) At a certain level, time really is money. I’ll pay very high amounts of money for software or services that save me time. I’ll also not waste any time. Unless you are Gabe Newell, or someone who I KNOW is going to earn me lots of money if I talk to them, I’m never going to ‘hop on a call’ or ‘catch up’ with someone for ‘networking’ purposes. I’ll not schedule a meeting with any company whose business I haven’t already skimmed by an emailed proposal. I pay people to clean my car and my windows, because the opportunity cost of me doing is > the cost of hiring someone.

2) Dealing with people is the most stressful part of expansion or development or project management. No technical bug, hardware issue or monetary/scheduling problem is anywhere near as tricky as dealing with humans with emotions. I’m a bit ‘on the spectrum’ and not good at dealing with people anyway, let alone people I’m paying money to. I’d hire someone I could get along with with an average skillset over someone who is a pain in the ass but with l33t skillz.

3) You have to speculate to accumulate. its a cliche because its true.

4) Don’t feel bad about just saying ‘no’.

5) Some things that make money just aren’t worth the hassle to make that money. This includes porting a strategy game form PC to ipad, or…linux in any of its forms. If you prot games ‘for fun’, thats different, but I don’t.

6) Unicode is hell.

Two things I’ve managed to do that effectively grow my company but don’t require me to hire people is to invest the income, and to spend on advertising. I can double my ad budget with a mouse click, whereas doubling my games dev output requires interviewing hiring and managing another person. I know which is easiest. Over the years, Positech has invested in other indie games (in a hands-off capacity), Solar & Wind farms, tidal energy projects, a number of US tech stocks and ETFs/Funds, some commodity ETFS, UK & global equities, P2P lending to both businesses and individuals and corporate bonds. I even dabled in shorts and leveraged investments, even did some day trading of CFDs. This has gone on long enough that right now its fair to say that Positech is 80% Game Development, 20% investment vehicle. I enjoy picking stocks and shares and average 10% return per year, over the last 4 years, which is pretty good.

Its been a good twenty years so far. I’m happier as a person, and definitely calmer, and work just as hard as before. The industry has changed beyond all recognition, but its definitely possible to make a good (even great) living from indie games if you do the right things and make the right decisions and work like crazy.  UK retirement age is currently 67 but probably 70 by the time I retire, so I am likely only half way there.

Yikes.

 

 

 

An impossible bug. ARGGGH

May 15, 2018 | Filed under: programming

Check out this code from production line for displaying pie charts of expenses.  I declare arrays of float totals for each of 3 pie charts.

 float totals[NUMPIES];
 totals[PIE1] = 0;
 totals[PIE24] = 0;
 totals[PIEALL] = 0;

 

Then I declare a 2-dimensional array of floats which I fill with some data. As I build up those amounts I also update the totals:

float amounts[NUM_FINANCE_CATEGORIES][NUMPIES];

for (int r = 0; r < NUM_FINANCE_CATEGORIES; r++)
 {
 if (r != FC_CAR_SALES)
 {
 amounts[r][PIE1] = SIM_GetFinanceRecords()->GetAmount(1, (FINANCE_CATEGORY)r);
 amounts[r][PIE24] = SIM_GetFinanceRecords()->GetAmount(24, (FINANCE_CATEGORY)r);
 amounts[r][PIEALL] = SIM_GetFinanceRecords()->GetAmount(-1, (FINANCE_CATEGORY)r);

totals[PIE1] += amounts[r][PIE1];
 totals[PIE24] += amounts[r][PIE24];
 totals[PIEALL] += amounts[r][PIEALL];
 }
 }

 

Then some simple resetting of data, which is irrelevant for this bug, and a check that I am not about to divide by zero:

Pies[PIE1]->Clear();
 Pies[PIE24]->Clear();
 Pies[PIEALL]->Clear();

if (totals[PIE1] <= 0 || totals[PIE24] <= 0 || totals[PIEALL] <= 0)
 {
 return;
 }

 

Then the final code:

 //now create
 for (int r = 0; r < NUM_FINANCE_CATEGORIES; r++)
 {
 if (r != FC_CAR_SALES)
 {
 for (int p = 0; p < NUMPIES; p++)
 {
 float perc = amounts[r][p] / totals[p];
 assert (perc >= 0 && perc <= 1.0f)

Hold ON STOP!. How can that assert ever trigger? EVER? (it does for some people). Its driving me mad :D. It can ONLY trigger if one of the amounts in the array is less than 0% or more than 100% of the total. I KNOW that the total is greater than zero, so the amount must be greater than zero. The total is only comprised of the sum of the amounts. There is no way these numbers can be out of synch, PLUS, they are all floating point vars so there is no rounding going on… or is it maybe a tiny tiny quantizing thing? (I’ve update the game with extra debug data for this error so I’ll find out soon). Surely thats the only explanation, and perc is something like 1.000000001%?