Riot Games' engineering team writes about building and running League of Legends, covering testing, networking, graphics, client architecture and messaging.
HN commenters recommend it as an engineering blog with good detail and excellent content. They single out the automated testing post and the messaging service post.
Riot Games - Los Angeles, CA / St. Louis, MO - Onsite - Full-Time - Software Engineer
We make the game League of Legends, which by various metrics is the most played PC game in the world. That means we have some really fun problems that come with operating at scale, worldwide, 24/7.
We're hiring for a bunch of things (http://riotgames.com/careers) in a few locations worldwide, but I wanted to specifically plug my team, Service Availability. We basically manage all the 'behind the scenes' stuff from data centers to backend microservices. It feels like a tech startup within a game company -- many of our engineers have tech-industry backgrounds (Google, Amazon, Netflix, MS etc).
Engineering blog: https://engineering.riotgames.com/
We're solving problems from the infrastructure layer up, making it easy for developers internally to launch and operate services worldwide, regardless of the underlying hardware/cloud. e.g. building a Docker-based cluster, deployment and build tools, microservice frameworks and interoperability standards, monitoring, logging, and other developer-experience type features. We're also working on services that use that stack to deliver awesome new things to players, e.g. the Riot API. We write a lot of Go, which I'm really excited about.
Our culture is also really interesting, especially for a games company. We've got some Fortune awards etc, but the TLDR is: we have work-life balance, we are focused around personal growth, individuals are very…
There's a lot of flak over poor comparison to photos and self-promotion. However, his overall point is still true: just putting a little effort in upfront with assumption you will succeed can prevent these problems. My baseline for evaluating this is "Did they do at least as well as someone who spent 30 seconds on Google?" Short version: doing better wouldn't have required a ton of thinking.
Here's what 30 seconds Googling "highly-scalable chat architecture" gave me:
http://highscalability.com/blog/2014/10/13/how-league-of-legends-scaled-chat-to-70-million-players-it-t.html
https://engineering.riotgames.com/news/chat-service-architecture-servers
http://doc.akka.io/docs/akka/1.3.1/scala/tutorial-chat-server.html
Note: Like to have seen numbers for field-test of the above in the article. Yet, it would've gotten someone thinking.
http://lsirpeople.epfl.ch/nbonvin/dl.php?f=chat-report.pdf
http://doc.utwente.nl/68325/1/imp-pasm.pdf
Previous times doing this for web services led me to highscalability.com with many architectures to imitate with fairly mature software components available. At this point, the common ones should practically have templates for "enter metrics expected here" then click to deploy.
Most ironically, Google is using it for their Cloud Messaging solution (https://developers.google.com/cloud-messaging/ccs and https://firebase.google.com/docs/cloud-messaging/server#choose for the replacement) to allow applications to talk with a backend.. The advantages over HTTP are multiple: better battery life, bidirectional communication, asynchronicity.
Riot Games is also using it for the messaging part of League of Legends (https://engineering.riotgames.com/news/chat-service-architecture-protocol)
XMPP is also used by military organisations such as NATO (https://www.isode.com/solutions/military-xmpp.html)
The sad truth about XMPP is that it just works, but it has a very bad publicity because there's just no marketing around it, and it's never used directly by users. So it suffers from that wrong image that is just completely outdated.
coincidentally i re-read the post about the riot games league of legends automated testing infrastructure yesterday. it's fascinating (and honestly, i'm even a bit envious!).
in case you haven't read it yet: https://engineering.riotgames.com/news/automated-testing-league-legends
guess it's down to the value of competitive multiplayer. e-sports are the focus of games like LOL (or, i guess, CS), instead of throw-away gaming.
the division won't have international competitions in 3 years - and that's ok with ubi soft. because they'll have a couple of new games out by then and players will have bought those instead of still playing the division.
Reminds me a lot of the League Client architecture that Riot wrote about:
https://engineering.riotgames.com/news/under-hood-league-client%E2%80%99s-hextech-ui
Every component of the client is independently built, tested, versioned, and registers itself with the main process on startup.
I think didn't grok the nature of "register" vs "require" and the subtle implications of containment vs requirement until now.
Totally this.
Reminds me of the footer of Riot Games Engineering blog[0]. The content they post is very good and interesting, and I don't doubt it must be a pretty cool company to work at, but that office photo at the bottom literally describes hell for me. I would spend my whole day there waiting for my anxiety to cause a heart attack.
[0] - https://engineering.riotgames.com/