← Back to Blog

Dev Blog · May 25, 2026

Marble Gate: Designing a Sliding Puzzle That Feels Fair

Marble Gate

Marble Gate came from a question I kept asking myself while watching my nephew play with a physical sliding block toy: why does this feel so satisfying when the solution clicks into place? I wanted to capture that tactile logic in a browser game — the clean, inevitable fall of a marble through a gap you've just opened. Getting the feel right turned out to require rethinking almost everything I assumed about puzzle design.

The Sliding Mechanic and Its Constraints

The core rule is that blocks slide horizontally within their row until they hit a wall or another block. Simple on paper, but the implementation needs to handle a chain of decisions: which direction does a block slide, what is its range of motion, and how does that range change as other blocks move? I represented each row as a 1D array of occupied positions, which made slide range calculation trivial — scan left or right until a collision. The harder design question was whether blocks should snap to a grid or slide freely. Free sliding felt more physical but made level design nearly impossible: the solution state depended on analog positions I couldn't reliably specify. Grid snapping felt rigid but made every puzzle state deterministic and fully editable. I chose grid snapping and spent effort on the animation — a smooth ease-out over 180ms between grid positions — to preserve the feeling of weight without sacrificing design control.

Ensuring Every Puzzle Has Exactly One Insight

Early Marble Gate levels had a problem I couldn't articulate at first: players would solve them but not feel clever. They'd shuffle blocks around until the marble fell, without ever having a moment of understanding. I realised I was designing puzzles with too many valid solution sequences. When multiple orderings work, there's no puzzle — it's just exploration with a reward at the end. I started designing backwards from the solution state: position the blocks so the marble falls cleanly, then obscure one critical move by placing a block in the way. The first move the player needs to make must be non-obvious but feel inevitable in hindsight. Each subsequent puzzle I built with this constraint has a clear "aha" moment that players describe unprompted. The marble falling stops feeling accidental and starts feeling earned.

Making the Marble Fall Feel Like a Payoff

The marble's descent through the board is the reward for solving the puzzle, and I underestimated how much that animation matters. My first version dropped the marble instantly — once the path was clear it teleported to the exit. Playtesters described winning as "anticlimactic." I added physics-based acceleration: the marble starts slow and accelerates through each cleared gap, with a subtle bounce on each horizontal block it passes over before falling through. The exit plays a short chime and a ripple effect. The whole sequence takes about 800ms. That 800ms is the point of the game. Everything before it is thinking; those 800ms are the feeling you're thinking toward. Tuning that animation sequence — the speed, the bounce height, the chime timing — took longer than any other part of the game, and it's the part that makes people want to immediately start the next level.

Browse All Games