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

Re-thinking early access

When steam started doing early-access, I was not a big fan. I disliked the whole idea. To be honest, it sounded like everything I hate about kickstarter, in the ‘selling future promises’ style. There is a common phrase among older, grizzled game devs, that goes something like this:

“I’ve finished the first 90% of the game. Only the last 90% to go”.

In other words, getting something that looks ‘ok’ and plays ‘ok’ and runs ‘ok’ is fairly easy. Finishing something that is reliable, bug-free, polished, and high-performance is MUCH harder. There are a LOT of unfinished games out there. To make my concerns even stronger, it came around the same time as unity became widespread and everyone and their dog was releasing their first unity game. Behold, a huge swathe of ‘early access’ games that are basically a stock terrain engine, some stock 3D Models, some stock sound effects and a lack of anything new but its ok…amazing new features have been promised and will show up one day! In the meantime, we want your money…

I dislike anything that promotes making promises you can’t keep, or that makes game development look dishonest. We are already plagued by gamers talking about ‘greedy devs’ despite the fact that 75% of us are struggling or in debt:

74

The last thing we need is more excuses to tarnish game development as a field full of broken promises.

But…

Over time I have re-evaluated things. A case that stands out to me is prison architect. I think they handled early access superbly. In the early days I thought ‘how the fuck can they get away with charging so much for an unfinished game?’ and yet they did, and they developed a core fan base. And as the weeks and months and eventually years, decades and aeons went on, I’d regularly bump into the introversion crew, tease them gently about the game *still* being in early access. Every time we met I was selling a different game, they were continuing to promote and sell the every expanding, ever growing Prison Architect. Eventually it made its way to release, and has proven to be a well known commercial hit.

pa

High sales figures and vast piles of cash are great, but hardly the main motivation for most devs. What encouraged me more about the PA story is the way their relationship with the buyers seemed so close, and so good. I was slightly nudging in this direction when I took pre-orders and offered beta play for a few of my games, but nothing like on the same scale. I’d offer beta copies in the last month (or two) before release. That was nothing like early access. As a result, I’ve shipped games that had bugs, and far far worse, poor design decisions.

The truth of the matter is this. I am not a particularly good low-level game designer. By low-level I mean the stuff about how each mechanic is implemented, what level design looks like, what the cost of each unit is, or how many options of X and Y the player has. I’m probably about average at it. Nothing remarkable, nothing clever. I’m good (it has taken me about twenty years to realize) at two things:

  1. Coding really complicated bespoke engines and simulations from scratch and
  2. Top level ‘big picture’ ideas for how a game will work, and feel.

Given this slow realization, I reckon early access might be awesome for me. I know what my next game will be called, what its about, and generally what the art style will be. Its ‘sort of playable’ right now. I think its shaping up really well. But should there be X options or Y options? should feature A be prominent or optional? Does it need procedural maps? does it need difficulty options? does it need a minimap or a ‘schematic’ view? how much should tech-trees be part of the game? how much focus should there be on the money side?

I’m not sure yet.

And this is why I intend to do something ‘like’ early access. More like introversions model than the normal steam system. I’d like to keep things small and community-like before appearing on steam, at least until a lot of the early stuff is worked out. I may even start my whole early access thing with some *shudder* coder art in there (as placeholder). There probably wont be music, and placeholder SFX. When a game goes into Early Access on steam, too many journalists and gamers treat it as ‘released’ and start to form judgements about the final game. I’d like to spend a lot of time with me coding and implementing stuff whilst having an honest open dialog (probably through this blog) with the kind of gamers who would be interested in the game, to work out how it should develop. I quite enjoy video blogs now and would enjoy doing regular video progress reports on the game as it develops.

Part of me is even thinking about making the game a negligible cost during EA. There is nothera part of me considering making it free, and supported by DLC. Everything is up for re-evaluation. Whatever happens, it should prove interesting.

 

The other kind of silicon valley tech bubble

We often read talk about how there is a ‘tech bubble‘ or more accurately ‘another tech bubble’. People with long memories can recall the insanity of boo.com, and then look at current valuations for airbnb and uber, and wonder if there is another day of reckoning coming. Maybe there is, or isn’t, I honestly have no idea. There is however, another ‘bubble’ issue with silicon valley, and in some ways its both more worrying (for what it says about society) and more destructive (for whom it hurts). To explain the bubble, I need to talk about my car, and its autopilot features.

