← Back to Blog

Dev Blog · May 19, 2026

Window Wash: When the Strangest Idea Turned Out to Be Fun

Window Wash

Window Wash came from a list of game ideas I keep in a notes app — ideas so strange I was not sure they were actually worth building. "Clean a window with a squeegee" had been sitting there for months with a question mark next to it. I finally built it on a slow Friday afternoon expecting it to be a one-day throwaway. It ended up being one of the most played games on the site. I still am not entirely sure why, but I have some theories.

The Core Mechanic: Why Cleaning Feels Good

There is something deeply satisfying about revealing a clean surface from under a dirty one. The appeal is not unique to games — it shows up in satisfying cleaning videos that rack up millions of views online. I think it taps into something primal about order emerging from chaos. In Window Wash, the squeegee reveals the clean pane beneath the grime in real time, tracking your cursor path exactly. I implemented this using a canvas element with a clipping mask: the "dirty" texture is a layer, and dragging the squeegee erases it by drawing into a mask. The reveal is instant and precise. Every stroke you make is immediately visible as progress. That tight feedback loop — action, immediate visual reward, measurable progress — is the core of why the mechanic feels good even before any of the game systems around it exist.

Designing Hazards That Interrupt Without Punishing

A plain cleaning game with just a timer gets boring fast. I needed something that would break the rhythm without breaking the player's mood. I tried several hazard types. Moving dirt smears across the window felt too punishing — you undid your own work. A seagull that flew across and blocked the screen was too disruptive. What worked was additive hazards: bird droppings and rain streaks that appear on the already-dirty surface, requiring you to deal with them or have them count against your clean percentage. They add urgency without erasing progress. The bird dropping in particular became a fan favourite — it shows up with a sound effect and lands with a splat animation that I spent way too long polishing. Players reported that the bird dropping made them laugh, which is not feedback I expected to get from a cleaning game but is exactly the kind of reaction that keeps people coming back.

The Percentage Threshold and Why I Lowered It

My original win condition was 100% clean. Seemed logical — you are washing a window, after all. Playtesting revealed two problems. First, the corners were almost impossible to reach cleanly due to how the clipping mask worked near edges, creating a frustrating dead zone where the squeegee visually crossed the corner but did not register. Second, chasing 100% in the later time-limited stages turned the last few seconds into tedious edge-hunting rather than satisfying completion. I lowered the threshold to 85% and then tuned it per stage. Early stages require 80%, later ones 90%. This kept the challenge escalating while eliminating the corner frustration entirely. Eighty-five percent clean looks clean. Nobody in a playtesting session ever complained that the window was still a little dirty in the corners — they were just happy they won. Perfect was the enemy of fun, and the threshold change was the single best design decision I made on this game.

Browse All Games