Fixing the Internet for Real Time Applications: Part I

League of Legends is not a game of seconds, but of milliseconds. In day-to-day life, two seconds fly by unnoticed—you took two seconds reading that! In-game, however, a two-second stun can feel like an absolute eternity. In any single match of LoL, thousands of decisions made in milliseconds dictate which team scores bragging rights and which settles for “honorable opponent” points.

Full Story
Posted by Peyton Maynard-Koran

Random Acts of Optimization

Game developers working on a continuously evolving product like League of Legends are constantly battling against the forces of entropy as they add more and more content into unfortunately finite machines. New content carries implicit cost—not just implementation cost but also memory and performance cost created by more textures, simulation, and processing. If we ignore (or miscalculate) that cost then performance degrades and League becomes less enjoyable. Hitches suck. Lag is infuriating. Frame rate drop is frustrating.

Full Story
Posted by Tony Albrecht


Tech Design at Riot

My name’s Cam Dunn, and I’m the Tech Director for League. I’ve always found it interesting how much we don’t know about human history simply because no one made a record at the time. Who first invented the hammer? Hammers with handles have been around for tens of thousands of years, but nobody knows who made the first one for sure. Sometimes, history feels like we’re collectively waking up after a drunken night out and asking, “My god, what did we do last night?”

Full Story
Posted by Cameron Dunn

Chat Service Architecture: Servers

League of Legends players collectively send millions of messages every day. They're asking friends to duo-queue, suggesting a team comp on the champ select screen, and thanking opponents for a good game. On July 21st of this year (I picked a day at random), players forged 1.7 million new friendships in the game—that’s a lot of love! And each time players send a message they trigger a number of operations on the back-end technology that powers Riot chat.

Full Story
Posted by Michal Ptaszek


How We re:Invented Our AWS Model

Hey, everyone! Marty and Jonathan here from Riot's Infrastructure Security and Service Availability engineering teams. We support all of Riot’s servers, and obsess over their uptime, security, and maintainability. Last November, we spoke at Amazon's re:Invent conference about our work leveraging AWS to support the many teams that contribute to the League ecosystem. AWS hosts many League sites, including leagueoflegends.com and our merch store, and must fulfill requests from millions of players daily.

Full Story
Posted by Marty Chong & Jonathan McCaffrey

Putting Jenkins in a Docker Container

In this first tutorial in the Docker series, you’ll learn:

  • What we’re trying to accomplish at Riot

  • Basic setup for Docker

  • Basic Docker Pull Commands

  • How to run Docker Containers as Daemons

  • Basic Jenkins configuration options

Full Story
Posted by Maxfield F Stewart


Compressing Skeletal Animation Data

League of Legends has more than 125 champions, each with their own set of unique animations. (One of my faves? Sion’s dance, shown below—just one of his 38 animations.) These movements help to bring the champions to life: from determined movement to powerful spell casting to tragic deaths. (I see that last one too often.) As we’ve continued to introduce and rework champions, the total amount of animation data has become a larger burden on resources like run-time memory, patch sizes, and storage space.

Full Story
Posted by Jaewon Jung