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.

Hitman header tunnel

Rewarding Creative Play Styles In Hitman

Far Cry Primal Thumbnail

Postcards From Far Cry Primal

Snowball jack header

Solving XCOM’s Snowball Problem

Kill Zone and Bladestorm

Kill Zone And Bladestorm

BAFTA Featured

An Idea For More Flexible Indie Game Awards

Sectors Header

Teaching Heat Signature’s Ship Generator To Think In Sectors

DXHR Open area

What Works And Why: Multiple Routes In Deus Ex

Heat Signature Natural Numbers

Natural Numbers In Game Design

Pharma Header

Naming Drugs Honestly In Big Pharma

Writing vs Programming

Make A Game Tutorial Thumbnail Featured IMage

Let Me Show You How To Make A Game

New Heat Signature Video: Galaxies, Suction And Wrench-Throwing

Her Story banner

What Works And Why: Nonlinear Storytelling In Her Story

My Idea For An ‘Unconventional Weapon’ Game

From Gunpoint To Heat Signature: A Narrative Journey

The Cost Of Simplifying Conversations In Videogames

Invisible Header

What Works And Why: Invisible Inc

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


Shopstorm, A Spelunky Story

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

Deckard: Blade Runner, Moron

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

Blood money and sex

Blood Money And Sex


A Woman’s Life In Search Queries

Second Life

First Night, Second Life


SWAT 4: The Movie Script

Floating Point by QBAEY

Floating Point Development Breakdown

(Screenshot by player QBAEY)

Floating Point is based on some grappling hook code I made for a game that I still plan to continue with some day. Since I was using version control for that, and hence for this, I have a log of every ‘commit’ I made during development: basically, all the times I felt my progress was worth backing up, and what that progress was.

With a bit of hackery, I’ve pulled out a list of those in chronological order to make a sort of diary of the game’s development, showing which days I worked on it and what I did. Obviously this contains some references to things only I’ll understand, but most of it’s in English, and it gives you an idea of how the game evolved and how long it took. I’ll highlight major developments or revelations, and add in when I tested and with how many people.

Floating Point was made in Unity, using Visual C# 2010 Express for code.

Generally the days when there are only a few commits, I probably only worked on it for an hour or two. The ones with about ten commits were probably full days.

Laugh! As I declare it basically finished on day 6.
Cry! As I fail to get a low pass filter working on a non-looping AudioSource!
Marvel! As I flounder to figure out how to ‘revert’ a crazy change, and have to revert my own revert before I can revert.

If you want a bit more context, I talk through most of this stuff in the Floating Point dev log videos I did as I went along.

Idea: 26th of April

Day 1

Added water level, buoyancy works, kinda fun!
New arena, slightly reduced buoyancy.
Splash sounds and levelling out on surface.
Sound selection fixed
All sounds done.
Random level generation, looking nice and chunky and glitchy.
Colours, bounciness, bigger levels, density.
Muuuuch prettier.

Day 2

Velocity Points system working, feels great!
Linerenderer and help text both in.
Sounds added, ready to show.
Bar graphs working, feels nice.

1 day gap

Day 3

Buttons to adjust density and decay. Music imported but not added yet.
Dynamic music in, no permission yet.

Day 4

Quieter music, now with permission!
Prototype 3 – full credits, help text, adjustable density and decay.
Trying to get line to shade, abandoning
Rope now glows.
Fixed the jerky jounce exploit! Everything’s super smooth and nice now (if a little easy)
Background level and fog done, working on switching it in.
Level shuffling working beautifully, currently increases Decay.
Level transitions now beautiful, with sound.
Prototype 5, plus density starts low and builds.

3 day gap

Day 5

Starts much easier
Filter is on audio listener now, splash restored.
Put grapple impact sound on its own audiosource and it STILL RANDOMLY FUCKING FAILS to apply the low pass filter.
Reinstated custom grpaple sound because fuck Unity’s ability to apply filters. Restored slack. Given music a minimum volume to come back from.
Variable cutoff with depth. Everything except difficulty choice and score bar in.
Easier and Harder switching working.
Boundary bouncing, everything kinda working now. Just need score readout/reset, maybe make sparse levels easier and less dark?

