Hello! I'm Tom. I'm a game designer, writer, and programmer on Gunpoint, Heat Signature, and Tactical Breach Wizards. Here's some more info on all the games I've worked on, here are the videos I make on YouTube, and here are two short stories I wrote for the Machine of Death collections.
By me. Uses Adaptive Images by Matt Wilcox.
Opens on a conversation between two unappealing men in a pickup. A few lines into it, I know I’m going to love this show. Nothing about the premise is interesting or original, and the plot of the pilot is so over-familiar it could have been traced. But smart writing shows instantly, shows constantly, and never stops being a pleasure. Continued
Ow, this was hard going. If you’ve seen all of season four, the John Lithgow series and the best yet, you’ll know what I’m talking about. If you haven’t, don’t read any more of this. I’m pretty sure I’ve already ruined it for both the people adjacent to me on the plane when I watched it. “Whose funeral was that?” “Uh…” Continued
I keep trying to make time to write properly, but lately the Jack Bauer of responsibility has been growling that I “don’t have time for this dammit!” and shooting me in the kneecaps. So I haven’t written about any of the great new TV starting in the US right now, or the Team Fortress 2 Walletfucker Update, or Death Note, or Dexter, or StarCraft 2, or the trip to Vancouver I just got back from.
So a thought occurs: Brevity Week, in which I rapidly post about these things in as few words as I can manage, possibly not bothering to find images if it’s in any way hard. How was Vancouver? Great.
On some level, my game is going to be about fucking with people. When you get down to it, the reason I like Deus Ex isn’t because I have the choice of using a multitool or shooting a guy. It’s that I can trick the guy into doing what I want. If I don’t have the key to a door with a guard on the other side, I can just shoot a wall, and he’ll unlock it for me when he comes to investigate the noise.
People coming to investigate, in fact, seems to be the core rule in the most enjoyable deceptive play – whether it’s in Deus Ex, Thief or Hitman. So that was my one requirement for Gunpoint AI: you must be able to knowingly misdirect the AI. The fact that investigating suspicious noises is also semi convincing, semi effective behaviour for a guard is just a nice bonus.
I had a feeling this would be hard, and I knew it was probably a little too involved for a first project. But I was looking forward to trying, because AI is one of those nice juicy problems that’s too big to tackle. You have to break it down, and breaking things down in ways that make sense is one of my favourite things to do. I took philosophy and maths at university, so it’s about the only common thread in my voluntary education.
I wanted guards in office blocks to head to the source of suspicious noises, like gunshots or glass breaking, even if they weren’t on the same floor. It sounds dangerously like pathfinding, a famously sticky area, but I didn’t think it would come to anything like that. I can just break it down into a) how do I get to somewhere on my floor? and b) am I going to the sound itself or the stairs?
What I’m learning, increasingly, is that conceptual stuff is not the hard bit. Every high-level idea you have for how to translate a design concept into chunks of algorithmic code will probably work, and in fact is pretty easy to write. The hard part is a part I didn’t even realise was a part: order.
“I wanted guards in office blocks to head to the source of suspicious noises” – really? Did I want dead guards to respond to suspicious noises? Did I want guards to walk right past the player himself on his way back from breaking a window, in order to investigate the breaking of the window? Did I want guards who are being blown out of a window by the force of an explosion to stop, mid-air, and tell the others: “Oh hey, I’m closest to that broken window I was just flung through, I’ll go check out what caused it”? Did I want the guard who just shot you to run to your dead body and try to solve your murder?
Actually I kind of do, but that’s probably another game.
It’s easy to code what you want. But you don’t really know what you want until you’ve tried to explain it to a very, very stupid person. That was Socrates’ thing, in fact: he acted like an idiot to make people explain themselves to him on the most basic level, which usually revealed they didn’t truly understand their own beliefs. These days we have silicon hyperidiots to explain things to. They’re able to be much more stupid, many more times a second, than Socrates ever was. Coding is the Socratic method as an extreme sport.
Because the concept behind my AI system was simple, scripting it was getting increasingly complex. Every time I said something like, “Set this guard’s state to ‘alert’,” I had to first check that he wasn’t dead, or stuck, or in a lift, or being punched. And it wasn’t going to get any less fiddly: every time I added a new situation, I’d had to go back and add new exceptions to every line of code it could influence.
The only way I could make it simpler to code was to make it more complex to think about. It turns out that the nitty gritty of how an idea works in practice is a much more unwieldy beast than the high concept of what you want it to achieve, and it’s the former you really need to simplify.
So now I have an intricate system of connected timers, tracking five or so independent properties of the AI’s mental and physical state, and it’s a mess to think about. But in code, it’s remarkably straightforward. I’ve turned every sub-problem into a separate function with a human-readable name, replacing stuff like:
if ((sprite_index=sGunman && oPlayer.x > x) or (sprite_index=sGunmanLeft && x > oPlayer.x))
With: if HesInFrontOfUs
The top level code is now just this – the pink things are functions I’ve written that call in other chunks of code:
And after a lot of tinkering, and a few maddening variable-definition errors I never really got to the bottom of, it actually works. You can lure guards from their posts, hide the other side of the stairs and jump them when they come out. Or you can make a noise on one floor, then travel to another while the guard there runs to the one you just left. It’ll get more interesting once you have more of a toolset: right now all you can do in Gunpoint is jump on people and whale on them. But it’s already actual fun to screw with the AI, so I’m pretty excited about what I can do with it from here.
By the way, Spelunky creator Derek Yu put up a great guide about what stops people finishing games, and how to avoid it. Since he inspired me to start this, it’s nice of him to also inspire me to try and finish it.
Lastly, I need opinions: man-sized air vents are a cliche. But are they an annoying one, or just a tool that ultimately makes a game more fun? In some ways they’d fit with Gunpoint’s movement system, since they wouldn’t have to be floor-level for you to get to them. But I don’t know how sigh-worthy people find them these days.
The winners of the 48-hour game-making competition Ludum Dare were just announced. It’s a regular thing that awesome indie devs pile onto partly as a test of their skills, partly as a thought experiment, and partly just to jam and share ideas. The theme this time was Enemies as Weapons.
I didn’t enter, though lots of absolute beginners do, and it’s the sort of thing I love. But while I now feel capable of starting a small project like that, I don’t feel capable of finishing one in any kind of time. I was also pretty goddamn determined to get elevators working in Gunpoint by Monday, because four days on that is just kind of sad.
But I did have an idea for one. I think I like the competition’s theme because it’s suggests changing the state of enemies in a more interesting way than from alive to dead. Either to make them accidentally destroy things you want destroyed, as in games where you shove them into something or dodge their attacks, or to turn them to your side.
My game would be called Defect and Serve, and it’d be about bent cops. You’re a criminal who’s just been caught, unarmed, during an elaborate bank job. The arresting officer hints that he’d let you go for a hundred grand, and while he’d like to just take it from you, if you’re dead or caught there’ll be no explanation for the missing money.
Your only option is to pay up – tossing the money to him in bundles of $50,000 by clicking. Above his head is a meter labelled “Principles:” followed by two blue pips, and each bundle of cash makes one of them explode in a little shower of bills. When they’re both gone, he leaves and heads for the opposite end of the building.
It’s from a top-down view, and once that cop leaves you’re free to figure out a route to the exit avoiding the other roaming police. Each has a number of Principles pips, usually between 1 and 10. It’s possible to get out without running into anyone else, but if you do, you’re rooted to the spot and must chuck them a $50k bundle for each pip of Principles they have before you can go.
Once you’re out, the next levels are a series of heists where you start with limited funds, and make your way to vaults and safes to get more. Your objective is to steal more money than you spend bribing, obviously, so you avoid the very Principled cops like the plague.
A few levels in, you’re told you can also toss some extra cash to a cop after you’ve already turned him. This creates a red Loyalty pip, and if you give him as much Loyalty as he had Principles, you can order him to radio an all clear to the rest of the cops, making your current location safe for a while.
If you can double a cop’s Principles in Loyalty pips, you can actually click on another cop to order him killed. The turned cop will head for him, but won’t strike until the two of them are on their own. It’s up to you whether to distract or bribe the other guards to help him achieve that, or get on with sneaking through the building and hope he has the chance at some point.
Eventually you will encounter the odd White Knight cop, who’s impervious to bribes. If he’s guarding your objective, your only option is to have him killed. At this point cops with low principles become essential tools rather than minor threats, and you’ll actively try and run into one on his own so you can turn him to your side. Once you have, it’s worth intentionally alerting the White Knight to lure him away from colleagues, giving your turncoats the chance to take him out without getting caught.
I’m actually enjoying sticking with Gunpoint, it’s just impossible to resist coming up with a concept for a theme like that. I’ll probably have another Gunpoint progress report soon – I’m close to another milestone involving the AI, and I’ll be in a good position to figure out what kind of challenges are going to be fun in this frame work.
Even as it rapidly approaches an actual game, it seems to be getting further and further from the story-heavy finished article I had in mind when I started. I pictured it story-heavy because writing is trivial, but I’m starting to realise scripting is not. And it’s a low value type of work, only really good for one play through, and little to do with the medium’s strengths. I’m starting to wonder if there’s another type of content I can use to link a bunch of puzzles, or a more efficient way to convey story without visually depicting a lot of non-interactive events.
A slightly tense week inspired me to go back to Hitman: Blood Money last weekend. It is cathartic.
This is the climax of a spectacularly machiavellian plot to replace an actor’s prop pistol with a real one to trick him into performing your hit for you at the crescendo of a wartime opera.
I’ll save you the trouble – yes, there’s a bomb in that.
I don’t know why, but as I trash-compacted this sanitation worker, it really bothered me that I was depriving society of the valuable service he provides.
If you’re in witness protection, don’t let them put you in a house with a wall like this.
In case someone hides there and throws a kitchen knife into your head like this.
In retrospect, yes, it was always going to be difficult to get away with killing that bird in front of this cop.
I still don’t know how they did this goddamn crowd scene. How- polygons- what?
This is as tragicomic as it is hilarisad.
I am especially unclear on where I keep my pistols in this outfit.
Yes, I have done this more than once.
Futurama hasn’t been this good in years. It’s been very funny this season, and I think most of the movies had some inspired gags, but this week’s was the first time the plot’s been as good as the jokes since the good old days. It did what all the best episodes do: found the humour value in an old sci-fi concept and took it to ridiculous extremes. Continued
Two weeks before the return flight: four or five bad seats. I don’t book any of them. Continued
My first thought on the plane was “Oh man, Club Class on this flight looks just like the lowly World Traveller Plus.” Then, “Oh, that was World Traveller Plus. This is Club Class.” Continued
Club World isn’t first class, but it makes it hard to imagine what is. Do their seats go beyond horizontal, into back-breaking reflex angles? Do they face out into the open air, to guarantee three miles of leg room? After the champagne, three course meal and brandy you get in Club World, is there a heroin course? Continued
I think stand up comics do a lot of plane food material because they travel a lot for their work, and travel is boring, and boredom gets you thinking. This is how I’ve come back from a trip with 3,000 words about my seat. I’ll put it up in parts, and since I don’t have any photos of most of it, I’m going to illustrate it with pictures from an unrelated adventure. Continued
To anyone who nominated me for a Games Media Award. I am a finalist! With any other award it’d be corny and false to say the nomination is what counts, but with GMAs that’s actually true. Like last year, the nominations are open to the public but the judging is by a panel of games media types and PRs. I’d love to win this year, but I’ll be honest, I’m not super concerned about my popularity among games media types and PRs. The really nice thing is to have a bunch of people put your name forward out of the blue.
In return, I will try to be slightly less inadequate over the next week about posting stuff, both here and on PCG. Starting with some fun news from Valve about Team Fortress 2 I’ve only just had time to write up, and a short series of stupid posts here that have nothing to do with anything. Yes. This plan makes sense.
If you are a judge, you don’t have to vote for me, but you should definitely vote for:
That short story collection I wrote for, Machine of Death, is actually getting published. It’s out in October, in big floppy paperback, and it’s going to be illustrated. It includes stories by:
Illustrated by people including:
I have no idea who’s illustrating mine yet, but you can’t really lose with this list. The final lineup very charitably calls my story ‘brutal, desperate and real’, so it’d be kind of hilarious to see Kate Beaton do it.
I have a flight to catch and a lot to do before and on it, so hasn’t totally sunk in yet. Here’s my story, and here’s the comic that inspired the collection. Oh yeah, and here’s the awesome cover:
Update: found a new source for the stills that broke and added some clarification from the comments to the intro.
I rewatched Blade Runner recently, because it came up a lot when I asked for visual inspiration for my game. Almost everything about it is still brilliant, except the main character. I’m not sure how I’ve never noticed this before, but Deckard is an idiot.
He’s given all the information he needs on a plate, nothing bad happens unexpectedly, and every lead falls into his lap. He has photo ID of everyone he has to kill, he’s told about their physical strength, he has a gun, they’re all unarmed, and he’s legally allowed to shoot them dead in public. Yet in every case, he lets them get into a hand-to-hand fight with him that he can’t win, and the only way the film can even keep him alive is for his targets to suddenly stop fighting or get killed by someone else.
Here’s a summary of his encounters with all of the replicants he’s apparently the only one good enough to kill. Stills from FilmGrab. Continued