Largest Mass Multiplayer Game Ever Played Live at The Sydney Opera House

October 28, 2026

Running the game at Tumbalong park
Running the game at Tumbalong park

This is how we created the largest game ever played live. We did it at the Sydney Opera House in 2025 - if you want an exciting summary, you can see us explain it to a rat in this video.

Invitation to Australia

We were very lucky to be invited to perform our show Robo Bingo at both Sydney and Melbourne Comedy Festivals in 2025.

Alongside doing Robo Bingo, we were asked to perform at the Comedy Galas at the Sydney Comedy Festival, these are like big showcases of multiple comedians, each doing 5 minutes to give a taste of what's in their hour show.

Our shows work by people playing along with show on their phones through our custom software. We accomplish this by bringing our own WiFi routers and using a local network with our laptop as the server. However for the Galas, this would have to change.

On the way to our Opera House performance, yellow thing behind Lloyd is our tote bag over the top of his guitar as we didn't have a proper case and put it into his backpack with the zip open at the top.
On the way to our Opera House performance, yellow thing behind Lloyd is our tote bag over the top of his guitar as we didn't have a proper case and put it into his backpack with the zip open at the top.

Going Gala scale

We stick to a rule of using one WiFi router per 50 people, and our Robo Bingo show was in a room of 50-100 people, so we used two routers, easy.

The Comedy Gala venues were 1000, 2000, 3000 seaters. So we would need 60 routers. At the time, we owned eight. 52 more routers and cables would cost £5000 and we would need to set them up at the venue beforehand. Luckily we had an excuse not to attempt this big WiFi network: the suitcase was already full.

So we decided to not do an interactive set. We've got stuff where people don't use their phones. We focussed on getting the Robo Bingo hour show ready, and put the thought of the Galas in the back of our minds.

Then once we were in Australia we checked with the promoter if they were expecting an interactive set - they said they were looking forward to it.

We had 11 days to do it. We started working on it on the 11th April 2025, the first Gala was on the 22nd. It was constant programming in our apartment, alongside performing our other show every day, packing everything up and then travelling Melbourne -> Sydney and setting up for our show at the next venue.

In taxi to Melbourne airport. Luggage on lap as boot was full of luggage
In taxi to Melbourne airport. Luggage on lap as boot was full of luggage

Our new website

Time to do a plan so crazy, it just might work.

Instead of WiFi, we would use the audience's mobile data.

But isn't mobile data bad?

Yes!

Never expect it to work in large crowds!

But what else could we do?

  • We'd make an incredibly small website
  • We'd make the live connection to the server send the smallest messages possible

We would create a version of our game "Avoid the Zeros". It's an infinte runner like temple run, but multiplayer and you play an IT consultant and you must avoid falling 0s. The graphics look like ASCII ART, as if they are running in a computer terminal, as the very first version of the game Peter wrote at a hackathon and it did indeed run in a terminal.

Coding from the Sydney hotel room, with our luggage bag we kept the set in, before dragging it in the street melted its wheels
Coding from the Sydney hotel room, with our luggage bag we kept the set in, before dragging it in the street melted its wheels

Network

Knowing the game, we were able to make the code do several tricks to minimise network traffic.

Minimising data transfer

The more people in one area, the more one cellular tower has to deal with. This causes data rate to go down, so we did the following.

  • Binary messaging serialised using Protobuf, not sending messages as text, e.g., JSON.
  • Sync initial state and then only changes to data, e.g., you get all player positions in the first message and then only messages when a player position changes.
  • Don't use ints for everything, e.g., player positions can only be in one of 24 cells, so we use an enum of 24 states.
  • Don't send an update until they have acknowledged they recieved the last one (we actually have a parameter that can set how many messages are allow in-flight). This self-throttling also prevents messages backing up.
  • Sync at most N clients to each player, e.g. only sync 300 players to each phone (replacing them when players are knocked out), this prevents network getting worse for clients as more players join. We synced all players to the screen displayed onstage (we took the risk with our data, some shows we had an ethernet connection, some we were on mobile data ourselves).
  • Brotli compression on all assets served by NGINX.
  • All sprites are stored in one image as a sprite atlas, compressed to approx 50KB.
  • We used Rapid JS, a very small library for graphics.
  • On average with all players moving, each player was being sent 8KB/s. Which is very low by today's standards.

Hiding latency

Mobile networks can have higher latency than WiFi, newer technologies like 5G have reduced this but sometimes there are weird setups, e.g., in Australia Lloyd was using an eSIM which sent his data out from the Netherlands, giving him a huge latency.

  • Calculate the round time trip from client to server (measure on server how long it takes for a message to be replied to) and offset their position based on this.
  • Move the user locally on their device, rather than using the servers position.
  • Race track is predetermined on phone, and scrolled into position from a known start time.

Server

We also had to ensure the CPU on the server could handle 1000s of players connected.

  • Use C++ for server, not nodejs like we usually do.
  • C++ reduces cost of serializing messages that takes up lots of CPU.
  • We used uWebsockets library.
  • At 3000 clients sending 10 messages a second it used around 60-70% of CPU.

Client and graphics

  • On phones we needed to render 1000s of sprites.
  • Rapid.js made handling this very simple and ran very fast on all devices.
  • We did not use any other library (e.g. React). Just plain HTML.
  • Lots of effort went in to gracefully handling disconnects and retrying to connect.

Testing

We don't have 1000 people with phones at the ready to test if it works. So we opt for testing using bots we call "monkeys". It's a small python script which opens a websocket to the server amnd constantly sends random input messages. By launching 1000s of these (usually across several computers), we can stress test the server and monitor it's CPU and memory usage. The main bottleneck we've experienced in older versions of the game is CPU usage going high, hence why we went native code in C++.

Putting it on stage

The setup was our laptop on the floor at the front of the stage with a webpage open at a special spectator URL for the game.

On the first night, in the break before we went on for our five minutes, Lloyd noticed the screen was off on the lapotop. Turns out we forgot to plug the laptop in. A quick reboot later we were ready and it worked.

Of course we prayed to the network gods before, so of course it was going to work.

We are not religious, but we prayed to the gods of networking before each show and it worked, can't stop now
We are not religious, but we prayed to the gods of networking before each show and it worked, can't stop now

It continued to work for each of the Galas we performed at, including the Sydney Opera House and an outdoor show at Tumbalong Park, which had the largest audience and we only had a mobile internet connection to work with ourselves.

Our laptop on stage left connected to a 5G modem that was working hard in a city centre outdoor park with about 3000 people in it
Our laptop on stage left connected to a 5G modem that was working hard in a city centre outdoor park with about 3000 people in it

What next

We've been adding more to the game since, and succesffuly run it for UK musics festivals crowds and as entertainment at large coporate events.

Inside Sydney Opera House
Inside Sydney Opera House

We'd like to keep pushing how many people can play together at once at live events, so like the video says, if you know someone get in contact@foxdogstudios.com (or not if you're a rat).

Thank yous

Big thanks to Century Comedy for bringing us over to Australia and giving us the opportunity to do this in front of these audiences.

Huge shoutout to Night Scratch for Rapid.js, really helped it all come together in a short amount of time