The first version of fill.zone did not need a long design document. Blue and Red would place shapes into the same area. Each shape would grow until something stopped it. After 30 seconds, the larger share would win.

That idea is simple enough to understand after one tap—and deep enough to support different boards, fillers, turn systems, opponents, powerups, rankings, and replays.

How much space can one point claim?

Most territory games ask players to draw a line, move a unit, or capture a tile. fill.zone starts with only a point. The game expands that point into the largest legal filler it can create.

The result feels immediate: tap, grow, collide, score. But behind that animation is the rule that holds the entire game together.

Every shape must remain inside the board, avoid every neighbor, and resolve to one answer both players agree on.

Geometry came before game feel

Circles are straightforward. Squares and triangles are not. The rules engine treats every playable area and filler as a convex polygon, then uses containment and intersection checks to find the largest valid size.

A binary search grows each filler toward that limit. This makes all nine board-and-filler combinations possible without special-casing every collision.

Step 01

Exact shape containment

Keep circles, squares, and triangles inside square, circular, and triangular boards.

Step 02

Deterministic collision checks

Make the same placement resolve to the same geometry every time.

Step 03

Area-based scoring

Convert every completed filler into an exact percentage of the playable area.

A result needed pressure, feedback, and reasons to return

A geometry demo becomes a match when the decisions have consequences. v1.0 adds a 30-second timer, alternating and simultaneous turn modes, a pre-match countdown, decision windows, animated scoring, and a clear result.

Then came the layers that make the next round feel different: powerups, selectable geometry, AI difficulty, themes, sound, haptics, stats, and 13 achievements.

Fast pressure

Thirty-second matches keep the board readable and rematches irresistible.

Board swings

Seven powerups disrupt settled territory and reward flexible routes.

Visible progress

Live percentages, a race graph, history, and achievements make improvement tangible.

Different puzzles

Three boards, three fillers, and two turn modes reshape the same core rule.

Online play sends decisions, not boards

The deterministic engine made multiplayer unusually lightweight. Instead of streaming the full board, peers exchange one small message per move: the point that was chosen, plus the filler size and shape the sender already resolved for it.

Sending the resolved geometry rather than recomputing it was a deliberate correction. Both peers run the same rules, but floating-point results drift by tiny amounts between machines, and a drifting radius eventually places a shape where the other board says there is no room. So the receiver validates the incoming size against its own legal maximum and then mirrors it exactly. Simultaneous rounds work the same way, with the host resolving both moves together and shipping the authoritative sizes.

Private rooms use four-digit codes over WebRTC, with Supabase Realtime or PeerJS handling the signaling handshake. Random matchmaking rides the same foundation. Powerups follow the same rule as placement: the host rolls the outcome and sends the result, never the dice.

Why this matters

A move fits in a handful of numbers, and one authoritative resolver removes a whole category of desync bug. The interesting work stays inside the deterministic engine, where it can also power solo, local, online, and replay modes.

What ships in v1.0

Quick Match

Jump into a randomized AI match without configuring a board.

Solo vs AI

Choose geometry, turn mode, and easy, medium, or hard difficulty.

Multiplayer

Play locally, enter online matchmaking, or share a private room code.

Seven powerups

Bomb, Shrink Ray, Convert, Spread, Double Drop, Wildcard, and Gold Patch.

ELO and achievements

Track rating, match history, personal records, and 13 unlockable goals.

Shareable replays

Watch the race unfold again and share a match with another player.

The game remains plain HTML, CSS, JavaScript, and Canvas. There is no framework download between a player and the first match.

What we want to explore next

These ideas are directions rather than release dates. They will earn their place by making the 30-second core stronger.

Exploring

Daily Challenge

One seeded board for everyone each day, with a streak that rewards returning.

Exploring

A more strategic bot

Look beyond the largest immediate filler and value denial of the player’s next pocket.

Hardening

Stronger online play

Reconnect handling, commit–reveal for simultaneous rounds, and TURN fallback.

Polishing

More match feel

Sharper impact feedback, clearer area gains, and a more dramatic finish.

The design test stays the same: can a new player understand the next action instantly, while an experienced player still sees a difficult choice?

If that remains true, there is plenty of space left to fill.

v1.0 is live

Thirty seconds tells
the story better.

Open the game, place one filler, and the entire idea becomes clear.

Play fill.zone