All posts


Game development








Hello! I'm Tom. I designed a game called Gunpoint, about rewiring things and punching people, and now I'm working on a new one called Heat Signature, about sneaking aboard randomly generated spaceships. Here's some more info on all the games I've worked on, here's the podcast I do, here are the videos I make on YouTube, here are some of the articles I wrote for PC Gamer, and here are two short stories I wrote for the Machine of Death collections.


By me. Uses Adaptive Images by Matt Wilcox.

Super Game Jam Header

Our Super Game Jam Episode Is Out

Shadow of Mordor Header 2

What Works And Why: Sauron’s Army

Heat Signature Talk

Showing Heat Signature At Fantastic Arcade And EGX


What I’m Working On And What I’ve Done

Murder, She Wrote

The Formula For An Episode Of Murder, She Wrote

Heat Signature Wide 2

Heat Signature Needs An Artist And A Composer

Heat Signature Floorplans Header

Improving Heat Signature’s Randomly Generated Ships, Inside And Out

Gunpoint Steam Workshop

Gunpoint Patch: New Engine, Steam Workshop, And More

Distance Header

Distance: A Visual Short Story For The Space Cowboy Game Jam

The Magic Circle

Raising An Army Of Flying Dogs In The Magic Circle

Floating Point Blog Launch

Floating Point Is Out! And Free! On Steam! Watch A Trailer!

Floating Sine

Drawing With Gravity In Floating Point


What’s Your Fault?

Hoplite banner

The Randomised Tactical Elegance Of Hoplite

Gone Point

Here I Am Being Interviewed By Steve Gaynor For Tone Control

Heat Signature Thumbnail

Heat Signature: A Game About Sneaking Aboard Randomly Generated Spaceships

GRappling Hook Thumbnail

The Grappling Hook Game, Dev Log 6: The Accomplice

Alien Swarm Heroics

A Story Of Heroism In Alien Swarm

FTL Story

One Desperate Battle In FTL

Spelunky Banner

To Hell And Back In Spelunky

Game vs story graph

Games Vs Story 2

Gunpoint Breakdown

Gunpoint Development Breakdown

Max Payne 3

Five Things I Learned About Game Criticism In Nine Years At PC Gamer

This is how you die

My Short Story For The Second Machine Of Death Collection


Not Being An Asshole In An Argument

Skyrim Diary - Frostmere

Playing Skyrim With Nothing But Illusion

Mainstream Games

How Mainstream Games Butchered Themselves, And Why It’s My Fault


A Short Script For An Animated 60s Heist Movie

Dark Messiah

The Magical Logic Of Dark Messiah’s Boot


Arguing On The Internet

Stealth Games

Why Are Stealth Games Cool?


E3’s Violence Overload, Versus Gaming’s Usual Violence Overload

Suspicious Manifesto

The Suspicious Developments manifesto


GDC Talk: How To Explain Your Game To An Asshole


Listening To Your Sound Effects For Gunpoint


Understanding Your Brain

What Makes Games Good

What Makes Games Good

Seat Quest

A Story Of Plane Seats And Class

Beneath Suspicion

Avoiding Suspicion At The US Embassy

Open Worlds

An Idea For A Better Open World Game

Level Up

A Different Way To Level Up

BioShock Ending

How I Would Have Ended BioShock

Meet the Spy

My Script For A Team Fortress 2 Short About The Spy

Team Fortress 2

Team Fortress 2 Unlockable Weapon Ideas

Football Manager

Don’t Make Me Play Football Manager

EVE Assassins

EVE’s Assassins And The Kill That Shocked A Galaxy

GalCiv 2

My Galactic Civilizations 2 War Diary


I Played Through Episode Two Holding A Goddamn Gnome

Machine of Death

My Short Story For The Machine Of Death Collection


A Woman’s Life In Search Queries

Second Life

First Night, Second Life


SWAT 4: The Movie Script

Heat Signature Big Ship

Ending A Space War With A Punch In Heat Signature

The next thing I wanna let you do in Heat Signature is take the helm of an enemy ship and fly it yourself. But right now, things go very screwy if you’re on a ship as it accelerates. So I’m redoing all the relative velocity code to make sure the contents of a ship stay stable while it’s jerking around.

I was testing the new code just now, and headed for a small ship to dock with it. It had rubbish heat sensors, so I came in pretty hot, and my ship was still cooling on its hull when I docked and snuck aboard. Unfortunately, at that exact moment, a much, much larger ship with much, much better heat sensors went past – and immediately spotted my still-warm ship latched onto the smaller one.

Ships have heat-seeking missile launchers now, of varying number, and when they attack they fire all of them. So as I’m dealing with the first guard in the small ship, four missiles slam into it. One destroys the module my ship was latched onto, sending it drifting into space. I run for the guard and knock him out, just as a missile destroys the room I was standing in a second earlier.

Two more rooms are blown off the smaller ship, leaving not much left. And once a space war starts, it doesn’t stop: the big ship might not have been aiming for the small one, but they’re enemies now, so they’ll shoot it out until one of them dies. And with four missiles per volley and only three rooms left on this ship, I don’t like our chances.

Heat Signature Knockout

