Automated Testing for League of Legends

Hi, I’m Jim ‘Anodoin’ Merrill, and I work on test automation efforts for League of Legends, focused specifically on the in-game experience. I currently serve as the tech captain to the Build Verification System Development (BVS-Dev) team. In large part, our team builds tools for automated testing and helps teams write better tests.

Full Story
Posted by Jim Merrill


Content Efficiency: Game Data Server

Hey, everyone! I’m Bill “LtRandolph” Clark, a League of Legends gameplay engineer. Many Rioters in engineering focus on the delivery of awesome content directly to players—a couple of my recent favorite examples include the newest champion, Jhin, and the support item reworks. My team, on the other hand, works to make that process faster and easier.

We have a simple goal: to allow Rioters on gameplay projects to create twice as much content for any given LoL patch. That’s easy to say, but it’s a challenging task.

Full Story
Posted by Bill Clark


Chat Service Architecture: Persistence

Playing League of Legends for years now, I’ve formed a meaningful network of social connections with other gamers around the world. Whether they’re friends from work, former classmates, or players I’ve been matchmade with, they all have an important place on my friends list. The ability to easily play with these friends greatly enhances my experience with the game. It would be disastrous if something ever happened to that social graph—trying to remember and re-friend all of my 200+ friends would be as bad as losing my phone and all of its stored contacts.

Full Story
Posted by Michal Ptaszek

Moving Mountains of Data to AWS

Hi, I’m Sean Maloney, and I’m part of Insights Tech. We’re within the Insights group, which helps teams at Riot make better decisions in serving players. At Riot, we’re data-informed rather than data-driven—we always incorporate data in our decision-making process, but never allow data to dictate decisions. Insights Tech provides all Riot teams with a data platform to capture, store, and serve up all the player data that they need.

Full Story
Posted by Sean Maloney

Taking Control of Your Docker Image

In the previous post I walked through creating a full set of Docker images to deploy Jenkins in containers. We don’t deploy our production Jenkins server in containers just yet, although we fully intend to. The real value my team has gained from this work is the ability to quickly spin up Jenkins test environments. These environments can be used to test plugins in isolation or create reproduction cases for problems we’re encountering.

Full Story
Posted by Maxfield Stewart

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