Trying to get Production Line close to an alpha release for people means doing a lot of relatively tedious stuff like resolution pickers on options screens, proper save game support, and so on. I still need some vague tutorialish stuff in there, and a host of minor bug  fixes before I even consider letting real early-adopter hardcore types try the game, but I am definitely making real progress in that direction.

Here is the latest video:

There is always something dodgy that has just gone in when you release a video, and this time its a mish-mash of factory sounds that er a bit ‘overpowering’ and not right. Still…better to have something rather than just a weird silence, or all those 1900s hammering noises I had in beforehand :D I’m also slowly working towards a better video presentation. I keep getting a glitch on my webcam which is I think because I was setting it to record at 1920 res, when I only use it for that bit in the corner, so hopefully shrinking that means I will have less demand on the video card and a smoother image next time. I am still really new to youtube, but at least I have a regular schedule I can tempt people to subscribe to now.

BTW Democracy 3 and Big Pharma are currently in the Humble Tycoon simulator bundle, which you may wish to check out:

66a4d2a484e775d3c344d6d258a8b5f2f3920c48

https://www.humblebundle.com/tycoon-simulator-bundle

 

There are no comments yet

Big topic, but I’ve been musing this for a while.

Regular readers of my blog will know me as a big supporter of advertising. Some years I’ve spent six figure sums on advertising. Ouch. Advertising works, and I won’t bore you trying to prove that, when there are great books out here that can do this, scientifically with hard evidence. The problem with advertising is not that it doesn’t work, but that people are trying to kill it off, without (as usual) thinking about the long term consequences of their actions. This is  a general problem with society, we try to ‘fix’ X with no thought to the secondary or tertiary effects. Its human nature. I even made a game that models such effects which helps explain why politics often gets this wrong.

Ad-blocking is becoming more and more common, and this presents a problem not just fort advertisers (its a problem they can actually solve), but for consumers and society as well. I’d argue its why Donald Trump is president, and why nothing has been done about climate change. Seems a stretch? let me try to persuade you.

Firstly let me write in defence of people who block ads. Generally I do not block ads, I do not have ad block installed on my PC. I have a different plug-in called ghostery. Ghostery is there to identify and optionally block ‘tracking’ beacons and cookies that are often found on sites where you would not expect them. Visiting a site that shows me ad banners is just fine with me, but notifying dozens of different companies about every site visit I make is…not ok. I am prepared to have a Volkswagen advert in my peripheral vision while I read the news. I see that as a (more than) fair trade. II do not see the notification of facebook, google,twitter & a dozen companies I’ve never heard of that I am reading that same article to be a fair trade.

ads1

Some sites I visit, with a simple 4 or 5 paragraph article, have 20+ trackers identified by ghostery. In the real world, you could imagine this as me reading a newspaper with 20+ anonymous businesspeople stood behind me peering over my shoulder and making notes of who I am and what I’m reading into little notebooks. Are you happy living your life like that? I sure as hell am not.

So people rebel against this (and who can blame them) and as a result they install ghostery or adblock, and continue to surf the web. The ads have magically disappeared, and all is good with the world. Somehow the online content is still there, but we never care how it works, because we just assume we can free-ride of all the dumb schmucks who have not installed ad blocker yet. The problem is…the scales are tipping so that too many of us are blocking, and not enough of us are viewing. The end point of this trajectory is that the people producing the online content are not earning anything from ads. What happens next?

The BEST outcome, and it may seem perverse but the very BEST outcome is that all of those sites go bankrupt and close down. That the very best thing for society that can happen. Sounds weird? well again, do not focus on the immediate consequences, think about the secondary and tertiary effects. Someone who runs an online news site, or games review site already has staff, maybe premises, they have web hosting, they have technical skills…are they going to give up when ad revenue dries up? Not without a fight, which means (after perhaps a period of fighting a losing battle with ad-block-blockers and then begging…) they will take money from wherever they can get it.

ads2

This used to be an indie games review site. You probably have not heard of it, it didn’t do well. Getting attention is hard. The thing is, if you read any of the articles on there, you probably do not notice any major difference between it and any other games website. There are no ads…but then you assume they are just getting blocked right? In fact no. There were never any ads on the site. I own it. I set it up to promote indie games, and hired a journalist to write for the site for a while. I did it because I saw a very long term business case for ME to do this. The more people who played indie games, and heard about indie games, the better the prospects for the industry I was in. It also meant more indie game devs knew who I was, just as I was going into publishing. It als meant more ‘independent’ coverage of indie games that prevented the whole industry becoming steam plus rock paper shotgun. This was a strategic business move by me. BTW I am a game developer. Are you happy with me owning a games news site?

