Penrif

Penrif



24 Feb

Comment

Originally posted by phoenixrawr

Rigorous documentation of internal code is fairly uncommon and developers are moving further away from that practice over time as the pace of development increases and documentation gets outdated faster than before. It’a a lot of time and effort to invest in something you might never look at until you throw it away because the software changed and it’s not relevant anymore.

Important to pair with that though the practice of writing code to a human reader. If the code is going to be the documentation, I would argue it is more important that it be understandable to a human than be perfectly set up to be optimal to a computer.


23 Feb

Comment

Originally posted by deathspate

So Riot...about that last sentence? I would say I'm interested to be polite, but f**k no lmao. This shit sounds like some real tech-gore.

Fair enough!

Comment

Originally posted by Puuksu

This article was scary to read.

It was scary to write too.


05 Feb

Comment

Originally posted by PetMeFeedMeCuddleMe

What information wasn't available at the time? The foresight to see that rolling it all into one client was a better option?

How long it would take to do so. Webtech offered the ability to start work immediately, while going the game tech option would have required an unknowable amount of up-front development work to create the framework for content implementation before anything else could be done.

Having now put in that work in service of TFT mobile, we know how much it was. But that's not something that could have been known before actually doing it. Software development estimation is notoriously fraught.

Comment

Originally posted by Masalar