I am stupidly fortunate enough to drive a Tesla Model S, with autopilot. It is AWESOME. Its by far the best car I have ever owned. I love Tesla, I have Tesla stock, I believe in the company, I have a Tesla T-shirt, I’ve read that book about Elon Musk, I am a Tesla fanboy. Autopilot is amazing, and cool, and awesome, and worth the money. Now let me tell you why it is completely oversold, overhyped and rubbish.

tesla

Autopilot does exactly what its advertised to do. On a motorway (highway to you Americans), its basically a self-driving car. It is pretty flawless at staying in lane, steering, and changing lanes, and the ‘Traffic aware cruise control’ is awesome. On smaller, but good quality wide A-roads, its also amazing. Its very, very good at what it does. The trouble is, all the things it really sucks at are very interestingly all the things you don’t get much of in Silicon Valley.

Autopilot is bad, even maybe a bit dangerous if one side of the road is unmarked with lines, has no kerb, and a hedge. It hugs the side of the road way too much in that case. Its not very good in heavy rain, where you have dirty roads and muddy roads and the lines are obscured or just not even there. It doesn’t like cars parked on the roadside. It is absolutely useless / dangerous if it encounters a roundabout (mini or otherwise).  None of these are surprising to me, none of these are a problem. I drive with autpilot on maybe 20% of the time (at most). (By the way, I live in a tiny tiny village in rural England.)

magic

So far, so good. The problem is, lots of the tech/money people in silicon valley seem to think driverless cars are imminent. No Fucking Way. A car that does 95% of your motorway driving? Sure. A car that maybe does 90% of your driving in general? Sure. But a car that does 100% of your driving and you can read a book? Not now, not soon, not for a lot longer than people think. The trouble is, if you live in Silicon valley, you commute from your home with a garage, drive along highways and wide open US roads in California sun, never encounter a roundabout, never get stuck behind a horse, never see a road that has the remains of straw bales scattered all over it to cover horse crap…never encounter any of the 1,000 other ‘anomalies’ that I see on my roads every day…then sure! Self-driving is imminent. And those hedge fund managers who live in ‘grid-layout’ new york will agree with you too. The car industry as it was is DEAD. All cars are about to become robots.

Fucking hysterical.

The most dangerous thing in the world is to think that everyone lives like you, thinks like you, and wants what you want. That way, you start to disregard whole areas of thought, whole groups of people, and become insular, closed minded and prejudiced. The vast majority of non tech people I know do not give a DAMN about self-driving cars. They want cheaper rent, more stable jobs, better pay. They are happy if they can afford *any* car. The idea of lusting after a self-driving one is a laughable past-time for the super-rich.

Leave this problem with cars and it doesn’t matter. I think it leads to over-optimistic tech stock valuations, but that’s no big deal in the grand scheme. The problem is the ‘driverless cars are here’ cries are a symptom of a wider problem. Most of the people with big financial clout are living in a bubble, where the only concerns they understand are the concerns of *people like them*.

Here is a shock: My phone is cheap enough, light enough, and has enough features. My laptop is thin enough, light enough, and has enough features. By the way so does my car, so does this desktop PC, so does practically everything I own. I have some fucking virtual reality goggles for crying out loud. if you ask me what is *missing* from my life, I’d have to start dreaming up some really crazy stuff. maybe a self-filling voice-activated kettle?  errr maybe it would be nice if my TV was voice activated. errr…

And this is dumb as hell because there are VAST swathes of people out there who can rattle off their top needs with no problems. Ask a Syrian refugee, or someone in a country with no running water or mains electricity what their needs are. or better still, don’t even go that far, just walk outside your luxury office with its canteen with pastry chef and neck massages for all staff, into the streets of San Francisco and ask someone homeless what they want. I doubt they will start talking about how they hope the iphone 7 has a new headphone connector. Its not going to make their list.

homeless

