The Grate Escape

Role

Game designer & art director ⁠— concept, art direction, level design through playtests; AI-assisted build

Client

—

Disciplines

Game Design · Art Direction · Pixel Art · Level Design · Front-end · AI Tooling

Year

2026

A browser platformer about a lab mouse who escapes on a rope of melted cheese. Charlie, test subject C-7, shoots a cheese strand at anchors, swings across gaps and outwits the cat scientists who run the lab. The game is still in development: 55 levels in five worlds are playable at cheesy.ontwrpn.com, and the portal release is next

Problem
Browser game portals are full of small, generic platformers. A solo project needs one mechanic that reads in a single screenshot and a character people remember
Insight
The rope is the joke. A grapple made of stretchy cheese gives the game its mechanic, its look and its pitch at once
Solution
Five worlds, 55 levels and five abilities built on the cheese strand, drawn as pixel art with an AI art pipeline and checked by 1,028 unit tests
Outcome
In development. Playable end to end on the web and offline as a PWA. Not yet released on a portal; usage not measured yet

One mechanic, one character, one screenshot

The target is the web game portals such as Poki and CrazyGames: casual players of all ages, no install, a few seconds to decide. Poki sets the frame: an initial download under 8 MB, 16:9, mobile web, no in-game purchases. Market research before the first line of code found a living niche with no leader: mouse-and-cheese games exist, but the last hit was Spy Mouse in 2011.

The pitch fits in one line: The Great Escape, but you are a mouse and the rope is melted cheese. Charlie wears a yellow C-7 ear tag and a torn ear; Professor Mittens, a cat in a lab coat with a “World’s Okayest Scientist” mug, runs the floor. The tone is mostly comedy, with one quiet thread: an old caged rat called Zero and a flower.

The mechanic in one screenshot: shoot, swing, release

I direct, design and play

I set the concept, the story, the art direction and the feel, and I playtest every build. I use Claude Code in development; the decisions are mine. 234 commits since 25 July 2026. Only a person can tell whether a jump feels good, so the playtest is mine and the final call on every level is mine.

AI writes the systems. A human tunes the feel

From a grey box to five worlds

The spec came first, then a grey-box prototype in one day: eight planned tasks, grey rectangles, and the only question that mattered: is swinging on cheese fun? It was, so the cheap pivot the plan allowed for was never needed.

The first worlds felt like a demo: short, simple, no story. I said so, and a research pass put a number on it: a browser session on CrazyGames averages around 30 minutes, and the game lasted five to ten. The scope grew to five worlds of 11 levels each, with a boss arena closing every world. Levels grew from about 2,000 px to 5,200–6,600 px, with checkpoints placed by risk. Each world adds one ability: the strand, a double jump, a zip-dash, a freeze jet that turns cheese into a ledge, and wall glue. The fifth world tests all of them.

Professor Mittens: fray the strand, drop the crate

Bait: a cat that eats stops looking

Cold Storage: the freeze jet turns cheese into a ledge

Rooftop Escape: the last world, where every ability comes back

An AI art pipeline that keeps the character

The art direction briefly went hand-painted. I brought it back to pixel art the next day: it is feasible for one person, and it fits Poki’s download limit. The visual DNA starts with a style sheet made in Nano Banana Pro; PixelLab turns it into sprites, animations, tiles and backdrops. The title art came from Nano Banana Pro as well, with every prompt logged, as Poki asks. The cover of this case is generated the same way, from the same style sheet.

The approved style sheet: every character and prop starts here

The hardest part was keeping Charlie Charlie. PixelLab’s template animations dropped the C-7 tag: 0–1 px of yellow where the reference has 21–28. Switching to the v3 mode with a custom start frame kept it, and a check now counts the tag’s pixels on every frame. Not everything was generated: the cheese strand is drawn in code, after three generated versions came out worse, and every sound and tune is synthesised in Web Audio, with no audio files and no licences to check. A world’s costume is a reward and gives no advantage: lab coat, hard hat, scarf, night-vision vest and Mittens’ monocle.

Playtests decide, numbers check

“You can just jump through all of it,” I wrote after a playtest. Instead of adding a feature, the jump was measured. Every level had been designed around 230 px, a number nobody had measured. The real jump is 149 px, or 176 px doubled, so four levels were impassable. The fix became a rule enforced by tests: from level 2 on, each level has a gap that only the strand can cross. A bot that plays without the strand can finish only level 1.

First players’ questions turned out to be bug reports. “What is this book?” meant a pickup with no prompt; getting stuck on a phone meant hints that said SPACE to a player with no keyboard. Both were fixed with an input-aware How to Play screen and on-screen hints. The rule that came out of it: a fix the player is not told about is not a fix.

Fuse Box: one of three minigames I proposed to break up the platforming

The menu was rebuilt twice. The first time because I did not like it, after research into how other games handle menus. The second, in October, gave the title a full-frame key-art cover on an 8 px grid and moved level select to its own screen, so the grid no longer covers a character.

Before: a menu on a wall

After: a cover, on an 8 px grid

Playtested by me, guarded by tools

The game logic lives apart from Phaser, so it can be unit-tested: 1,028 tests in 64 files, all passing on 21 October 2026. That split has a cost: tests that never load a scene let nine wiring bugs through, so a smoke test now starts every scene. CI also compares a screenshot of each of the 55 levels, checks build weight and production headers, and walks each level’s route. A production build once hung at 98% because the security policy blocked one kind of script; a check for it has run on every build since.

The tools also misled. In three days they raised seven or eight false alarms, and each was fixed in the check, not in the game. So a check only enters the CI gate after it has been shown to fail on broken input.

Players: three rounds of my own playtests plus remarks from a handful of first players, without a set protocol or a count. That is playtesting, not a usability study. Touch controls were checked with real touch events in Chromium and WebKit, but not yet on a physical phone.

Playable, in development

The Grate Escape is playable at cheesy.ontwrpn.com from the first level to the ending: five worlds, 55 levels, three save slots, a colour-blind mode, gamepad support and offline play once installed as a PWA. It is self-hosted and deploys on every push. Visits are counted without cookies on my own Umami instance.

It is not finished, and it has not been released where its players are. Until it is on a portal, there are no player numbers to report, and the case says “not measured”.

cheesy.ontwrpn.com — live preview
Live demo
cheesy.ontwrpn.com
Open

Play ⁠— cheesy.ontwrpn.com

What is still open

A test on real phones: finger size against the control zones, and performance on low-end devices. A balance pass: each mechanic is used about once and could carry more levels. A hands-on check of the levels I flagged as possibly unfair, and a first proper listen to the music. Then the portal release: a store icon and thumbnail, the Poki SDK and the submission.

Next project
Tea Lab