← All case studies
Case Study 03

Gutter Run

Endless runnerJavaScript / PhaserWeb + Mobile
The brief

What we set out to prove

One game, playable instantly from a browser link with zero install, that also worked as a proper app-store release - with progress that carried between the two.

The challenge

What made it hard

Most "web-to-app" runners either ship two separate codebases that quietly drift apart, or ship one compromised build that's mediocre on both platforms. Neither was acceptable - we wanted someone to start a run on a friend's laptop mid-conversation, then finish that session on their own phone twenty minutes later, save intact.

Our approach

How we solved it

We built Gutter Run once, in Phaser over WebGL, and treated the mobile app as a thin native wrapper around the same web build rather than a separate port. Save state synced through a lightweight account layer so progress followed the player, not the device. The one-thumb control scheme (tap to jump, hold to slide) was designed first for touch, then mapped cleanly onto a single spacebar for the browser version - so neither platform felt like an afterthought.

The result

What shipped

Gutter Run became our proof-of-concept for the "instant-play first" model - a player can be in a run within four seconds of clicking a link, with zero App Store review cycle standing between a marketing post and someone actually playing. It's also the fastest game in our catalog to iterate on: a balance patch goes live the moment we deploy, no store review wait.

Phaser 3WebGLPWA wrapperLightweight cross-platform save sync
Open lobby

Got a game that needs this kind of attention?

Pitch the problem - we'll tell you which engine, and how we'd prove the fun first.