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: Now that improving client start up times and improving our architecture is complete, we're finally jumping into Champ Select. We've also taken on End Of Game as a new priority.
Way back when we started this blog series in March, we mentioned two major goals: Improving client bootstrap time and Champ Select responsiveness, in that order. In September, we finally lowered bootstrap time (client start up time) down to 15.5 seconds for 90% of our players and announced work on Champ Select would finally begin.
Here are our first updates.
We always expected Champ Select to be in a similar need of repair as the rest of the client—ember apps to consolidate, code to optimize, bugs to fix, what have you. Over the course of our deep dive, we uncovered an unexpected type of issue: Champ Select's (and the client's) memory footprint increases each time you run through it in the same play session.
For the 90th percentile, this looks like:
Ultimately, as you get more and more games in during a single session, the client becomes more sluggish until a restart is all but required.
The existence of memory leaks in the client is definitely not news and we figured some of this leakage was coming from Champ Select. The size and extent of the leaks we’re seeing, however, requires a shift in our approach. In parallel with our originally-planned efforts, we're now working to implement more specialized developer tools which let us identify and tackle memory leaks across the whole client more efficiently, cutting down the time it takes to deliver improvements.
We did say in parallel, and while progress has been light, we plan on shipping our first small improvements to Champ Select performance in patch 10.23. We’ve improved summoner spell and ward skin selection so they don't create additional ember apps when opened. This leads to a small but measurable reduction in memory usage (~1.6 MB) when players set their spells and ward skins during Champ Select. These were two of the earliest memory leaks we discovered, and fixing them was a great way to put best practices in place to tackle bigger chunks of memory leaks in the near future! We expect more noticeable improvements to ship before the end of year.
Aside from fixing what's broken, another part of fixing Champ Select is identifying which parts of the experience players care about, and which ones we can pull back on, or even remove, because players don't find them as important. The rationale is that the Champ Select experience is critical to the core game loop and so the less complexity we have in that path, the fewer opportunities there will be for things to go wrong. We've leveraged player survey data to tell us what's important when it comes to the Champ Select User Experience (UX) and User Interface (UI), and are adding in-client metrics to reinforce those surveys with player activity data.
Here are some of our early results, and what we've done or plan to do about them:
One of the biggest pain points we’ve heard from players is that getting into Champ Select can run into a whole host of problems. Reliability in Champ Select is a must to help players feel they are ready to focus on the game ahead of them. It's critical that we resolve any issues that may interfere with banning champions or locking in your pick. We also don’t want you to have to worry whether the skin, summoner spells or runes you’ve used over hundreds of games are going to change without your knowledge.
As we begin work in this space, the primary goals for our approach are to get players into Champ Select with adequate time to make critical decisions, ensure champion banning and picking are reliable, and have all players get into the game successfully.
While not one of our original focus areas when we started the client cleanup campaign, End of Game (everything that happens between pressing "continue" on the Victory/Defeat screen and you being able to interact with the post-game lobby) has since emerged as a frustration point that's nearly on par with bootstrap times and Champ Select responsiveness & reliability. We're focusing on frustrations around two main areas:
Amidst the work on Champ Select and End of Game, we've also recently tackled a spike in reports of settings bugs over the past several patches. This includes things like Champ Select not remembering your summoner spells, as well as old popups showing up again (and again and again and again).Tracking down these issues was a journey to say the least. A few teams were independently working to update their backend systems around the same time, creating a bunch of scattered edge cases that combined into a perfect storm of many players experiencing at least one form of settings issue. We've introduced three independent fixes to help alleviate the majority of these issues since the last blog, with the most recent being in patch 10.21.
As we continue to make significant improvements to both Champ Select and End Of Game, we will continue to partner with our internal teams to track and address high player pain bugs if they come up.
That’s our update this time around! We have a lot of work to do through the end of the year, and we would like to thank you for your patience while we try our hardest to continue making the client better for our players every patch!