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

Coding your own ‘middleware’ is easier than you think

I have a system in the early access version of production Line that when an error happens that I assert() on, it logs that error out to a debug file, along with a timestamp, and the file name and line number of code where the assert failed. This is easy to do (google it). I recently changed this code so it also posts the error message, line number and filename data to my server (anonymously, I have no idea which player triggered it). That code basically just uses the WININET API to silently post some URL variables to a specific php page. That page then validates the data to make it safe, and runs an SQL query to stick the data into a database on my server.

IU can run SQL queries on the server to see what bugs have happened in the last 24 hours, which ones happened the most, what the version number of the game was, and how often they are triggering etc.

This has proven to be awesome.

The default solution these days to this kind of stuff is to buy into some middleware to do this, but thats not how I roll. I also have some balance-tracking stats analysis stuff that does the same thing. I can tell if the game is too hard, or too easy, or if players dont get to build electric cars until hour 300 in the game…and all kinds of cool stuff. This is the sort of thing that middleware companies with 20 staff, a sales team and a slick marketing campaign try to flog to you at GDC in the expo. Its really not that hard, it really is not rocket science. I get the impression that the majority of coders think that writing this sort of stuff is an order of magnitude harder than it actually is.

Oh also, production Line checks once per day on start-up to see if there is a newer version, then pops up a notice and a changelist if there is (for non steam versions). Thats home-grown code too, and its easy, EASY to do,m once you actually sit down and work out whats involved.

I know the standard arguments in favor middleware ‘it comes with tech support, its faster than coding it yourself, it allows you to leverage the experience and knowledge of others’, but I reject all of them. The only reason I know how to use WinInet, php and SQL and all that sort of stuff is because I taught myself. I taught myself ONCE in the last 36 years of programming, and I know how to do it now., I have my old code, and my own experience and skills. I dont care if XYZ Middleware INC is going to go bust, stop supporting my platform, double their prices, or stop answering emails, I have all this experience in house.

When you look at most middleware, its vastly bigger, more feature packed and complicated than you need it to be. Middleware has to be, because it has to be all things to all people. My stats tracking and error-reporting doesn’t have to work on IOS or on OSX or on mobile, or XBox or Playstation. it doesn’t have to be flexible enough to talk to four different database types, or support Amazons AWS. I don’t NEED any of that stuff, so guess what… the code to do what I *actually* need to do, is incredibly, incredibly simple. Don’t think about middleware contracts and APIs and excuses not to write the code, ask yourself ‘what exactly does the code need to do here anyway?’

I think when coders do that you will find, its actually way easier than you think. I did my error reporting code, both the client side and the server side, and tested and debugged in in about an hour. This stuff is not complex. Stop buying ‘fully-featured’ bloatware you don’t need.

GDPR, Cambridge analytica and hitting the wrong target (again)

This isn’t the first time the EU fucked up. Oh no. Remember that terrifying, scary time before we had the EU cookie law? that time you would surf the internet not knowing that many of the seemingly innocent sweet sites you visited did not use cookies, and how wonderfully safe and happy you felt after the EU introduced that wonderful thoughtful law that demanded that every single site on the entire web (as almost everyone uses cookies) pop up an irritating, patronizing window telling you that they used cookies? Isn the internet not much, much nicer to surf, and much safer since we had an extra mouse-click on the ‘WARNING COOKIES’ dialog for every website in the known universe?

No, of course it isn’t, that law was a complete and utter waste of everyone’s time, millions of peoples time, and continues to be, every day, as we all click on patronizing messages telling us what we already know. Its just one level above the dumbness of a warning saying “DANGER THIS SITE USES HTML”. It was a typical dumb techno-illiterate law passed by bureaucrats who didn’t even understand what they were trying to fix.

Thankfully they would never make the same mistake twice right?

Enter the GDPR, a new astonishingly useless piece of EU legislation that has resulted in the largest torrent of spam in my inbox since the invention of gmail. Suddenly everyone who I have ever had an account with has to spam me to ask me if they can continue emailing me, assuming that somehow I am incapable of hitting ‘send to spam’ and thus have NO WAY to control spam other than this clunky law of the EU. The GDPR has, as usual created a ton of work for everyone who runs a business with an online component (this is 2018 so that means everyone on the planet), whilst achieving absolutely fuck-all.

Essentially, the EU are looking at scandals like Cambridge Analytica and political social media manipulation and…. grasping at the nearest thing they have to ‘an internet privacy thing’ and passing that, without it having ANY impact whatsoever on the actual problem (which is mostly fake news), whilst taking a  wrecking ball to the idea of personalized advertising. I’m going to spell out in one sentence why this is dumb as hell:

Personalized advertising to reach genuinely interested customers is awesome. Personalized advertising aimed at undermining democracy is entirely different.

