Down the Rabbit Hole of Performance Monitoring
Hi, I’m Tony, and I’m an engineer on League. This article is a followup to my performance series, where I talk about optimisation and profiling. This will be a high level overview of how we monitor game performance in League of Legends, how we detect when a performance degradation has slipped through QA and escaped into the wild, and how we track global trends in frame times over many patches and millions of players.
I hope you enjoy it! What’s In A Frame Rate? A game’s frame rate is often an important indicator of game quality.
Not all games need to have a high frame rate, but some games depend on it – the better the frame rate, the better the player’s experience with that game. League is a game that’s better played at a high frame rate, so ensuring that it plays as fast as possible is a crucial part of being a League developer. How do we know how fast League is playing on a player’s machine?
How fast is fast enough? The first thing you need to realise is that to optimise something, you must first be able to measure it. If you can’t measure it, you can’t optimise it.
In our case, we’re trying to optimise frame times, so we’ll start by measuring the average frame time for an entire game, as it’s a reasonable initial indicator of performance. We do need to keep in mind that this is not necessarily the most consistent metric for measuring the performance health of a game – imagine a situation where most of a match has a high frame rate, but team fights are extremely slow. While the average frame rate would look excellent, the player experience would be terrible.
So after our first findings, we’ll need to validate our assumptions.