Luckily I’m a nice guy, I’m not out to screw people over, and even if I was, the journalist who worked for me is a very honest nice guy and has a lot of integrity. However… it would have been easy to hire someone a LOT less scrupulous for the same money on the understanding that every fourth article would be about MY games and incidentally how awesome and underrated they are. Believe me…its not difficult to find wannabe journalists looking for actual paid work.

The frightening thing is…as a reader, you have no idea. You read something online and you just assume its free. is it unbiased? Is it actually paid content? Did the journalist get flown to Barbados to review the game? When journalists cannot earn any money from ads, a 3 night stay in a five star hotel in Barbados to review Grand theft Auto sounds irresistable. The real killer is that its probably CHEAPER than conventional advertising, and it comes across as more ‘honest’. Oh the irony.

So circling back to Trump, Climate change and fake news… If you haven’t seen my point yet, here it is in four words.

Someone is always paying.

In the past, you knew who. it was Volkswagen running a banner ad. it annoyed you, but you knew who it was. Very WORST case, if you were reading a  review of the new VW Golf and you saw the ad, you probably thought ‘hmmmmm’ and maybe engaged some cynicism about the articles impartiality. Thats good, that’s how it should work. The problem now is that the ad has disappeared, but that SAME money will be spent, and it will make its way to the guy writing the article somehow, you just cant see it, and you probably don’t even think about it.

We suffer a lot from ‘fake news’ lately, which has been blamed/credited with Donald Trumps election win. I recognize the phenomena from climate change, where there has been a history of ‘fake news’ claiming that wind turbines don’t work, that solar panels never pay back their costs, that climate change is a Chinese hoax…and other such bullshit. The problem is the same: ‘News; being written not because it is actual news, or even true, but because the person paying for the news has an agenda, normally one that furthers their business interests (in this case big oil).

Note the phrase: “The person paying for the news”

That used to be you. It used to be me. We used to pay through ads, and that got annoying and now we just block them and don’t think about it. These days we pay in other ways, maybe through surrendering our personal information to Facebook (who doubtless then sell it), or maybe we pay with our votes. Yup, we pay with our opinions and our freedom of thought. We stopped paying journalists years ago, and never gave a damn about them, which means that we can now hire journalists for dirt cheap. You got a marketing budget of $50k? that will write a LOT of articles, believe me. You have a marketing budget for your oil company of $1billion? How much for the US election campaign?

ads3

Journalism is cheap, and we made it so.

So how the hell do we fix this? Well its actually quite simple, in the way that all solutions people do not want to hear (use less fuel, fly less, eat less beef to help with climate change) are simple. The problem is they require you to think long term and behave in a way that seems irrational in the very short term.

PAY for journalism.

You can subscribe to a lot of news sites. this gets rid of the ads. If you are a gamer, Rock Paper Shotgun has a supporter program. Online versions of UK print newspapers like the Guardian and Times have subscriptions you can pay to. The economist is a great weekly news magazine you can subscribe to online. I honestly believe that paywalls will become MORE common, not less. Everyone jeered at the ‘evil’ times paywall. Its still there. And don’t make the mistake of thinking you are a ‘mug’ or ‘gullible’ to pay for something like this. I hope I have established in this article that you are ALREADY paying for it, you just don’t see the connection.

And to round off, here I am, a highly skilled and very experienced software developer and business owner typing this article on a VERY cold Wednesday morning instead of coding my next game. How am I doing this? Why do I have this blog? What is my motivation? Well clearly its a bit of personal PR and branding. If you read all this stuff, now and then i have a post thats about my latest game and its trailer. Thats how I am getting paid for this. I don’t *deny* it, but then I don’t bang on about the link either.

Was this article really *free* for you? Have a think about it, and if it concerns you that this was motivated by me wanting to sell you stuff, you can formalize the arrangement by paying what you want for the Humble Tycoon Bundle, which is on sale now and includes Big Pharma and Democracy 3.

hey, at least I haven’t stuck any ad-tracking cookies on here right?

 

 

 

A few random things went into the latest build of production line this week. I was working away on the GUI for the supply cache wossnames when I got the first sparks animations so I put a test one in (others coming soon), which swallowed up a lot of time. I also fixed some proper zoom-out colors, fixed a disappearing pallets bug, did a fair bit of optimising and also fixed the game so I can quit to the main menu and launch/load a new game without any crashes, which makes things feel slightly more usable. There is also a bunch of new visual assets in there, but I don’t show them off in this video, namely some new pieces of machinery for making stuff, a coffee machine & water cooler for the admin guys, a sofa for the marketing team, and so on.

I’ll be polishing, bug fixing and tweaking in the next week.

Oh BTW, Political Animals is in the Humble Store sale right now at 25% off, so worth picking up. Plus all the steam revenue from Democracy 3 is STILL going to War Child. Help us hit $10,000.

