All posts

Games

Game development

Stories

Happiness

Personal

Music

TV

Film

TOM FRANCIS
REGRETS THIS ALREADY

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.

Theme

By me. Uses Adaptive Images by Matt Wilcox.

Tom’s Timer 5

The Bone Queen And The Frost Bishop: Playtesting Scavenger Chess In Plasticine

Gridcannon: A Single Player Game With Regular Playing Cards

Dad And The Egg Controller

A Leftfield Solution To An XCOM Disaster

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

What Works And Why: Multiple Routes In Deus Ex

Naming Drugs Honestly In Big Pharma

Writing vs Programming

Let Me Show You How To Make A Game

What Works And Why: Nonlinear Storytelling In Her Story

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

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

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

A Story Of Heroism In Alien Swarm

One Desperate Battle In FTL

To Hell And Back In Spelunky

Gunpoint Development Breakdown

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

Arguing On The Internet

Shopstorm, A Spelunky Story

Why Are Stealth Games Cool?

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

A Different Idea For Ending 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.
dno
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!

More