That ignores the part that they felt they had a deadline. Making those changes would have taken longer, possibly substantially longer, during which players would be stuck with an increasingly bad client. (and the old client was bad, let's not kid ourselves here).

There were problems with each choice. It's easy to envision a world in which we'd only get the positives of the other option and not all the negatives that would have gone with it.

Bingo. Hindsight being what it is, it's possible to think through what the other option would have taken and think it was obviously the right choice, but that's using information that was not available at the time, which is deeply unfair to the individuals that made the call in the moment.

Comment

Originally posted by LacklessLuck

Does that mean we will never have a perfect client because implementing out-of-game and in-game in the same piece of software, which apparently is the most efficient way of building the client, would take too much effort and time? Can't a company with the resources Riot has make it happen?

"Never" is not applicable here. It is a large effort, but League has invested in large efforts like that before - we just don't do so lightly.

Comment

Originally posted by [deleted]

[deleted]

Please take a deep breath and re-read my post. At no point am I blaming the backend, and the fundamental change of going to native is what most of the post is talking through. The part you quoted is covering the idea of re-implementation without any fundamental changes - ie, take another swing using the same tech stack, which I think you'd agree would be folly.

Comment

Originally posted by Hawxe

That's fair and kind of what I expected.

Knowing all that, if you could restart the project/make the decision now, would you go the same route or go native?

I've never had experience on a piece of software that large so I'm curious.

Native by default, with CEF to cover the pieces that truly are best covered by JS stack. Best of both worlds.

Don't suppose you have a magic wand I could borrow?

Comment

Originally posted by Hawxe

You keep saying web technology. What's the stack on the client? It's not using electron is it? Please tell me it's not using electron.

edit. You know what an actual question:

Why are so many companies using javascript based stacks for things like this as opposed to something more native? Is it meant as a holdover until a future League 2 with a combined client?

It's not using Electrion ;)

It's built on top of the Chrome Embedded Framework, with a custom-built foundation underneath.

As to your larger question of why the JS stack is sometimes picked over native solutions - I can't possibly speak for the entire tech industry on that, but I'm happy to give my personal opinion based on what I've seen in general industry trends.

I think there was a lot of hype super early in the development of the interactive web that had people believing the future of the native application was limited. The Google suite in general gave that a lot of ammunition - if you can compete with MS Office using web tech, what can't you do? That's a sane, reasonable conclusion to make if you aren't aware of the massive amount of work that goes into making those products as smooth as they are. As with much tech industry hype, there is a lot of value inside of it. Web-based applications are hugely valuable and solve many problems that ...

Read more
Comment

Originally posted by S890127

Hi, seriously asking: Which is the easier way to fix the client?

Rebuild a brand new client with new codes(Have you guys actually considered this option?)

or

Fix bugs from the current client codes

Comment

Originally posted by Spideraxe30

Hey guys I wanted to ask if there are any major differences or learnings applied to the Valorant and/or Legends of Runeterra clients because they seem to run smoothly for the most part compared to the League client

The major difference is being implemented with game engine technology vs web technology, for the most part. This allows for all the optimizations and standards that make the game run smooth to apply to the out-of-game experience as well.

I went into a fair amount of detail as to where League's on that in a different reply.

Comment

Originally posted by bibbibob2

Hi love the work!

Many of us wonder why is not a better solution to simply make a new client rather than spend all this time looking through the current one fixing numerous bugs and memory leaks.

A common example was the wintermint client etc. I am sure it is a lot of work to make a new client, but from the looks of it having a dedicated team working in and out for over a year to fix this current client seems to be quite the investment too?

Any insight on pros and cons of making it from scratch?

Thanks for the question! This is a deep one and is going to take a bit of history, so let's go for a little walk.

League, since the very beginning, has had two pieces of client software - the out-of-game client and the in-game client. For brevity, let's just refer to "the client" as the out-of-game one - the in-game one isn't what this AMA's about. Originally this was implemented on top of Adobe AIR, and went through a major rewrite a few years back, implemented on top of web technologies.

This split is not something that many games do. I struggle to think of an example really - the vast majority of games, including the other ones Riot makes, implement their out-of-game experience in the same piece of software that the in-game experience is delivered on. This has a lot of benefits, but the biggest of them is that the same experts that are tasked with making the in-game experience snappy and responsive can apply the same techniques to the out-of-game experience....

Read more

21 Jan

Comment

Originally posted by cadaada

announcing things in a 2.5k followers twitter, come on riot

Sorry I haven't really cultivated my audience much =/


12 Mar

Comment

Originally posted by SeizeTheKills

Always love reading your technical stuff, both for Riot and in the past for EVE Online!

o7 m8

Comment

Originally posted by JanEric1

should i talk about my master thesis so i dont feel as dumb for not understanding a single word of this. :(

http://matt.might.net/articles/phd-school-in-pictures/

We may be at different angles off the center, but that doesn't make our specialties any more or less "smart" than the other

Comment

Originally posted by yamfarmer1

Is it something homegrown or one of the popular open source orchestration frameworks? (k8s, etc)

It's a popular open source framework. Reckon rolling your own clustering is quickly becoming like rolling your own crypto - just don't.

Comment

Originally posted by imArsenals

Almost 90% sure it's happening (on a smaller scale) in NA as well. I was playing with some Texas friends last night (all DFW) and all of us had massive packet loss despite our MS/FPS not changing.

That'd have to be something else entirely - the game servers don't run in the container cluster presently. I didn't see any major network issues with NA last night - possible that y'all are on the same ISP and they were having issues?

Comment

Originally posted by FrenchLyfe

You mentioned that a large amount of containers go into making league work, I was wondering just how spread out it actually is? Is a single champ select lobby running on multiple containers at once, each responsible for different things like Champs, runes, Chat, etc? I remember reading about those being highly separate client side, so it would be interesting to know if the server side mirrors the client in that sense.

It's very spread out - the examples you call out in a single champ select are spot on correct. There's a few more but I'm fuzzy on the exact splits so I hope you'll accept a bit of handwave there. In the core game loop we also have other services like the one that manages parties, one for matchmaking, and on the flip side there's separate services for processing mission results and storing your match history, for example. Very much in the microservices style of architecture.

Comment

Originally posted by enyaliustv

As someone working in the field it is nice to see what happened, what did you do to fix the problem and what is being done to make the chances of it happening again close to zero. I have had my fair share of moments where I've thought the work was done by workers with way too little experience and knowledge to deal with the European servers but I was wrong. Thanks for the article!

We're nearly done moving to a different container scheduler entirely, and that one has much more expressive constraints that will allow us to problematically ensure exclusivity on host across shards with a bit of configuration. Until the edge services can be transitioned over however, we've set up alerting that prompts us to do a manual remap if problematic crowding occurs. That's been working well for the past couple weeks since this incident.

Comment

Originally posted by Masalar

I always like these explanation articles. I may not fully understand everything talked about, but I find it fascinating anyway.

Glad you liked it! If you have any questions, I'm happy to help clarify anything