All posts

Games

Game development

Stories

Happiness

Personal

Music

TV

Film

TOM FRANCIS
REGRETS THIS ALREADY

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.

Theme

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

Projects

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

Fault

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

Clouds

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-Rock-and-a-Hard-Place-Trio-Jan

A Short Script For An Animated 60s Heist Movie

Dark Messiah

The Magical Logic Of Dark Messiah’s Boot

Arguing

Arguing On The Internet

Spelunky

Shopstorm, A Spelunky Story

Stealth Games

Why Are Stealth Games Cool?

Violence

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

Suspicious Manifesto

The Suspicious Developments manifesto

GDC

GDC Talk: How To Explain Your Game To An Asshole

Crosslink

Listening To Your Sound Effects For Gunpoint

Happiness

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

Gnome

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

AOL

A Woman’s Life In Search Queries

Second Life

First Night, Second Life

SWAT 4

SWAT 4: The Movie Script

Adventure Time Game

Adventure Time Game Post Mortem

On the weekend of the 15th, Fantastic Arcade held an Adventure Time-themed Game Making Frenzy. It meant anyone could make a game with Adventure Time characters for the purposes of that compo, which is rare, so I did.

I finished mine at 2am that Monday, left the next day for a work trip, then spent all of last weekend working on Gunpoint, so I haven’t had time to talk about how it went. Here’s how it went!

Firstly, here’s where you can grab the actual game and try it. It’s for Windows. If you’re not using Windows or don’t care enough, here’s a video of me playing it:

I wanted to make an Adventure Time game that:

  • Wasn’t just an existing type of game re-skinned to look like Adventure Time
  • Focused on something unique about the show and central to it
  • Featured both Jake and Finn and in some way reflected their friendship

So I made one where:

  • You play as Jake, and can stretch your legs and your arms with the cursor keys
  • Finn is AI controlled, but you can pick him up
  • You need Finn to fight the enemies
  • Finn needs you to reach the enemies

But I didn’t have time to:

  • Generate randomised enemies from component modules, to keep encounters fresh
  • Have boss enemies with modules like ‘Forcefield’, which would require you to drop Finn behind them to take it out
  • Have flying enemies you had to grab and hold down for Finn to bash
  • Have a Jake Suit mode where Finn would control movement and you control punching
  • Let you grab onto enemy modules and pull them out to help Finn defeat them
  • Have a tiny crown of invulnerability on some enemies that you can bonk off by nudging it, like in the Adventure Time pilot


An enemy visual redesign I immediately undid.

What went wrong

For one, that’s an awful lot unique mechanics and ideas. It’s not a mistake to have more ideas than you’ll be able to implement, since sometimes as you build the foundation, it becomes clear that some ideas are more viable and have more potential than others. But the problem with my laundry list is that there was no one thing on it that I was sure would be fun.

Once I had the stretch mechanic working, I re-prioritised. It felt nice, so it was an easy call to scrap Jake Suit mode, which’d be a lot of work and take you away from the bit that already worked well. I reckoned the biggest gains would be in something that added challenge, since it didn’t have any yet. So the Forcefield thing became my top priority.

This turned out to be a son of a goddamn bitch. It’s easy to make an enemy invulnerable from one side, but really hard to script out exactly what Finn should do in that situation. If he stops attacking, you feel like he’s not trying, and might not even know why. If he carries on attacking, he’s effectively paralysed, and the logic of whether and when you can pick him up and when he learns to stop was super messy and complex.

I still couldn’t get it behaving well after an hour or so, so I tried a different idea for the same effect: fan modules that would blow Finn back. Similar problem – it was hard to fully model Finn’s behaviour in all the possible states this could push him into without him seeming stupid or annoying, both of which were unacceptable.

Ultimately the basic design, where the guy who does all the combat is AI controlled, didn’t lend itself well to having a challenge bolted onto it. If I made bullets really hurt either of you, it was just frustrating, since you weren’t directly in charge of making sure you didn’t get hit.

I decided it was better to have no challenge than a challenge that spoiled what did work: stretching. So I spent what time I had left – half a day – making a tutorial, dialogue system, character progression, random level generator, redesigning the look of the enemies, fixing bugs, and adding the snail that the compo rules dictate must be included.

What went right

Stretching your legs
Is a strange and enjoyable feeling, which was the main thing I wanted to achieve.

Art
Using screencaps for reference, I was surprised how easy it was to make decent-looking sprites of the characters. Some of them I traced directly using layers, others I hand-drew, most were a hybrid, where I had a good base but needed to redraw limbs.

That said, I still knew I wouldn’t have time to do any proper animation, and I wasn’t sure I could make Finn attack stuff convincingly without it. Turns out a ‘charging towards enemy’ pose and a ‘just struck enemy’ pose looked fine – the crudeness of it is funny but not out of character.

In general, too, Finn kinda feels like Finn: super enthusiastic, utterly fearless, always takes the direct approach.

The random level generator
It has almost nothing to work with – there’s literally one platform type it can place, and two types of near-identical enemy. But it gets way more value out of that than I ever could have hand-designing levels, even if I had more than a weekend. And it took less than half an hour to code. I just made a mental list of all the things that should be random about the levels, how they should scale, and wrote out this:

And suddenly my game was infinite, as varied as it could be with one platform type, escalated in ‘difficulty’, and scaled itself dynamically to the player’s current stretch limit – something I couldn’t know as a level designer, since it’s up to you how many ‘Jake bits’ you collect to upgrade yourself.
In Game Maker’s internal structure, the game is actually just one room, and every time you get to the end of it, it reconfigures itself before putting you back at the start.

Originally it was going to end when you collected enough Jake bits to restore Jake’s normal stretch capacity, but since I found myself playing way beyond that, I decided not to limit for the player either. So you can keep boosting Jake’s maximum stretch upgrades, keep playing new levels, and you just get a little exchange between the two of them to acknowledge that they’d succeeded, to let you know it’ll just go on forever if you want. (You probably won’t.)

Conclusions

  • I think my design should have included one element of challenge that I was 100% sure I knew how to implement. Maybe something puzzly, maybe objects for Jake to pick up or switches for him to push. Hinging it all on all this complex enemy interaction left too many unknowns for Finn’s AI – I should have kept thinking until I had at least one idea with less uncertainty.
  • Random level generators are amazing, and easy to make when the ingredients are simple.
  • Any kind of persistent character improvement makes the interaction that leads to it much more meaningful, and again, it’s super easy to implement when the ingredients are simple.

More

Matt I: New Idea: Gunpoint Endless -- infiltrate an infinitely large building and hack and infinite number of laptops using Tom Francis's new randomly generated level skills.