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.

  • Ben: Great analysis. During the lab sequence in the Prey intro, you were looking around for tells that Morgan is in a...
  • 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...
  • 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

    The Grappling Hook Game, Dev Log 5: Wrapping And Slacking

    I’m working on the grappling hook game again now, and I’ve got the rope wrapping nicely around things, going slack when it should, and even making sounds. In this video I show you how that looks, then – with fair warning – get into how the code works.

    Sounds from
    Retract noise: eelke
    Grapple impact noise: taylorsyoung


    Tom Bennett: Hey, love how the game is coming along. You said in the vid that your levels will only have 1 or 2 buildings similar to gunpoint, but I was wondering how much grappling you would be able to do if it between only a couple of buildings?

    Causeless: Here's what I said on youtube, if it's any help:

    "Messing with angles to determine when to unwrap seems REALLY weird. Here's what I consider a more correct way - Cast a ray to both the current grapple point, and that point's parent (instead of just the parent as you were doing before). If you can see both, then it'd unwrap.

    You may think this would cause issues if you traveled around an object completely, but then you'll have created the new grapple points in the process of spinning around it anyways.?"

    About the grapple rope going through things... that's a much trickier solution. It's delving into the realms of continuous collision detection, which is a crazy huge issue that's been around for ages.

    It's much easier to find a solution which works "usually" than it is to find one that works in every case.

    The easiest solution is just to check for collisions more. Instead of checking every rendering update, check every physics update which happens a lot more... of course, at even higher speeds (or with even thinner objects) it's still miss.

    The harder solution is to check against object's corners for collisions instead of the whole thing, and then do some maths to find what corners are within the rope angle change between the previous frame and the current one, and then sorting them to ensure the new grapple points are created in the correct order. That *should* work in every situation, and will give improved accuracy to your current sim (where in some cases the line hits away from a corner then cuts through the object).

    That is probably too much trouble to be worth it, though.

    LTK: It's really interesting to see everyday physics being modelled in a game that has no prior preconception on how these things should work, whereas we all have a (mostly) intuitive understanding of what happens when a weighted rope gets caught on an object in mid-swing. It kind of makes you appreciate both the inherent complexity of physics as well as the challenges faced by programmers daily a bit more.

    Clark Redd: Will this game eventually have human character models or will it star a rectangular prism?

    Micael: Hi, the problem of the physics only checking X times a second is due to a setting called Fixed Timestamp (I believe that's the name), which is by default 0.02 (1/0.02 = 50), which is also the reason why you should use fixedupdate since it's framerate independent, you can just decrease that value to say 0.01 and now you have double the fixedupdates, OFC this requires more performance, but your game is already extremely light so it's a non issue.

    You also have physics options about penetration and the way such things are calculated to make it more accurate.

    Looking at your code I would advise that you stop commenting every line of code, unlike what you might think commenting everything is a bad coding practice, comment only when the code itself isn't clear about it's purpose. Comments get quickly outdated leading to programming errors, adding to that they reduce the ability of one to see a bigger scope of the code on the screen, since at this point half the lines are comments.
    Also for commenting methods/functions use XML comments which appear on intellisense popup making them far more useful than regular comments, since they describe the method/function and it's parameters, all without even having to go to definition.

    I would advise a quick read of a introductory book to c#/programming like head first c#, and something like c# in a nutshell as reference book, somethings mentioned in those books will not work in unity OFC, but most stuff does apply.
    If you do not wish to spend time reading I would at least advise you grab a trial of visual studio 2013 (something above the express edition), and the trial of resharper since resharper will suggest alternative ways of doing things, will indicate unused variables, possible null references, and introduce you to lots of c# features that you might not know about, all around it will make your code far better, with very little time investment.

    ghosttie: Just out of curiousity, what happens when you wrap the rope all the way around an object? Can you unspool it by going back around the object in the opposite direction?

    I think the solution to the floating blocks is airships - they're higher than any building and so would allow you get on top of any any building, plus they move around so that adds an extra layer of complexity.

    Alex: I tried doing a hiking/climbing game with ropes, I got to the point where I could wrap around object, but unwrapping...god that was awful, I spent month without succedding, (I still havent ) ! Glad you did it !

    Ethan: Hey Tom from your video on the dev log 5. could you provide me with script lines 375 and down? Im working on a game simular to this (for myself) and the part i am trying to igure out you didnt show in the video. it was around line 375 and down. I mean if you could provide the entire script you were showing in the vid that would be awesome but anyway I hope you can help me out! cheers