I get the economic argument. Homeless dude and Syrian dude have no money, whereas I do. So you try and sell me a new phone to replace last weeks phone. I understand the maths. I understand that trying to develop a business model where you can provide goods for people with very little money is REALLY hard. But the tech elite keep telling us how clever they are. If so, you guys can do it. You just need to step outside your silicon valley bubble and take a look in the real world. Thankfully, and ironically given this blog post, the one guy who seems to ‘get it’ is actually Elon Musk. The Model S was a stepping stone to the model 3, and I fully expect the cars to get cheaper and cheaper until *shock horror* they are available to ordinary people. My question is… where is the Elon Musk for food, for housing? for education? It seems like the ‘real world’ problems of access to education, clean water, food, shelter, are ‘too dull’ or maybe just too boring for the tech elite to bother with. That doesn’t need to be the case, they just need a little imagination. And if the only thing they can possible invent is a slightly thinner, slightly faster phone? then how about just paying the fair share of corporate tax, and let the government use it to do the ‘dull’ work?

By the way, if you do happen to be a tech-elite type, and feel bad reading this, you can build a whole school in cameroon for about $25,000. It’s easy.

 

Say hello to Ryan Sumo at PAX.

So… PAX is coming up. I have never been. I will go one year, maybe. I don’t fly a lot due to some insignificant concerns. Anyway…Positech sort of has a ‘presence’ there this year because a game we are publishing (Political Animals) is in the ‘minibooth’ bit of the Indie Megabooth.

If you are at PAX, you will be able to see (and play!) political animals on Sunday and Monday (4th-5th). It is worth your time. We don’t publish many games (PA will be our fourth published game, the others being Redshirt, Big Pharma and Shadowhand), but we get a LOT of pitches (roughly one a day) and the games are mostly forgettable. We don’t publish clones, generic games, or games without an interesting twist. Political Animals meets all of our criteria. Its a political strategy game like our own Democracy, but nothing like it in terms of gameplay. It is an election game, rather than a government game, it has a cute and funny design, and it focuses on corruption more than any other political game I am aware of. Plus the characters in it are awesome.

The team also has serious pedigree. I first met Ryan (in fact the only time so far!) at a game show where we was helping to man the Prison Architect booth, as he is the art genius behind the style that helped sell ten trillion copies of that game. As a result, Political Animals has a fantastic style to it. The only problem is both games are abbreviated PA. Bah.

Anyway, its an election year in the US (and also was in the Philippines, where PA is being developed), and a great time to be making a game on the shadier side of politics. Modern politics in the US and UK and Philippines makes Democracy 3 look like some idealistic dreamworld born out of a posh school debating society. I am hoping PA gets the attention it deserves, but as ever, this is increasingly tough. There are an insane number of indie games, and only so many press. maybe even fewer press.

So…

This is what Ryan looks like:

ryan

He will look more tired and jetlagged when you see him. Go talk to him, ask him about the game, and try the game. PAX is all about player feedback, so if it sucks, we want to know. if its confusing, we want to know, if its AMAZING, we want to know. Do try and find time to give it a try. Like I say, its only on the Sunday and the Monday.

Also…other devs, and press types. Invite Ryan to things. he is a nice guy, he is a great guy to interview! he will be able to tell you hilarious anecdotes about prison architect! (or make some up). He probably has things to say about Philippines politics! He is someone you should have at all your cool indie parties. He is @RyanSumo on twitter.

Ryan & co will also be at EGX in London, but if you are US press, this is your ONLY opportunity to interview the makers of the best political strategy game coming out before the election. Go do it!

 

Drawing a LOT of sprites

I’m doing early work on my next game, a completely new IP. I’ll be announcing it in a few months. Anyway… it involves drawing a big world with a LOT of objects in it. tens of thousands on screen probably. Drawing 10,000 objects in 2D is not as simple as you think.

If you are a non coder, or someone who only ever uses middleware, you might think ‘the new video cards can draw 10,000,000 polys per frame, what’s the problem? and indeed there is *no problem* if you want to set a single texture and then splat 5 million sprites on the screen that show it. Thats one (well…probably several) draw call, one render state, one texture. Even really old video cards like that.

