Honeycomb is sponsoring The New Stack’s coverage of Kubecon+CloudNativeCon North America 2020.
Do you know how long it used to take to build a game? For multiplayer games such as “World of Warcraft,” it can take between four and five years, not including the constant patching that takes place after the game ships according to Dominic Green, head of platform at computer game builder Netspeak Games, who spoke about his experience of setting up a game development platform using Kubernetes at this year’s KubeCon+CloudNativeCon.
By using Kubernetes and containerized support tools, Netspeak has been able to dramatically cut the time to build multiplayers, which now the company can assemble in as little time as six months.
Development speed matters in gaming. Game companies need to get their products in front of players, and they need feedback to figure out if the game is a hit or a bust. That’s especially true in the free-to-play market, where attracting and retaining users is critical to business success and competition is fierce.
Multiplayer games can take at least dozens of engineers to build, and can often involve a lot of custom backend development. The role of the infrastructure team (or, in Green’s case, his role, since he is the platform team at Netspeak Games) is to make it easy for the other members of the game team, especially the artists, to get their work done. In his experience, only about 25% of the game development time is spent on technology-related tasks, of which infrastructure management is just one part. The bulk of the time is spent on content — which is why gaming companies have so many artists.
Nonetheless, the right infrastructure can help speed up the creative part of game development as well, and Green’s goal in building the Netspeak Games platform was to eliminate as much friction as possible for the game team. But he also had to make the best use of his own time, too. To that end, he leaned heavily on open source and never built anything from scratch unless absolutely necessary.
Even as a single engineer, Green was able to build a platform that would serve thousands of concurrent users and handle thousands of requests per second in a way could scale elastically, could run in multiple locations to reduce latency for users around the globe and that would still be easy for the game team to use. Netspeak was able to go from idea to a finished game in production in six months, even with those constraints.
Green chose Kubernetes to manage scalability and because it would allow the game to run in any cloud provider or on bare metal — but that doesn’t mean that getting a gaming platform to work on Kubernetes magically solved all the problems.
First of all, containerizing the Unreal Engine was hard — the version Netspeak was using was rebuilt in 2005 and is not even close to being compatible with cloud native. Containerizing Unreal required cross-compiling from Windows to Linux.
Getting multiple containers to run on a single node without a collision was also challenging. Scaling up was easy, but scaling down without killing pods that had active users connected was also not simple — Similarly, figuring out how to upgrade without interfering with active players was a challenge. Green ended up solving those problems with Agones, an open source project that makes it easier to host, run and scale game servers on Kubernetes.
KubeCon+CloudNativeCon is a sponsor of The New Stack.