Original Post — Direct link

https://twitter.com/RiotPhroxzon/status/1771644991120789627

A post I've been wanting to write for a long time is about developing software at scale at Riot (at least on League Gameplay). There's a lot of implications due to our size that adds a lot of unique challenges.

There are often suggestions like: "Why don't you do 'X idea that seems easy', but in reality is a lot more difficult than it seems. And sometimes these are great ideas that we should do!

Sometimes these aren't so great ideas though... eg. "Why don't you do this thing!" which solves that problem, but has some massive downside, or would in reality take 2 years to build at scale.

Tackling these challenges is fun, but simultaneously difficult. I wanted to dig into some of them, not as an excuse for why we can't do/are slow to do some things, but mainly because it's fun to talk about/to help aspiring game developers/transparency for how working at Riot (at least on League Gameplay) functions.

1. Size

  • Let's just say as a lowball estimate, there are a few million lines of code in our codebase, thousands of product guidelines, design principles, art style guides, quality standards, etc.

  • Let's say any individual could realistically be an expert (you know the most about this thing) in ~5% of your area (eg. Design/Engineering, etc.) and be a contributor (you know enough to be able to positively contribute) in ~30% of it.

  • Simultaneously, the code/knowledge base is constantly being worked on/improved, so your understanding of what that system was/is doing is changing over time

  • There are definitely things across all disciplines that aren't up to modern standards, but even the best written game foundation is so large that it's unrealistic to know all of it

  • Because League is a big game, there are also a lot of protections that need to be built in/designed around to protect us from being a target, to relentlessly optimize software performance that would otherwise be totally fine for something at a medium scale

  • There are problems that only get surfaced when things reach a certain size, which is a great problem to have, but means that the experts need to be even more specialized at resolving these problems

  • One inefficient table read or service query could rack up to significant performance/monetary hits when this is multiplied by millions of people triggering that operation every day.

2. Specialization

  • People have areas of expertise, whether you're a Systems, Mechanics (eg. Champions), UX, Progression Designer, Rendering, Profiling, Services, Front-End Engineer, etc.

  • In the same way you wouldn't ask Messi to play goalkeeper (even though he probably could), some things can be very difficult to get movement on without the right person with the right expertise

  • What on paper could look like 7 Designers, could realistically only be the output of 3 Designers if they're not working on the right project for their skill specialization

  • Implementing something the wrong way, or making the wrong design choices could be potentially devastating; we have processes in place to make sure experts see things before they go in, but even then, mistakes can happen

  • Definitionally, there are always far less experts than there are contributors. The more an expert is reviewing, the less time they're spending on actually implementing and doing stuff that only they can do

3. Teams and Organization Management

  • At Riot, we operate within team boundaries

  • Teams own certain things within their area of expertise and have Rioters with various specializations to work on said stuff, follow up on broken features/bugs, make new things.

  • Even if you have the right specializations, there's also the institutional knowledge that has to be reckoned with. eg. If we hired Faker to work on our Live pod, he would not be performant right away

  • Playing and designing the game are 2 entirely different beasts and there's 15 years of past design decisions that you have to reckon with to be baseline performant

  • When priorities change, it can sometimes mean that the specializations on those teams no longer make sense, meaning either the priorities can't change effectively, or search needs to be undergone to other teams to find individuals to service those gaps in specialization

  • If Rioters move around to help a team on a gap, it can also mean that the thing they were originally working on falls behind

  • Some tangible examples are when we moved Designers around to help get Arena's first release over the line, carrying delays in work that Summoner's Rift Team or Champions team were able to do

  • We evaluate the tradeoffs of what these moves would mean, alternate ways of solving the problems and decided this was worth it

  • When it comes to finding which team should work on a certain thing, that is also a major challenge in itself. You need to know the right teams, have good relationships with other leaders and people to ask and know where to look to find which teams own different things

  • As an example, if we noticed Fog of War was suddenly non-performant and tanking our server performance, it could be a number of different teams that could theoretically solve that problem. So it comes down to negotiations between teams for which Rioters have the best specialization set and how that would tradeoff against the opportunities that they're currently working on, which can get quite complicated and takes time, but has to be done, because it means we can get things out to players faster and at a higher overall quality

An Example

So to use an example of "make players play 5 normal games before playing ranked" that I've been hearing recently. A great idea and one we've been discussing internally.

To make this happen though, you'd want:

  • Ranked team to propose the design for the change + the edge cases, the rollout plan. The ranked team would also consider whether this solution is the best thing to do vs other potential solutions that have different value, dependencies and costs depending on our staffing and skill specializations available (eg. improve our seeding, so it wouldn't matter what queue you played -> does this get our seeding algorithms to the quality level we would want) and has no Client/UX work related dependencies

  • League Data team to calculate the correct number of games, how this interacts with seeding models, etc.

  • One of the League services teams that handle ranked services to figure out how to calculate, store and query the information in the most efficient way, also future proofing

  • Client team to understand how to query and pass the data at different areas of the client

  • UX team to understand how the flows work (eg. do you prevent inviting from lobby if ineligible, where is the warning that says you can't queue together/what does it look like [is it on the queue text itself, or in the lobby], do you show the warning when they're in lobby and grey out the queue button, etc.)

  • Client team to implement and handle all the edge cases of the UX design

  • Build and Release teams (a lot of this gets automated)

If all goes well, despite the large number of teams involved, these dependencies and negotiations of work can happen pretty smoothly and we might be able to get it out within a few months, but for example if any particular team are all hands on deck for a higher priority project (eg. if the UX team was fully wrapped up with working on something like Season Start), then it can mean that this particular solution is a non-starter.

What on paper seems like a pretty simple idea, when it's broken down into its constituent parts can become pretty daunting to approach

Hopefully this was insightful, this wasn't my usual type of content, so let me know if you'd like to hear more/less of how game development tends to work!


TLDR: https://twitter.com/RiotPhroxzon/status/1771645726361080130

Making a game at scale is not as easy as you think, but we try our best to put the best things out for players :)