Why can’t lawmakers understand this? Trying to equate deeply targetted, niche advertising with political manipulation is completely dumb. Knowing that I’m a 48 year old white English male who drives a car, lives in a rural location, likes star wars, plays video games and works as a programmer enabled the ads I see to be relevant to me. Show me an advert for a new electric car thats in my price range… i’m genuinely interested. Show me an advert for a new virtual reality headset and I’m interested, show me an advert for baby clothes and I’m not fucking interested. Show me an advert for ladies bicycles and I’m not fucking interested.

We have learned many years ago that advertising is annoying because 95% of the time it was being shown to the wrong person. We are finally escaping that situation, with ads being shown much more in line with the genuine interests of the viewer. If you are over 65 I don#t WANT to bother you with my video game ads. If you only play FIFA, I don’t WANT to bother you with my strategy PC game ads. By ensuring advertisers have no access to personalized information, you make advertising WORSE.

The solution to true scandals like the whole trump/brexit/cambridge analytica scandal is simple. You ban political ads on social media. We already ban them on British TV, we can easily pass a law that bans them on facebook. Thats fine, easy, simple, and it does not require us to take the entire advertising industry, attempt to wreck it AND at the same time make the experience WORSE for both advertisers and consumers.

Simply put, the people who think they will solve political advertising with GDPR are idiots. Its the wrong method, aimed at the wrong target, by people who have no idea how the modern ad market works. Its also hilarious to think Russian state-sponsored bot networks are going to comply with the GDPR. I voted to remain in the EU, but every time they pull something like this, they make the whole system look like a bunch of idiots.

I have a cold, I may seem grumpier than usual :D

Inertia. PUSH PUSH PUSH

A long time ago, wee released a game on the ipad. Its hilarious that I cannot even remember whether in this case it was democracy 3 or gratuitous space battles (edit: it was D3). At least one of those is no longer available, because its 32bit, and some genius at apple thinks that the millions of apple customers should no longer be allowed to play 32 bit games, because somehow, thats suddenly a bad thing (it isn’t). Isn’t it great when platforms restrict consumer choice? Its bad enough on PC, but on apple… you have no other store choice. This is why all my computers are windows…

anyway…

