Gaming started out as a lo-fi and individual experience, a quiet evening alone playing on a small computer with less power than a modern smart fridge. Now, video games are marvels of technology, pushing the boundaries of hardware capability, graphical fidelity and connecting us in ways we never imagined.
Building games was about squeezing every last drop of performance from the very limited resources available, however, the devices we now use are technical leviathans in comparison. Our games consoles, personal computers and now even mobile devices are the supercomputers of the past. But as we know, with great power comes great responsibility, and this new power comes with its own set of unique challenges.
The challenge I want to talk about here is that of scale.
Modern games have accepted the internet with open arms. Almost every game has some kind of internet functionality, especially in the mobile sphere. Social features, game updates and multiplayer are all commonplace in modern gaming and this demand is only increasing.
Games developers were initially concerned only with their 1 player, then eventually, 3 or 4 sat together. Since gaming entered the realm of the internet those numbers have grown exponentially, with some serving millions of players concurrently. For example, Blizzard’s World of Warcraft hosted 9,102,544 players1 over the last 30 days at the time of writing this article.
So, how do you design a system to handle such an unthinkable number of users? How do we get from 2 players on the sofa to 9 million concurrent users?
I believe the answer lies in shifting the way we think about games architecture and opening ourselves to the infinite. Seems impossible? Well, maybe it is, but as British science fiction writer Arthur C. Clarke famously said in the second of his Three Laws:
“The only way of discovering the limits of the possible is to venture a little way past them into the impossible.” 2Arthur C. Clarke, Three Laws
In order to build systems of infinite scale we need to learn to THINK in terms of infinity.
This sounds very grand and mysterious but really it’s something we see almost every day, one version of this that we are probably all familiar with is franchising. Let us detour briefly to America circa 1940. Bare with me, I promise there is method to this madness.
Dick and Mac McDonald opened McDonald’s Bar-B-Q restaurant in San Bernardino, California.3 It was a single place, one menu, one set of ingredients, but things were going well and they needed to expand fast. Opening duplicate restaurants all across America was great news for Dick and Mac, but this also presented them with a unique set of challenges. One such challenge being: how do you keep the menu the same and up to date for all restaurants spread across the country?
They could make sure to regularly check-in with each other, painstakingly go through the entire menu and update it, trying to make sure they haven’t made any mistakes. This method is painful and time consuming and ultimately flawed, the more restaurants exist the longer this takes… This is just not sustainable. What is needed is a touch of the infinite, to imagine how this would work with infinite restaurants!
What if the menu was defined in a central place and all restaurants retrieved their menu from there? This way, any number of restaurants could exist and the work to maintain and synchronise the menu would never increase. This solution is elegant but grandiose and requires a fundamental shift in the way we imagine our systems.
Now back in the world of video games. Hopefully you can now start to feel how this concept of infinity can help us. Instead of thinking about creating an isolated system, we widen our view and see it as a beast of infinite size. We apply similar concepts to the centralised McDonald’s menu, we make sure resources are shared, we make sure that difficult tasks are (as often as possible) only done once and we start to pull the impossible just that little bit closer.
Now don’t get me wrong, this is just the tip of the iceberg, there is far more intricacy to building highly distributed and scalable systems but it all begins with shifting our vision from the finite to the infinite and daring to venture into the impossible.
- World of Warcraft Concurrent Users: https://activeplayer.io/world-of-warcraft/
- Clarke’s Three Laws: https://en.wikipedia.org/wiki/Clarke%27s_three_laws