External link →
8 months ago - /u/phroxz0n - Direct link

Originally posted by SailorMint

ITT Redditors learn of corporate bureaucracy.

I guess no matter how you slice it, having hundreds of people work together seamlessly is pretty difficult. It's hard to get 2 people to agree on something, let alone hundreds.

Other operating models are having one person call all the shots (which can make things extremely fast, but lose that diversity of thought).

On Gameplay, we like to give the teams as much autonomy as possible to do the things they want to do/believe are good for the game, while trying to strike a balance of removing roadblocks, providing vision and making sure we're ambitious enough for the future, overseeing quality to make sure changes to the game are going to move it forward.

Fun challenge that makes everyday exciting.

8 months ago - /u/phroxz0n - Direct link

Originally posted by audioman3000

The engine from 2008 is dragging LoL down

They really need to make a new one, that's way too much tech debt

Things could always be improved for sure, but the Engineers have done some amazing improvements over the past few years. As far as Gameplay goes, there's not too much that we (Designers) are not able to do as far as prototyping and implementing goes.

eg. Consider the Season Start changes we just did. Just a few years ago, would not be remotely possible. In this Season we changed basically every map geo, many many items, all the objective flows, spawning rules, dynamic map terrain changing through the game, etc.

8 months ago - /u/BarackProbama - Direct link

Originally posted by Antipixel_

i have always wondered why riot didnt seem like they'd invested a full team of resources into rewriting an engine for league from scratch based on more modern programming frameworks + knowledge and understanding of the current mechanics /depth of league. it feels odd that league doesn't have an "in-gameworld" client(heck even valorant has one. maybe the nostalgia factor?), lol is one of those games that could do some really neat stuff with it. frankly it's an absolutely massive undertaking, but i do genuinely believe riot is one of the few companies with access to enough capital and (potential)talent that it would be a feasable option for them to consider.

but if the engineers have managed to patch relevant parts of the engine up to date in such a way that the team is able to actually continue innovating, honestly that is kind of shockingly impressive. especially considering the potential amount of teams affected. this feels like the exact type of thing that can kill a product - but league has managed to keep it together for ~15years just about. lol really has grown into a 1 of a kind product, and for all of riots legitimate faults, it is quite a marvel on what has been achieved... and well maybe a fresh new engine really isn't worth those resources.

a lot of things that were changed/updated for the current season felt like natural progression for league (and it's really cool to witness it!) so it did have a sense of being an addition based on when, rather than if - EXCEPT the fistbump. idk what it is about the fistbump but to me it feels like the biggest sign of potential life left in the engine, it feels like it is something that absolutely wouldve blown matches up had it been implemented five years ago. but it's here, it works, and it's a really cute addition to the game (i love seeing all 5 fists bump together when everyone is nearby to eachother). it feels like a good indication that the engine still recieves a lot of genuine attention and care.

i guess i am just holding my breath for arena coming back as a proper permanent and maintained gamemode for league - guessing(?) as something between 'vanilla' lol and tft. the biggest thing that seemed to gimp other gamemodes is that it always competed or canibalized players that might be wanting to play 5v5SR or vice versa. arena creates its own niche which has the potential to attract players to league who wouldn't have been interested in league normally (read: 5v5SR). arena also presents an opportunity to be a proper "rest" game that players can play when they are encountering burnout from the vanilla experience, except it's still league. a thriving arena strikes me as an important indicator of the games continued longevity. rly excited to see the new things you guys whip up!

We are always updating the engine that League runs on.

But let’s for the sake of argument say we thought that it would be easier and better to switch to a new off the shelf engine:

First, you need to update the networking. The Hextech engine’s networking I am told is like extremely overpowered relative to the market. Valorant and other games expend significant effort to get theirs into a similar state.

Now you need to port all of the content from our current stack to a new stack, including all champions, game systems, cosmetics, etc.

You can use some automation to get the bulk of the data across, but you would need to have humans hand-tune the rest. (Imagine making sure that Riven’s combos felt “just so” to her mains and ensuring that translates) In order to hit our quality bar this could actually take several years with many devs involved. Those are people are years that are not spent making League better.

You probably also need some content pipeline/integration work as well. League has….a lot of content added to it all the time. Not every engine is up for that.

And this is all to get to parity before you use any of the features/tools/benefits that you presumably switched for in the first place.

(And then add a bunch of stuff that is also hard that I don’t know enough about to speak on)

Not saying it will never happen, but this is why it hasn’t happened so far.

So instead, we have a team incrementally improve the engine we have. There’s always more to do and tons of exciting developments in the works all the time. Can’t wait to talk about [REDACTED] when it drops around [CENSORED].






Recent League of Legends Posts