Why I think Tesla is a good investment

November 26, 2016 | Filed under: investing

I’ve owned a Tesla model S for almost a year now. here is a fab picture of mine taken shortly after I got it:

tesla

It has a few minor scratches. At one point it went back to have the charging flap replaced, but I suspect this was actually only a problem caused by a spot of glue melting in heat on one side of the car. It also needed a door handle replacement recently. Other than this, its been fine. I wont bore you with my personal opinion of the car (its fucking amazing), I want to talk about the company.

Tesla hasn’t made a profit yet. they have paid zero dividends. They have a market cap of $32 billion , revenue of $4billion and a loss of $700 million. Why would anybody invest in such a company?

Tesla is the first major new car company to establish itself in a long time. In fact many people thought it could not happen. That they are still here…is impressive. that they did this as a completely new type of car company (electric) is even more insane. That they are also world leaders in self-driving technology at the same time…is getting ridiculous. That their first mainstream product (the model S) has won numerous ‘car of the year’ and customer satisfaction awards, and is rated the safest car you can drive…is getting beyond parody.

So the product is VERY good, and they have massively beaten the odds. That alone is room to be optimistic, but there is much, much more.

The companies next product (the Model 3) collected so many pre-orders that it was the biggest consumer pre-order event ever. Not this year, or not in cars…its the biggest pre order in history. This is a company with a huge (free) media presence and fan-base. Its marketing costs are practically zero. Ever seen a Tesla ad? me neither. They don’t need them. Think about all that money EVERY other car company spends on ads, and that Tesla don’t need to spend a penny. Even apple advertises.

model3

So they have a good product and a big marketing advantage. What else?

Tesla has pioneered the selling direct-to-customers business model in the US and in Europe. They have even had to fight court cases for permission to do this. The competition is *so bad* that they try to take out court injunctions to stop people buying from tesla. Thats when you know you have the best product. By cutting out the dealership, tesla ensures potential customers get accurate advice, a decent demonstration and test drive, and the company controls everything from production of the car to sales and servicing. Oh… and also the fuel.

Ford sell you a car, but not direct, thats through a third party dealership. You are then on your own. You don’t stop at Ford petrol stations to fill up with Ford petrol that was pumped out of the ground with Ford oil rigs. Tesla are on their way to doing this with the supercharger network and their acquisition of solar city.  Tesla aren’t just selling you a car, but potentially a new Tesla roof that powers your new Tesla car and which tops up your Tesla powerpack in-between trips where you stop at the Tesla supercharger to fill up with energy generated by Tesla solar panels. At some point they will likely buy up an industrial robot company like KUKA, and have even more vertical integration.

This isn’t a car company, its an end-to-end energy and transportation company. The market cap potential of tesla isn’t General Motors, its general motors + uber + exxon mobil.

The *risk* in all this, is that competition with deeper pockets comes along and beats Tesla at its own game. In theory, this is a big risk. In practice…its kinda laughable. Apple, the famously deep-pocketed tech superstar have been quietly and smugly talking about their driverless apple car business for years. Still no car, not even a concept car, not even a sketch. It’s not going to happen. Apple takes years to make a phone with a new button, they aren’t about to make cars.

Every week a new ‘concept car’ or ‘preview model’ of a 2018 or 2019 car gets announced by Jaguar or Mercedes or BMW. Every time, without exception, the cars tech specs are laughably behind the model s and the model 3. The model S exists RIGHT NOW. For a company entirely new to electric cars to beat Tesla, they need a BETTER car than the S, a supercharger network already in place, fantastic brand-awareness and cutting-edge in-car tech. Nobody is close to this. Nobody is even within binocular range of this. The Tesla P100DL is faster (0-60) than a Bugatti Veyron costing $2.25Million. (The tesla is $135k). Thats not a slightly better car, its like a different fucking species.

I haven’t even mentioned the fact that electric cars are actually MORE convenient than petrol (My car starts each day fully charged), costs 4p/mile in fuel, and that Tesla are building the worlds biggest factory to literally double the global supply of lithium ion batteries to get costs down. This is not a normal company. Apple think removing a headphone jack is ‘visionary’. Tesla management must collapse in hysterics when they read statements like that.

Yup, I have Tesla stock. I have a fucking Tesla T-shirt, I’m a believer. I also read about them a lot. I simply cannot see how anyone will stop this company. Lets check in a year from now and see if I feel the same way :D.

 

 

Occasionally I see some interesting posts on reddit or gamasutra or some other dev site where programmers are asking about stuff to do with game development, and I find myself thinking ‘these aren’t the things you really ned to know’, but because its such a DIFFICULT thing to articulate, I never even try. I’m going to try now…and it will be messy.

 

