Inspiration

HackPSU's Mystery Stack asked for a game people play together on their phones, where moving the phone is the core control, with friendly rivalry and 4+ players. Squid Game's games already work that way: you freeze, you pull, you jump — your body is the controller. Most phone party games turn your phone into a remote full of buttons. I wanted the opposite: no buttons during play at all. One QR code, nothing to install, and the whole room is in.

What it does

A laptop on the projector hosts the game. Everyone scans the QR code, types a name, and becomes a numbered player (like Player 067). Each round opens with a 5-second briefing of the rules, then:

  1. Red Light, Green Light (freeze). On green, moving fills your bar toward the finish line. On red, the doll turns around with glowing eyes — move after your half-second grace period and you're out.
  2. Tug of War (shake). Two teams shake as hard as they can. The rope follows each team's average strength, so uneven teams still get a fair fight.
  3. Glass Bridge (tilt). Players take turns tilting left or right and holding to jump. One panel is safe, the other shatters. Turn order is earned: whoever did best in the first two rounds crosses last.

Only survivors move on. Every elimination grows a prize pot (₩100,000,000 each), and the last one standing takes it. At the end, the big screen hands out awards (Statue, Speed Demon, Shake Machine, Glass Expert, Daredevil) and every phone gets a personal result card worth a screenshot. A calm, Korean-style announcer calls the lights and eliminations, with English subtitles.

For the host: a live movement-limit slider, practice rounds, team picking for "judges vs. me", and one-tap kick.

How I built it

  • Server: Node.js, Express and Socket.IO. The server is the referee — phones only report sensor readings, and the server decides every elimination, so nobody can cheat by editing their page. Each round and the full game are separate modules.
  • Phones: plain HTML, CSS and JavaScript — no app, no framework. DeviceMotionEvent for movement and shaking, DeviceOrientationEvent for tilt, the Web Audio API for sounds, and the Wake Lock API to keep screens on.
  • Big screen: the browser's built-in speech for the announcer, my own SVG doll and guards, and a server-generated QR code.
  • Hosting: Railway, at a permanent HTTPS address (phones only share motion sensors with HTTPS pages).
  • Testing: 83 automated tests, plus a chaos simulation that played 44 full games with 2–25 bot players dropping out, reconnecting, getting kicked and sending garbage — with zero crashes or stuck games.

Challenges I ran into

  • iPhones guard motion sensors. Safari only shares motion and tilt on HTTPS pages, after a tap and a permission prompt — so joining is one tap that asks for both.
  • Network delay made Red Light unfair. The server switched to red before phones showed it. Now each phone reports when red appears on its screen, and the grace period counts from there.
  • Phones drop out. Screens lock, Wi-Fi blips, people reload. Every player gets a private rejoin key, so a phone comes back as the same player and is caught up on the round in progress.
  • My temporary link died mid-hackathon when the laptop lost Wi-Fi, so I moved to a permanent host.
  • The bridge was rigged. With random order, the last player could never lose. Earning your spot in earlier rounds fixed it.

Accomplishments that I'm proud of

  • Three complete rounds, each with a different motion, chained into one game with a winner, prize pot and awards — built solo in 24 hours.
  • Judges can play on their own phones within seconds of scanning a QR code.
  • It survives real-world chaos: locked screens, Wi-Fi blips, reloads, and even the host's laptop refreshing mid-game.

What I learned

The mobile web can do a lot without an app store: motion, tilt, sound, vibration and keep-awake all work in a plain web page. And sensor games are mostly about fairness — grace periods, averages, caps and timeouts mattered more than graphics.

What's next for Squid Game: Phone Edition

More rounds from the show (Dalgona — trace a shape by tilting without cracking the candy), per-phone sensor calibration, and saving rooms so a server restart never ends a game.

Built With

Share this project:

Updates

Submission history