Pricing
PRICING GUIDANCE​
PURCHASE OPTIONS​
🎉 EdgeOne Free Plan Launches! The World's First Free CDN with China Access – Join the Event to Unlock Multiple Plans!
Office on Fire
Office on Fire is a strategy escape-room game, playable solo or in multiplayer, where you survive a burning office tower with the clever use of items.
Created by
Twisted Balloon Studios (Singapore, Sweden)
Award
Preliminary 2nd Place
  • Inspiration

    We were inspired by an episode of "The Office" where the office catches fire, and thought it would be fun to imagine how a normal workplace could turn into a high-stakes survival situation. We also took ideas from strategy games like Plants vs Zombies and Among Us to bring in a sense of endless-ness, unpredictability, teamwork, and betrayal. In our game, players have to make split-second decisions (when to use an item, whether to help a teammate or move on by oneself). On the technical side, the game has to render the outcome of the decisions fast (what we call "split-second rendering") so that every player in multiplayer mode sees a consistent game state.

  • Gameplay

    In each level, the player's goal is to find the emergency exit. Fire obstacles will block the way, but the player can put it out using a fire extinguisher item. Players navigate using arrow keys, pick up items with 'c' and use items with 'v'. There are various other items (e.g. the bubble item allows one to pass through fire without harm). However, a burning corpse constantly chases the player and deals damage on contact. When the player's HP reaches 0, it's game over. The objective is to descend as many floors as possible while surviving the fire and threats.

  • How It Was Built

    The game was built using C++ compiled to WebAssembly via emscripten. For multiplayer functionality, Supabase Realtime was used to handle channels, track player presence and synchronise states via broadcasting messages (e.g. corpse_moved, fire_extinguished) between clients. To keep the logic primarily on the client side, each client owns one corpse (i.e. its logic is computed locally) and broadcasts its state to other players.

  • Built with

    We used EdgeOne pages with Supabase Realtime integration. I only used a single EdgeOne Function (to securely fetch Supabase secrets), since the majority of the game logic was implemented in C++. (Technically, we could have implemented those with edge functions instead.) To deploy the WebAssembly to EdgeOne without additional compiler setup on the server, we just pushed the wasm, data and js files.

Learning Document
Learn the operational practices of Tencent EdgeOne developer platform products
Join the Discord
Join Our Discord Server: Connect with us for detailed competition information, Q&A, and technical support.