The problem is when you have a lot of different textures and want to swap between them, because for engine-related reasons, you need to draw stuff in a specific order. In a 3D world, you can use a Z-buffer and draw out of order, but with 2D objects with some soft aliased edges, that looks BAD. The good old fashioned painters-algorithm is your friend. The problem is, if you draw back to front and the sprite textures needed go A B A B A B, you are kinda fucked…that means a lot of texture changes, and in directx9 (which I use for compatibility reasons), texture changes mean separate draw calls, which stalls the video cards, and is sloooowwwww.

Relevant video from GSB2:

So what are the workarounds?

Texture atlases. This is the obvious one. Stick A & B in the same texture, and you are laughing, suddenly stuff is a LOT quicker. This only solves the texture issue, not drawing to different render targets, but you can defer those draws anyway and do them separately (GSB 2 does this). Texture atlases are an obvious ‘win’ even if they only halve the texture changes. The problems here are that you either need to know what textures will follow each other and pre-compile texture atlases (something I’m trying right now), or you need to dynamically create texture atlases based on recent drawing, and effectively use an off-screen render target as a texture ‘cache’. I tried this recently…and it was actually slower :(

Dirty-rects. Basically draw the whole scene once, and save it in an offscreen buffer, and use it as your background, a single quad blaps the whole screen, and you only draw stuff that has changed / is animating. This, as I recall was used by sim city 4. The only problem is that scrolling really causes hell.

Intelligent grouping. The painters algorithm is only really needed where stuff overlaps. if I draw a tile, then draw a sprite on top of it, I need the tile first, but there is no reason why I can’t draw all the tiles first, then the contents. That means I can then sort the tiles by texture and draw them in a handful of calls (or one, if the tiles all fit into an atlas). You can do this at pretty much any level, effectively drawing ‘out-of-order’ but with caveats. Again, GSB2 does this, with various objects, especially debris and asteroids. In fact it goes one stage further by scanning ahead with each draw call to see if some non conflicting later objects could be ‘collapsed’ into the current draw call.

Multi-threading and other speed boosts. If you have too many draw calls and things are too slow, then you can expand on the time available to make draw calls. Essentially you have two threads, one which prepares everything to be drawn, and the draw-call thread, which makes all your directx calls. This way they both run in parallel (also note that the directx runtime will be another thread, and the video card driver another one, so you have 2 threads less than you think. With a hyperthreaded 4 core chip, you have 8 truly simultaneous threads, so you give away 2, have 1 core thread, 1 render thread and 2 extra ‘worker threads’ spare. Because of my own disorganisation, I tend to have directx called from my main thread, which means I do the inverse. GSB2 did this, with all of the transformation stuff for the asteroids, debris and other bits and pieces handed to a bunch of threads while I was busy with other stuff, then returning to the main thread to present the draw calls. Less efficient, but way better than single threading.

Hybrids. All of the above techniques seem valid to me. Although I am currently fixated on pre-compiled texture atlases, I’ll definitely use multithreading and probably some of the others. With some parts of a game, a specific optimisation system may work well, and with others it could be useless. It really is specific to what you draw, and is why I prefer a hand crafted engine to a generic one.

My basic problem is that (without explaining what the game is), I have a small number of ‘components’ that make up a tiny scene on a tile. There will be a lot of components per tile, as I want a fairly ‘busy’ look, but rendering them all individually may be ‘too much’. What I may end up doing is pre-rendering each conceivable tile as an offline-step, to reduce the number of calls. I’d like that to be a last minute thing though, so I can keep editing what the scenes look like. IU also want sections of each tile to animate, or be editable and customizable, which means there is less scope to pre-render them.

It will make a lot more sense once I announce the game :D

Shadowhand Video #3…and video hell

Wow, it can take ages to make a video for youtube if this is not something you do all the time. Basically I tried it with OBS, then got REALLY poor video quality, then tried instead with sony video capture PLUS fraps PLUS audacity, and got horrible synch issues, then eventually got the quality raised on OBS enough to try again (with audacity) and finally got a video mix i was happy with. At least now I know *my* formula is Webcam and video game capture through OBS plus audio through audacity and manually synch later (otherwise the sound balance can be a pain.

Anyway behold…

Essentially that’s me going ‘hey look at all the lovely character customisation options in shadowhand…of which there are many and they are extremely cool. I may finally break free of factorio once shadowhand is ready for serious playtesting :D.