/dev: Tackling AFKs
Discussing new changes to reduce the frequency of AFKs.
Earlier this year, we made a commitment to share bi-monthly updates on the behind-the-scenes work we're doing to improve the performance and reliability of the League of Legends client.
TL;DR: We've successfully improved client bootstrap time to the point that we're now ready to focus more heavily on addressing high-priority areas like champ select. We're also sharing some new data we gathered by surveying players about the client and its issues.
At the beginning of the year, we said that we'd like to get client bootstrap time (the time it takes for the client to start up) down to 15 seconds, even for players with very slow machines.
We've since spent a lot of time digging deep into the client's architecture, rooting out core problems with the plugins and apps that make the client work. And in recent weeks, we've made some breakthroughs and gotten incredibly close to our goal.
Bootstrap now only takes about 18.5 seconds for players in the 90th percentile. That means that for about 90% of you, bootstrap time is even faster (although recent performance gains will be felt most noticeably for players with slower machines).
We spoke in an earlier blog about some setbacks to bootstrap time that were caused in part by increased player traffic due to the COVID-19 pandemic. You can see that spike in the chart above starting around March of this year.
We made steady headway in improving bootstrap times in the months following the spike, but our biggest improvement came more recently in patch 10.16. This can be explained by a couple of key steps the team took.
First, in patch 10.14 we implemented tech that allowed us to learn just how much each of the client's 68 plugins contribute to bootstrap time. It turns out that some plugins were causing much bigger problems than others. We found that a mere eight plugins accounted for 75% of plugin load time, while the other 60 plugins accounted for the remaining 25% load time.
Armed with this knowledge, it became a lot simpler for us to figure out which plugins we should focus on consolidating. We also decided to try additional approaches alongside our consolidation work: In patch 10.16, we began to more fully implement a solution that allows us to defer loading certain plugins and ember apps altogether until players actually need them.
Now that we've gotten so close to our original goal for bootstrap times, we feel prepared to finally move our focus to the second phase of our campaign: improving responsiveness and reliability in champ select and other key parts of the client.
Before we talk about the specifics of that plan, we want to share a little bit of data about the client that we've gathered by surveying players around the world.
You're probably thinking, "Rito, you absolute noobs, why do you need to survey us about the client? You already know it's bad!"
And uh… yes, that's fair. But we want a more nuanced view of the issues. How prevalent are the problems? And which ones are the most severe? By answering these questions, we can better prioritize our upcoming work. Plus, by gathering measurable sentiment around the client, we can see how your opinion of the client is changing over time.
Our first set of surveys ran in just a few regions, but we intend to run more surveys in the future—adjusting, adding, and removing questions as needed—so we can track our progress over time.
So with that context, we've got some dank charts for you.
To start off, one of the things we want to track is how perception of the client is trending on a month-by-month basis.
This result isn't too surprising—but it's valuable as a data point, because if we keep running these surveys over time, we'll start to get a much more complete view of our progress. And we'll be sharing that data with you in the months to come.
With the following survey question, we started to dig into specific problems:
While some issues are more common than others, nearly 50% of surveyed players say they're experiencing at least one of these problems.
Next, we asked players who said they experienced a technical issue to rate how frustrating each of those respective issues were on a 5-point scale from "not at all frustrating" to "extremely frustrating." Below you can see the percentage of respondents who identified issues as either very or extremely frustrating.
Here's another view which lets you see both the reported frequency of each problem versus how frustrating respondents said they are:
It's clear from charts like this one that two particular problems are obvious outliers.
First, issues that prevent you from picking or banning in champ select are far-and-away the most frustrating. And second, long load times for the end-of-game screen are extremely common. Armed with this info, we have a stronger sense of where to focus during the next phase of our work.
Over the next few months, we want to focus on solving the most common and most frustrating problems players are facing with the client. So the next stage of our Client Cleanup Campaign will focus on improving champ select and the transition from end of game back into honor and the client.
First, let's talk about champ select.
Way back in February, we said our ultimate goal was to improve the responsiveness of UI/UX buttons in champ select. Specifically, we said we wanted to get the response time for things like the "lock in" button down to under 100ms, even for players in the 90th percentile.
Now, though, we've realized if we want players to be happy, we're going to have to refactor key components of champion select.
The work we'll be doing on champ select breaks down into three main commitments. We will:
At the same time that we focus on champ select, we'll dedicate resources to streamlining the transition from the honor screen to the end-of-game lobby. Too many players report a laggy experience with this part of the game flow, so we're already pursuing an engineering plan to address it.
This process will take time, certainly more than we'd like. But our commitment throughout our campaign is to talk to you about our work the same way we're talking to each other about it internally—with honesty and transparency.
We'll report back on our progress with another blog like this one in a couple of months. In the meantime, as always, thanks for playing.