One lunch break a week, the Hearthstone players here at Demiurge have to find something else to do. While services like Steam, Amazon, Netflix and Gmail stay online all the time, scheduled downtime is still normal for some very popular games. Always-connected games that can stay online for patch day are rare!
The developers at ArenaNet created always-online games twice, with Guild Wars and Guild Wars 2. The player’s experience on patch day is very smooth -- first, they get a few warnings that say “New build available. Your game will restart in 15 minutes.” After they restart and download a patch, they can log back in and start playing again.
The difference between the Guild Wars games and other MMOs is in how they restart their servers: instead of doing the obvious thing (turn it off, install the new version, test, turn it back on), they can run multiple versions of the game servers at once. The process looks more like: install the new version, turn it on, test, open it to the world, then (after a grace period of up to a few hours) turn the old one off.
This kind of zero-downtime deployment takes a lot of work for synchronous multiplayer games. But Marvel Puzzle Quest -- and most web services -- have one advantage: the game communicates in short, discrete bursts, constantly connecting and disconnecting, which means that we don’t even need to restart the game to get a connection to the updated server.
This pattern is so common in web services that there are several open-source implementations of it. For Marvel Puzzle Quest, we chose a web server based on its ability to handle concurrency, its simplicity, and most of all its name: Gunicorn. Deploying code without downtime lets us iterate on our server and respond to issues without interrupting the game for you.
Have questions about Marvel Puzzle Quest’s online features? Want to know more about our server technology? Let us know what articles you’d like to see next.