Back to projects
Screenshot of the game in action Project

Freeze Tag

A real-time multiplayer freeze tag game where things spiral fast. Chase players, freeze them, or save teammates before they switch sides. Add in random abilities like teleport and pulse, and every round turns chaotic. No downloads, just jump in and play.

March 26, 2026

GameWeb

Play it here: https://freeze-tag-online.aeveagg.workers.dev/


🎮 What This Actually Is

This is a real-time multiplayer freeze tag game that runs in your browser.

No installs, no accounts, no friction.
You send a link, people join, and it just works.

One player freezes.
Everyone else runs.

If you get frozen, your team has a few seconds to save you. If not, you switch sides.

Simple idea, but it gets out of hand very quickly.

🔥 Chaos in Action

(Drop a gif or short clip here of a round going completely wrong)

Ideally show:

  • Someone getting frozen
  • A teammate going for the save
  • An ability triggering at the worst time
  • Everyone panicking

That’s basically the whole game loop.

đź’€ What Went Wrong

A lot more than expected.

Movement felt off

At the start, what you saw wasn’t what others saw.

On your screen you’re safe.
On theirs, you’re already frozen.

Had to:

  • Smooth positions instead of snapping
  • Accept it won’t be perfect
  • Focus on “feels right” instead of “is correct”

Lobbies were annoying

Making a lobby is easy.
Making it not break is not.

  • People leaving mid-game
  • Host disconnecting
  • Games starting half empty
  • Weird edge cases everywhere

Way more time went into this than I wanted.

Abilities broke everything

Blink, pulse, shuffle… all fun, all a nightmare.

  • People teleporting into bad positions
  • Freeze and save happening at the same time
  • Entire lobby triggering abilities at once

At some point I stopped trying to make it perfect and just let it be chaotic.

Latency exists (shock)

Even small delays mess things up:

  • Tag detection
  • Freeze timing
  • Saves

So instead of fighting it fully:

  • Added small buffers
  • Made interactions slightly forgiving
  • Prioritised responsiveness

Good enough > perfect

🛠️ Under the Hood

Cloudflare Workers

Backend runs on Cloudflare Workers.

No servers to manage, just deploy and it’s live everywhere.
Perfect for this kind of project.

Real-time stuff

Using WebSockets to keep everything in sync.

Each player:

  • Sends movement + actions
  • Receives updates from everyone else
  • Listens for events (freeze, save, abilities)

No polling, everything is pushed instantly.

State syncing (the painful part)

Kept it simple:

  • Server is the source of truth
  • Clients send inputs
  • Server processes and broadcasts

On the client:

  • Smooth movement with interpolation
  • Ignore tiny inconsistencies
  • Make it look good rather than mathematically correct

Trying to perfectly sync everything just made it worse.

🔍 TLDR

  • Multiplayer freeze tag in the browser
  • No downloads, just send a link
  • Chaos comes from abilities + real players
  • Multiplayer is way harder than it looks
  • “Good enough” ended up being the best approach

🤔 What’s Next

If I keep building this:

  • Better mobile support
  • More maps
  • Cleaner networking
  • Maybe some stats or progression

Right now it works, it’s fun, and it’s slightly broken in a good way.