A long time ago, when the world was in black and white and you could get your milk delivered even in the cities, I went for a job as a game programmer with a smallish UK game studio. I didn’t get the job. I remember in the interview being asked about my code, and in some vague way trying to explain that I knew what I was doing and a proper software developer. I waffled really badly about how giving sensible names to variable meant that I knew what I was doing and not some n00b.

Hahaha.

In my mind…this:

for(int counter = 0; counter < total; counter++)


Made me so much better a software engineer than

for(int x = 0; x < total; x++)


That just goes to show how much I had to learn. The real problem is that the stuff you need to learn is big ‘hand-wavey’ stuff that its really hard to explain, let alone teach! if you haven’t already read a book like Code Complete, Now would be a good time. I will try and explain the sort of stuff that it really helps to learn, and it will be vague and awkward, and hopefully that kind of makes my point about how hard it is to grok this stuff.

I have a class in my latest game called GUI_Tile. Its the visual representation of an actual tile in the game world called SIM_Tile. Each SIM_Tile has a GUI_Tile, and anything that is on-screen is handled by GUI_Tile. In order to draw my world, I go through all of the GUI_Tile objects and call draw on them. Actually, thats what I used to do, but it turns out there are a lot of them and thats fairly time consuming. When I profile the code, looking at where the time is spent, I realize that a lot of it is not actually directx calls, but its transform stuff, and scaling stuff, and working out the sizes of sprites based on some animation they are doing, and their offsets and whether or not they are even on-screen given the current camera position. The actual DrawSprite() bit of each GUI_Tile call is only the last statement…kind of a footnote.

While all this is going on, the other 7 effective cores of my CPU are chatting about whats on TV and picking fluff from their navels.

So clearly, I should find a way to multi-thread all this, even though I’m using Directx9 which is effectively single-threaded.

Soo… I could create a new thread at the start of the app, and make that my directx render thread. it could then do nothing but make render calls, and all the other stuff could happen in another thread, thus allowing me to double up on what was going on. To keep things from going crazy, and me updating a sprites co-ordinates just as directx rendered it, I need a hard STOP! (or mutex etc) at the time I start rendering, but it will still allow some overlap surely? I could carry on with the windows message handling and sound/input processing in thread 2 while thread 1 was still rendering the previous frame.

Or

I could split the GUI_Tile::Draw() call into GUI_Tile::PreDraw() and GUI_Tile::ReallyDraw(). If all of the stuff in the PreDraw() is self contained or ‘read-only’ (in other words that function never changes the value of any data outside its own object), then I can run a whole bunch of those at the same time. I can keep my directx in the main thread, but pass all the tiles in bunches off to 7 other worker threads to do PreDraw(), then when they ALL finish, I can just quickly loop through the Draw() calls, which are way faster.

Or

I could not do a lot of this transform stuff or drawing stuff each frame anyway. I could use a dirty-rects system, where when I render a frame I keep a copy of the whole thing in an offscreen buffer. I then only bother calling Draw() on those tiles which I know have actually changed or done anything. That way I’m massively cutting down on the number of Draw() calls I make, and I can keep the entire thing in one thread and thus way simpler.

Or…

etc.

The real thing you need to learn to be a decent game developer, is which one of those solutions will work best for this game, with this hardware, with this API, with this data. Coding any one of those solutions takes TIME. Debugging them takes more time, and profiling and analysing to see which works best takes more. Maybe having 8 threads all running is actually slower than just one (this can happen if you do it badly). Maybe a dirty rects system falls apart dramatically when zooming and scrolling. Maybe assuming PreDraw() is a nice self contained function is a bug-prone disaster waiting to happen in obscure and impossible-to-debug ways.

This is the real hard stuff, and the main reason its real hard is that its very difficult to get on top of this sort of thing until you have done it a LOT. If you have programmed, for example, a sound engine…well done. Take a bow, its honestly not that easy, and I bet you learned a lot. You have programmed your FIRST sound engine. Now delete all the code and program it another way entirely. then again, then again, then again. NOW, you know how to program a sound engine. you know why method A is slow, why method B is buggy, why method C is hard to maintain, why method D doesn’t scale, and method E Is awesome, but only on Playstation 4.

This is why the top jobs often to go to coders with experience, and why the sheer amount of code you have written and the number of hours you have been typing code really does matter. Being a good programmer is rarely about those things that are often bandied around like ‘always comment your code’ or ‘use descriptive source control commit descriptions’ or ‘use this syntax in your code’. Its mostly about the big ‘code architecture’ decisions. The way you lay out your code, the overall designs, the thinking behind how the whole process snaps together.

The most efficient coding you ever do is probably with a pen and paper, or a big chalkboard on the wall. When you have done this a LOT, you can do that in your head, but that takes decades. The more you code, the better you get.