Day 6

Fixed fog, better boundaries, level transitions look lovely, minimum rope length, took slack out again.
Score font in, now pauses on run?
Prototype 5 candidate: just needs integer pickup value and better help text presentation.
Actually we’re on Prototype 7. Tweaked some text and made decay rate kinder.
Bar values pop up, fade out nicely.
Awesome new font, regrettably named Dots All Folks.
Buttons coming along.
Menus working and looking nice
That’s it, I think we might be basically done. Release candidate?
Forgot to tidy up controls for launcher. Also I should credit the font creators.

First test: Windows, 20 people

Day 7

Patch 1: custom cursor shows where you can grapple, much faster retract, much nice retract noise, much more reliable collision.
Whoops, cursor fixed.
Experimenting with left-click always casts grapple, disconnecting if nec.
Left click retracts but never disconnects, prefer this.
Massive cleanup, level transitions fixed, grapple never misses.
Credits in and control text tweaked, just needs a bit of rebalancing now.
Release Candidate 2 – balance tweaked, input menu tidied.

Day 8

Restored points penalty for collisions – it got lost when we separated Accumulatedpoints from Velocitypoints.
Tweaks menu, with rope and bar stats.

Second test: Mac and Linux, 15 people

2 day gap

Day 9

Version released to SusDev beta list: saves and loads tweak files.
High score tracking and overlapping bars working, feels great.
Tinkering with level end GUI layout

Third test: Windows, 2000 people

Day 10

High scores and bars working as fully as I intend to make them for now.
Version 11 (input stuff cleaned up, all warnings fixed)
Player is round, glow is much nicer, physics feel a bit better? Menu button width glitch fixed.
Adjustable level width and height, now saves to file.
Saves to file and resets defaults.
Level size tweaks complete, level regens as you cahnge them, score resets, etc.
Floor scales with water, but now I’m getting lighting glitches again.
Fixed glitchy lighting by making them ‘important’. Floor and water extend outwards, barrier is more generous, feels less claustrophobic.
130 height now default
Level height UI change, regen level on load custom tweaks file.

Day 11

Shorter pickup sound seems to fix the crackling.
LEvel gen parameter tweaks, more space underwater, no tiny blocks.
Version 12: slightly taller levels, shorter underwater sound.

Fourth test: Mac & Linux on Steam, 20 people

Day 12

Trails! OMG
Trail is now dynamic and basically perfect.
Dimmed background lights, stopped rope from glowing.
Nutty idea – hitting blocks destroys them and their points bar. Needs to also destroy thier light, not destroy the floor, and ungrapple you if you’re attached.
Reverting breaking-blocks idea.
Revert “Reverting breaking-blocks idea.”
Revert “Nutty idea – hitting blocks destroys them and their points bar. Needs to also destroy thier light, not destroy the floor, and ungrapple you if you’re attached.”
Put the colour back in the rope, it makes it easier to see.
Floor removed, bouyancy increased, level boundaries more generous, feels lovely.

Day 13

Limited bars per level, makes huge levels awesome, sparse levels great too.
Fills more of the underwater space.
Trails revealed at end of level – needs some tweaks though.
Tweaking trail reveal, but still no good solution – probably need two trail renderers. Take it out for now and do more important stuff first.
HUD-less screenshot function added, bars left display finished.
This time without committing the screenshots themselves.
Blerg, hadn’t saved Scene.
Control page tweaks, nicer score bar, surely some more important stuff. Bigger water. Less music cutoff.
First stab at random level configs. Some sure suck! Add debug stuff to tell you what the settings are on each.

Day 14

Regen key in, density and size ranges tweaked, not really having a huge amount of fun.

Day 15

30 bars per level, trailwidth correctly reset.
Level width fixed, fail-grapple crash fixed, lighting fixed, variables rebalanced, ‘next level’ key, thicker rope, bigger zoom.
Version 16 (input menu cleaned, fixed scores file startup recognition)
Sparser first level, Easier key removed, always-red rope is easier to see.
Fixed parameters not getting randomised, made rope clearer, made enter work on macs.
Heat Vision trails on end of level!
Lovely fadey outy whole-path trail at end of level.
Changed main trail to use white material and colour it red – bit brighter, smoother fade out, dunno if better?
Cool blue trace when complete level, looks super cool. Change your light and rope to match?

