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.

  • RoboLeg: this game would be PERFECT for mobile, and I’d happily pay 10 bucks or so for it.
  • Jepp: 1) Please keep critiquing games by building new ones :) 2) The non-hand holding, simple systems integrating...
  • Jack: Are you going to release Morphblade for iOS or the Nintendo Switch? I would really like to play this on my...
  • Spaceman Moses: One-eyeing this on my phone from the depths of my covers I lazily ask: what do you mean XCOM2 clarity...
  • kripto: For what it’s worth, I also like Morphblade more than Imbroglio. Although, to be fair, I’ve also...
  • Rewarding Creative Play Styles In Hitman

    Postcards From Far Cry Primal

    Solving XCOM’s Snowball Problem

    Kill Zone And Bladestorm

    An Idea For More Flexible Indie Game Awards

    Teaching Heat Signature’s Ship Generator To Think In Sectors

    What Works And Why: Multiple Routes In Deus Ex

    Natural Numbers In Game Design

    Naming Drugs Honestly In Big Pharma

    Writing vs Programming

    Let Me Show You How To Make A Game

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

    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

    What Works And Why: Invisible Inc

    Our Super Game Jam Episode Is Out

    What Works And Why: Sauron’s Army

    Showing Heat Signature At Fantastic Arcade And EGX

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

    The Formula For An Episode Of Murder, She Wrote

    Heat Signature Needs An Artist And A Composer

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

    Gunpoint Patch: New Engine, Steam Workshop, And More

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

    Raising An Army Of Flying Dogs In The Magic Circle

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

    Drawing With Gravity In Floating Point

    What’s Your Fault?

    The Randomised Tactical Elegance Of Hoplite

    Here I Am Being Interviewed By Steve Gaynor For Tone Control

    Heat Signature: A Game About Sneaking Aboard Randomly Generated Spaceships

    The Grappling Hook Game, Dev Log 6: The Accomplice

    A Story Of Heroism In Alien Swarm

    One Desperate Battle In FTL

    To Hell And Back In Spelunky

    Games Vs Story 2

    Gunpoint Development Breakdown

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

    My Short Story For The Second Machine Of Death Collection

    Not Being An Asshole In An Argument

    Playing Skyrim With Nothing But Illusion

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

    A Short Script For An Animated 60s Heist Movie

    The Magical Logic Of Dark Messiah’s Boot

    Arguing On The Internet

    Shopstorm, A Spelunky Story

    Why Are Stealth Games Cool?

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

    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

    A Story Of Plane Seats And Class

    Deckard: Blade Runner, Moron

    Avoiding Suspicion At The US Embassy

    An Idea For A Better Open World Game

    A Different Way To Level Up

    How I Would Have Ended BioShock

    My Script For A Team Fortress 2 Short About The Spy

    Team Fortress 2 Unlockable Weapon Ideas

    Don’t Make Me Play Football Manager

    EVE’s Assassins And The Kill That Shocked A Galaxy

    My Galactic Civilizations 2 War Diary

    I Played Through Episode Two Holding A Goddamn Gnome

    My Short Story For The Machine Of Death Collection

    Blood Money And Sex

    A Woman’s Life In Search Queries

    First Night, Second Life

    SWAT 4: The Movie Script

    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 […]