Quick Gameplay Thoughts: July 10
Disruptive Behavior Reduction, Any-Rank Flex Queue.
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 of the League of Legends client.
TL;DR: We're making consistent progress on our goal of cleaning up the code that powers the client. We're also smashing troublesome bugs along the way, which we've shared below. Despite progress, much work remains to be done. The Cleanup Campaign continues.
As we said in our first client blog, we believe that the best way to solve some of the client's performance issues is by consolidating and reducing the number of plugins and ember apps in the client.
Plugins—for those who don't know—are tools that allow us to break the client's code up into useful chunks. Ember apps help drive the client's user interface.
We've continued to make progress toward this goal. The chart below shows the total count of plugins and ember apps over time.
If you're reading the chart above, you're probably thinking okay, but how exactly does this impact the client's performance? The answer to that is complicated, but at high level: fewer plugins and Ember apps means more efficient client code. Leaner code equals better performance and also results in a client that's easier for devs to maintain.
One of the ways we've been measuring the impact of our work is by tracking the amount of time it takes for the client to boot up. Below you can see a chart showing how that metric has been tracking over time:
As you can see, bootstrap times have mostly been holding steady over the past couple of months. We actually consider this to be a moderate success, given the risks inherent to the work we're doing. Shuffling around big chunks of code and rewiring plugins could cause some unforeseen issues if we're not careful—but so far that doesn't seem to be happening.
We're hopeful that we'll start to see more improvement to bootstrap times over the next few patches, especially now that we've developed a new solution that allows us to more intelligently specify which plugins load in whenever you boot up your client. (See the most recent client blog for a deeper discussion about this topic, in the section labeled "The Trouble With Affinity.")
Our plan for now is to continue the consolidation work for at least the next couple of months, as we believe there are meaningful long-term benefits of reducing the number of plugins and ember apps—by cleaning up the overall code environment, we're making it easier to solve bugs, memory leaks, and crashes.
Speaking of bugs and crashes, let’s talk about some recently-shipped fixes.
The client team has been opportunistically tackling tons of bugs over the previous few months. Starting with patch 10.13, you'll see client bugfixes in their own section of the League patch notes.
In the meantime, here's a list of some of the client bugs the team has addressed on a per-patch basis since the beginning of the year:
That's the list for now! You can also always submit feedback by clicking the "bug" button in the bottom-right corner of your client.
As we work on the client, we keep asking ourselves a fundamental question: Is the League client worthy of our players?
The answer, of course, is that it isn't. Not yet, at least.
There are many more bugs to solve, crashes to prevent, and deep architecture problems to root out. The work we started earlier this year will continue until we can answer that question—is the client worthy of you, our players?—with a resounding "yes."
It will take time to get to that point, and we'll keep you updated along the way. For the next few patches, we intend to continue consolidating plugins and ember apps while smashing bugs as we see them. By the time we share our next update, we hope to be ready to enter a new phase of our campaign, whereupon we'll specifically focus on improving Champ Select responsiveness.
As always, thanks for playing, and we'll be back with another client blog in a couple of months.