But it suddenly occurs to me that a ship doesn’t have to be obliterated to ‘die’. If you knock out the captain, its lights and sensors go out and other ships see it as defunct. The time between missile volleys is also randomised – somewhere between 3 and 6 seconds right now – so I had no idea if I had time, but I tried it anyway: I sprinted for the cockpit and smacked the captain unconscious. The lights went out, everything went quiet, and… nothing.

I zoomed out just in time to see the bigger ship’s sensor radius slip off screen as it cruised off.

I was still boned of course, stranded on this ruined ship without one of my own to leave in, but it felt like a fantastic moment. I’d never even thought of this as a tactic until I randomly found myself in a situation where it was the only way to survive.


Tom Francis: Just a note: these shots are not from this situation, I just had to find some of similar sized ships to give a rough idea.

noffle: How did you approach having bodies that are on ships? I manage to get around this on my (somewhat similar) game by having those bodies maintain their own set of coordinates relative to the ship they are on. This way ship velocity and acceleration doesn't mandate the ship's contents be recalculated and tried to be 'kept still'.

noffle: More: a quick hack that I've had great mileage with for generating interesting screenshots is having your game automatically take a screenshot every 1-2 seconds and dump it into a folder on my harddrive, sorted into folders by each play session. That way whenever really awesome gameplay moments like this happen it's a matter of perusing the session folder for a record of what happened.

Tom Francis: Things on ships keep a note of their 'Distance' and 'Direction' from the ship's center, and find their position from the ship's position. That's so that when the ship rotates, they can add their direction to the new angle to rotate smoothly with it.

The problem with the old system was that it didn't force all ships to update their position before all the ship contents did, so they wouldn't always be working from the right/same info.

I've fixed that now, so things stay nicely fixed to their ships even as they accelerate and rotate. All except the player - he's fine for movement and acceleration, but when the ship rotates he stays where he is. Obviously he shouldn't, but exactly how I adjust the position of everything else in the galaxy to compensate is tingling my brain a bit. I think I know how though.

noffle: Ah, I see. If you stored the ships' contents in local coordinates though (just an X and Y, where 0,0 is the middle of the ship, say), and computed the world coordinates on demand (e.g. when drawing), you wouldn't need an extra step to keep the contents 'in sync' with the owning ship. The nice thing here is that you can have the player and other bodies use the same movement/collision/whatever logic, being ignorant of if they're floating space or on a ship.

The prototype is looking fun! Looking forward to seeing it evolve. :)

Nicholas D.: Wow, that's bloody brilliant. I've been obsessively playing FTL lately and boarding is still my favourite way of winning fights. A game with a more involved version of it is right up my alley. You appear to be making a game tailored to my tastes. Can't wait to read more about it!

Brennan Segarra: WOW I'm so excited for this game. Seems like such a great systems set up to just generate tons of different kinds of moments like that.
Of course from this I ponder the idea of finding your ship or possibly finding a station to buy or make a new one. Even if not, still fantastically emergent game play from so early in development.

PilotDev: Awesome! I bet its really exciting to have a moment like that in a game that you created. I really like your development style and way of thinking. Keep the posts coming so us part time devs can continue living vicariously thru guys like you!

flaillomanz: Hmm... This also raises the question of what to do if you become separated from your ship.

Perhaps have your ship, presuming it didn't go "kablooie", emit a beacon that only you - as the owner/captain - can pick up? This way, you could use the ship you've just boarded to find and access your own ship.

Since docking might be a little difficult from that point on, maybe some sort of... limited space-walk feature could be planned, perhaps 10 seconds worth of fuel to jet around with... and a very limited air supply, since this could then be limited to being able to board ships nearby which have far too sensitive heat detectors.

Now look what you've made me do, I'm getting that warm and fizzy excitement just seeing these updates.

RetiredSphinx: Haha, sweet. I love moments like this in games. It's always cool to see enemies behave in ways that interact in ways you didn't expect. Especially if you're making the game yourself!

Flint: So obviously this amazing-looking game isn't near this stage, but now that you mentioned the heat seeking missiles, I was thinking about how to avoid the missiles.

I think that the player's default ship should either start out with or be able to purchase an ability that instantly freezes the engines, but locks movement and weapons for something like 5 seconds.

I don't know if you're planning on taking this game down the RPG road like Gunpoint (Which I would absolutely love), but maybe some unique abilities for the player ship might be pretty cool.

Flint: Also do you plan on an alpha or beta release?

Alex: The system is getting deeper and deeper, I like it :D

confuseddev: I find your game very cool and inspiring. One thing i can't wrap my head around is, how you do your collisions with the movement and especially the rotations involved?

Tom Francis: Cheers! Right now collision is done per-pixel against the rotated sprites, which is easy to code but insanely inefficient. At some point I'm going to write my own functions based on the knowledge that everything is a rotated regular quadrilateral - I'm told they're called oriented bounding boxes?

It's already nice and smooth with a few hundred modules zipping around. I'd expect custom scripts to be at least 10x faster, so I'm excited to see how far I can push it then.

Gunpoint problem? Check for a solution or tell us about it on the Windows, Mac or Linux forum as appropriate!

For questions about what tools I used and when things are out and what platforms they're coming to, see here.

URLs get turned into links automatically. You can use <i>HTML</i> but not [b]forum[/b] code. If your comment doesn't show up, e-mail me - the spam filter's just detained it for questioning.