Est. 2018 · Edinburgh · Written by people who ship games

The Tick Rate, a weekly gazette of game development

This week's articles

Game Feel · Design

Coyote Time, Input Buffers & the Small Lies That Make Platformers Feel Fair

Players don't want physics. They want the game to agree with what they meant. Here are the four timing cheats we ship in every platformer, and the frame counts we start from.

Pixel-art diagram: a character runs off a ledge, hangs for six ghosted frames over a spike pit, and the jump on frame six is still accepted. F1F2F3F4F5F6 COYOTE WINDOW · 6 FRAMES ≈ 100 MS JUMP OK
Fig. 1 Leaving a ledge starts a six-frame grace window. A jump pressed anywhere inside it still counts.

Every platformer that feels good is quietly lying to you. When you sprint off a ledge and press jump a heartbeat too late, the game lets you jump anyway. When you mash jump just before landing, it remembers. None of this is realistic; all of it is fair, because it matches what your hands intended rather than what the collision box measured.

I call these the small lies. After eleven years of tuning them on two console platformers and a pile of jam games, I've stopped treating them as polish and started treating them as foundations. These are the four I add on day one, before a single level exists.

Post-Mortem · Engineering

Our Save System Corrupted 4% of Files. Here's the Whole Post-Mortem.

A week after launch the reports arrived with the same screenshot: an empty slot where forty hours used to be.

A pixel save cartridge with a red crack beside a grid of bytes; the final rows are red or missing where the write was interrupted. SLOT_A.SAV · WRITE CUT AT 0x3F20
Fig. 2 Half-old, half-new: what an in-place write leaves behind.

The cause, in one sentence: we wrote save files in place. When a console slept, lost power or had its cartridge pulled mid-write, the file was left half-old and half-new, and our loader quite reasonably refused to touch it.

Of players who sent crash telemetry in launch week, 4.1% had at least one unreadable slot. On handheld hardware it was closer to 7%.

Production

Scope Is a Budget, Not a Wish List

How three of us shipped Lanternfall in fourteen months: price every feature in weeks, keep the kill list public, cut half of what you promised yourself.

Gantt chart of fourteen months. Core loop, biomes one and two, boss rush and polish survive; biomes three and four, online co-op and crafting are hatched red as cut. A dashed red line marks feature freeze at month ten. M1M4M7M10M14 CORE LOOPBIOMES 1–2BIOMES 3–4ONLINE CO-OPCRAFTINGBOSS RUSHPOLISH/PORTS FREEZE
Fig. 3 Lanternfall's schedule, with the cuts left in on purpose.

We had three people and fourteen months. That's 182 person-weeks, minus holidays, illness and the fortnight every project loses to a tax form. Call it 160. Every feature had to be paid for out of that number, so we started writing prices next to them.

The Desk · Interactive

Frame Budget Calculator

At 60 fps you get 16.7 milliseconds to do everything: simulate, think, draw, play sound and paint the UI. Drag the sliders to match your profiler capture and see whether your frame fits.

Target frame rate
Budget
16.7
Spent
14.1
Headroom
2.6

Tight but shippable.

6.5 ms
2.4 ms
1.6 ms
2.1 ms
0.6 ms
0.9 ms

Rule of thumb from our editors: leave 10–15% headroom for garbage collection, asset streaming and the one explosion nobody profiled.

In Brief

The Wire

Showing 9 of 9 dispatches

  1. Engineering

    Fixed timestep, variable render. Still the right default.

    Simulate at a locked 120 Hz and interpolate for display. Your coyote frames, replays and netcode will all thank you.

  2. Art

    Palette swaps cut our sprite budget by 40%

    Four enemy variants, one sheet, a 16-colour lookup texture. Players read them as entirely different creatures.

  3. Design

    Playtest tip: film the hands, not the screen

    Grip tension and button mashing tell you where frustration starts a good ten seconds before the player says a word.

  4. Production

    Open your store page nine months out, not three

    Lanternfall's wishlists doubled in the six months before any trailer. Slow compounding beats a launch-week spike.

  5. Design

    Hit-stop: 3 frames light, 7 frames heavy

    Freezing both attacker and target for a beat sells weight better than any screen shake. Go past 10 and it reads as lag.

  6. Engineering

    Give every system its own RNG stream

    When loot and particle effects share a seed, adding a spark changes the drop table. Separate streams keep runs reproducible.

  7. Art

    The squint test at 25% scale

    Shrink a screenshot to a quarter and squint. If you can't find the player in under a second, neither can someone on a handheld.

  8. Production

    Budget one "nothing week" per quarter

    No features, no meetings: just fix whatever annoys the team. It's cheaper than burnout and pays back in morale within days.

  9. Engineering

    Profile your signals before blaming the language

    A Godot reader found 70% of her frame in one signal fired per bullet per frame. The scripting was never the problem.