We had this theory back then, that if you can propel your game into the charts, its position in the charts would become self sustaining. It was a ‘fake it til you make it’ approach to marketing. It turns out, that back then, you absolutely could get any game you wanted into the charts (not #500, but #5, #10 etc) if you just spent enough money on adverts. So thats what we did. At one point I was spending $700 a day on ads, and earning $1,300 a day in sales. awesome. So we raised it. We hit $1,400 a day on ads and $1,638 in sales… Not so awesome, but maybe a road-bump. We had a hilarious day where we spent $2,300 on ads and earned $2,394 in income… hmmm. Then we had a few days where we lost money whilst spending $2,300 in ads.

And I panicked, and I stopped, and very rapidly the game dropped like a stone from the charts and all was forgotten. However…in the long run things did ok. Democracy 3 has made $80k profit(ish) on itunes (That includes all the DLC), which is pretty good. Thats after the porting cost (I didn’t do it myself) and all the ad deductions.

To be honest with you, its not a good port. The ipad has sod-all RAM, and Democracy 3 kinda needs a fair bit, and also its not mega optimized for rendering on super-low spec PCs. We could have totally re-engineered it, but that was outside the scope. if we do Democracy 4 on ipad, that would definitely be done better. (On newer ipads its probably fine, but the ipad 1 and 2…. not so smooth)

But anyway.. my point is that I think the inertia strategy *can* work, but its REALLY hard to get it right, because you have to fight INCREDIBLE human pressure to go ‘holy crap. HOW MUCH on ads?’ especially after release when you were really hoping to finally be earning money, not spending it. Most indies dont spend anything on actual paid promotion at launch, relying on the odd tweet or maybe a cool video (which nobody watches), so persuading them to try a crazy strategy like maybe actually LOSING money in the first month of release due to a massive ad spend is probably an incredibly hard sell, even to me (I’ve never gone that crazy).

But still at the back of my mind, I think its a winning strategy. Success *does* become self sustaining. I’ve heard a lot about PUBG, Fortnite and Getting Over it, because everyone is talking about them. Everyone is playing them because… everyone is playing them. Obviously they have to be good games too, thats a given but I am talking about the effects of a certain level of success becoming self-sustaining. Think about new movie releases, especially the big budget ones. Some of these will lose money, but none of the studios act like they will lose money during launch week. Its all billboards, billboards, TV ads* and Web banner ads pimping the latest smash hit! You only find out that the movie lost $10 million years later if its mentioned in some studio financial report. Fake it till you make it.

A lot of people thought steamspy was a great way to tell if a game made loads of money or not, but there is no insight into the development and marketing cost of those titles. Some games that made $1million in sales probably made $900k profit. Some probably lost $1million overall. FWIW, with my biggest selling game (Democracy 3), Marketing represented 6.7% of total profit, and 5.47% of total revenue. With Production Line, that percentage will be way higher (roughly 30% of profit), partly due to changes in the marketplace, partly due to PL still being in Early Access, so still having untapped ‘stored value’ and it not having a long tail yet.

My goal is to teach myself (and really believe it), that the percentage of your total revenue that goes on promotion and development is not the issue, this is just ‘cost of sales’. The goal, from a business POV is as high a profit as possible. if you have to spend $900k to bring in $1,100k, thats still way better than spending $0 and bringing in $100k. Its just much, MUCH scarier.

*ads on Tv are called Tv ads. Calling them ‘spots’ is an attempt by the ad industry to reduce the association with them selling you stuff. People are so easily played…

So yeah…ill…

I was ill. It started on the Friday at the end of GDC, and I still have a bit of a cough now. I wont catalog all the symptoms, but yikes… I was not a well or happy chap. Thats the last time I ever go to GDC without a biohazard suit and a large vat of hand sanitizer. Its a real pain, because normally I come back from GDC all motivated and keen, and excited to work on stuff, yet I ended up going virtually an entire week without writing any code, which I think is the longest non-holiday pause for me in 19 years…

Luckily I got some new artwork while I was away, and plugging that in (mostly animations of new characters) required very little concentration or health, so I was still able to release a patch a few days ago with some worthy updates. I’m not operating at 95% of my usual efficiency (although have another enforced day-off due to family commitments today….), and hope to be back in full bug-fix/balance/feature mode in a day or two.

Production Line continues to sell very nicely, and we have a lot of wishlists. I have finally taken the decision that the game price should go up to $19.95, probably at the weekend. This has been something I’ve put off a long time. I can see arguments both way, and I have certainly analysed the decision a lot. PL is not ‘finished’, but its pretty feature-rich, especially for a game currently selling at $17.99. I’ve mentioned price rises a few times in my videos and the last time I did it, literally nobody cautioned against it, so I think the time for a price rise is kind of overdue. Will it affect sales? TBH unless you are making >$100k/month from your game, its really hard to tell any changes from the statistical noise that accompanies all game sales.

In other news, I finally bought myself one of those big green-screen thingies, so I can have a slightly-more-professional look to my blog videos, and I also finally got to witness this amazing image:

Which is like some sort of promised land. I shopped around for an ISP and discovered the following:

  1. My current (biz-focused and overpriced) ISP didn’t reply to me in 2 days, after we emailing and saying GIVE ME THIS NOW.
  2. BT, who actually run the darned lines, had a pop-up box that just gave me a blank dialog with a close button when selecting my house (and yes…i tried 2 browsers), so I couldnt order anything.
  3. Zen, who get good reviews and have great deals, wanted me to PHONE (yes phone) them to order, at which point I was put ina  queue. I enabled ring-back, but didn’t get one.
  4. IDNet, who actually let me click buttons and order a fucking product. So I did.

So there you have it. We assume that in a free market, a careful comparison of customer service history, reputation, features and pricing is what determines success. In reality, just having a product that fucking works (in this case an order system) gets you the custom… I ordered 220Mbps down, 20Mbps up, because tempting though 30 up is…. its kinda nuts. I currently have 1Mbps up, so I think I’ll still detect a difference… No idea when they actually come to install it though. I get a new router delivered, then someone from BT is going to have to come drill holes in the wall…

 

GDC 2018 Diary: Thursday afternoon.

Nearly at the end now… which is kinda cool, although I have 2 micro-events tomorrow I am looking forward to. Frankly five nights living out of a hotel on my own is more than enough for me.

Today has been pretty cool it started bad with me having to drenched on the short walk to get in a queue to buy a coffee because again… US hotels seem to be resistant to providing coffee machines. Are they part-owned by starbucks FFS? I then handled emails and social media stuff before I headed off for lunch with Jake (Grey Alien Games) and Tommy (Super Meat Boy), which was cool, and good fun, from that…it was off to ichiros cool micro-GDC thing to discuss the good and the bad of steam, and questions we had for them.

During the chat, prompted by ichiro very sensibly pointing out that its better to be positive than negative, I realized that many of the ‘toxic community’ problems that steam has can be solved by carrot, not stick. Sometimes, especially in early-access, players mention really good ideas, or give great feedback, or reply to other users tech support requests and solve problems for you.

Right now… I have no way to reward those players. Maybe we should take just 0.1% of steams cut, and covert that into ‘gems’ or whatever the best way to generate a steam ‘currency’ is, and allow developers to give that out on the forums? Nice steam guide you created there… here are 100 gems. Thanks for answering that users tech request… here are 5 gems. People who act like total asses, swear a lot, are rude or abusive… yeah they aren’t going to get any gems. Carrot, not stick.

Anyway… GDC 2018 has already been good, from my POV. I don’t feel ill, I’ve had some great times, some fun meetups with fellow devs, discussed some interesting industry stuff and learned some interesting industry news, and am confident it was worth my while in a business sense, as well as a sociable / personal sense.

I am looking forward to seeing my wife, my own bed, tea! my cat jack, and to get back into coding mode though.