Day 16

All colours go cool after completing a level, plus score loading is fixed.
Restored the old triple-transparent trail.
Tweaks now adjust average and variance of level height and density.
More consistently easy first level, code cleaned up to avoid public nuisance, level competion sound.
Credited Toyoto correclty.

Day 17

Better credits.

15 day gap

Day 18

Removed colordivisor warning, renamed mantissascollected.

Day 19

Icon, beginnings of a tutorial level.
Refined tutorial level.
Turorial text
Tutorial test
Reverted density tweak, player spawns a little higher

Fifth test: Windows on Steam, 20 people

Day 20

Dynamic retract speed working and feels really nice.
Lower max speed, no water impact penalty.
SteamCloud build: customise retract bonus, tweaked retract defaults, no water impact penalty, closer zoom level, dot always orange, probably some other stuff.

Day 21

25 bonus retract kicks in linearly under barheight*2.
Minor cleanup to remove unused variables. This build deployed to Steam.

Release: 6th of June 2014

So in all, I worked on it 21 different days spread over about 5 weeks.

Lots of people have asked about how you get a free game on Steam. I can’t speak to Valve’s policy’s in general, I just asked them if they wanted it and they said yes. My understanding is that if you don’t already have a game on Steam, you need to go through Greenlight, as Zoe did with Depression Quest.

Lastly, CannonFodder_ on Twitter asked for tips on random level generation in Unity, so I pasted a cleaned-up version of Floating Point’s very simple level generator.

Hope some of that is of interest!


VoidedWarranty: Just an opinion, but I feel when grappling is implemented in the as-yet-unnamed grappling game I feel that your grappling hook should be allowed to miss, to add a skill requirement. I quite like it's current state in FP, but I feel that a less zen game might benefit from having to be able to keep your head in a fall to maintain momentum.

Urthman: In your video diaries you talk about giving the player the option to either move on to a harder level or back to an easier one, but it look like you took that out on Day 15? Why? Is it possible to go back to the easier levels without messing with the parameters?

Tom Francis: Back then I thought of 'density' as the same thing as 'difficulty' - it is harder to move freely on dense levels.

The problem with that system was that past a certain point, denser levels just make the game less and less fun. I thought people would go denser and denser until they found their challenge level, then go back and forth in that comfort zone. But people saw it more as a series of levels they had to get through, so kept going denser until the game was just bad.

I tried renaming it to 'denser' instead of 'harder', but people didn't know what to do with that. With the Tweaks menu in, we already had a way for people to tune density to their preference, if they have one, so it was confusing and redundant to be asking them to change it at the end of every level.

So I just picked a density I thought the game was best at, and let the levels randomise it a little from there. So now you 'progress' to the next level, but the game doesn't get harder. Getting higher scores is the difficulty component, really, density should just be set to whatever the game feels good at.

Riley: Have you considered patching or updating the game at all since release?

I'm the creator of Steamworks.NET which is a Steamworks wrapper for Unity. I love the game and I love the general initiative that you've taken with it being free. I do a fair amount of freelance work implementing Steamworks in Unity games. Let me know if you would like the MonoBehaviors that I use for Achievements & Leaderboards for free.

Send me an email if you're interested in anything (It's on my github.)

What I’m Working On And What I’ve Done - a post on Tom Francis' blog: […] designer Made in: Unity Out on: Windows, Mac and Linux (2014) More info: trailer, dev log videos, development breakdown Get it: free on […]

funnygameboy: could you make this game multiplayer? :D
or just a local competitave game like giving it split screen.
i just feel that it would be awsome if we could test our skills against each other and the game would be much more interesting trying to snag the points from the other player :D

but this is just my humble suggestion :D

Thanks for listening :D

and i think your game is awsome just the way it is im like addicted to it :D

Heat Signature, One Year Later - a post on the Heat Signature site: […] the grappling hook tech from the heist game and spent five weeks to make Floating Point, a peaceful game about swinging around elegantly, released on Steam for […]