League of Legends

League of Legends Dev Tracker




17 Mar

Comment

Originally posted by [deleted]

Look guys we have new Cactopus.

we are all cactopi, on the inside.


16 Mar

Comment

Originally posted by Creath

I believe it. Riot's growth as a company is honestly incredible. It's hard to believe that 8 years-ish ago Riot was just a startup working on "the next DoTA".

You guys have come a long way!

Comment

Originally posted by Creath

But, from a DevOps perspective, shouldn't there be monitoring instrumentation in place to detect these kinds of failures?

I feel like whether or not a Riot employee personally noticed the downtime should be irrelevant. If you've only found out your store is down because Mike in Design was trying to buy the new Lulu skin, something has already gone very wrong.

You're not wrong. This was a long, long time ago.

Comment

Originally posted by krazerrr

I'm actually realizing this exact same thing at work! Workarounds are great for devs to bypass shitty workflow, but when your clients do it you have to be aware it exists and fix it, not ignore it 😅

I think there's an old story at Riot about the in-game store being totally broken and no one realizing it because no one used the store (because of having unlocked accounts).

You really can't improve things for players if you're pretending you aren't one.


15 Mar

Comment

Originally posted by sab39

Where Sivir?

you have to watch until the end

Comment

Originally posted by X_mLg_n0sc0p3r_X

Slightly off-topic, but does anyone remember another /dev post somewhat like this that went over the production of Camille's login theme? I've searched everywhere but I haven't been able to find it. Does anyone know where it went? It should have been released within the last year or so. Thanks in advance

Comment

Originally posted by [deleted]

% of time spent on the 'enemy' side of the river

correct. How much time the player spent on the enemy side of the map in the early-game (0-15 minutes)


14 Mar

Comment

Originally posted by Yulwei138967

I just hope noone on broadcast will use KP% to mesure ADCs anymore. Having a high KP just means ur team is unable to crate kills outside of teamfights. I bet Pray has pretty low KP. Thats not because he is bad but because Khan Bdd and Peanut get stuff done on the other side of the map.

I agree that KP for ADCs is not really a performance metric, but a lot of stats aren't. If your ADC has a high KP it can mean that the team plays around him a lot or, as you said, that the team gets kills mainly through team fights. I would say those can still be interesting insights, don't you think?

Comment

Originally posted by RighteousArrow

So what is the point of this post? Did you see people somewhere saying that rekkless will NOT have the best stats? Whenever I checked fnc's postmatch discussions I never saw anyone saying any other eu adc is better. So why did you have to post this and even with the word CLEARLY in the title like it's some sort of surprise.

Also people here are aware he is a good adc but they're talking shit mainly because of your fanboy shitpost.

While it is true that is expected that he has the best stats, it is actually quite rare, even for the best players, to be this dominant across the boards (in terms of stats).

Comment

Originally posted by xCavas

I mean its really good but not as impressive as I initially thought.

Hans Sama, Upset, Samux & Sheriff all have 0 isolated deaths too, which is basicly half the league...

Upset is actually the only other ADC with 0 IsoD.

Comment

Originally posted by [deleted]

Who is the #1 in the respective stats where Rekless is #2?

Here are a few:

D@15: Samux has 0!

DMG/M: Upset with 697

KP: Sherrif at 83.8%

FWD: Hans Sama with 39.6%

Comment

Originally posted by LoLFirestorm

Will league ever get multithreaded without a complete game and graphics engine rework?
I'm no programmer but I believe the stuff like UI which is not super time sensitive down to tenths of a milisecond could be executed on a separate core just fine with some work and as far as I'm aware this doesn't take place right now.
My current system is very much an edge case but it's absolutely hilarious to me that I can run Doom 2016 at ultra settings and get 100-120FPS with dips to 80 and on the very same machine league will hover in 60-80 range after leaving the fountain and dip as low as 30 in super lategame teamfights. This is at a mix of medium and high settings btw but these seem to make basically no difference when the bottleneck is on the CPU side like in my case (I'm still running a Phenom II after all these years but I got myself an RX 480 before the mining boom).
I don't think it's alright that even proffesional streamers running pretty beastly builds and encoding o...

Read more

League is already partially multithreaded, although I'll be the first to admit that it could make far better use of more threads. It is something that we are working on - engine rework is ongoing, but with the game changing constantly, this is like rebuilding an airplane engine while its flying. We have to be very careful that we don't break anything as we go.

You have correctly surmised that the main performance issue is a CPU bottleneck - in a team fight we're dealing with a lot of particles, and this can be costly. In fact, there is a break down of the rendering pipeline here which will g...

Read more
Comment

Originally posted by C0ldSn4p

/u/RiotTony : Actually you can inline virtual function if you statically force the call of a precise function implementation

Here is a code sample:

// Compile with: icpc -std=c++11 -O2 main.cpp 
#include <stdio.h>

class Base {
  public:
    virtual int foo() {return 42;}
};


class Child : public Base {
  public:
    int foo() {return 69;}
};

void bar(Child c) {
  printf("%d", c.Child::foo());
}

void bar2(Child c) {
  printf("%d", c.Base::foo());
}

int main(){
  Child c;
  bar(c);
  bar2(c);
}

If you run it you will get the output 6942 showing that first foo from the child was called and the foo from the base (despite using a child object). Also if you look at the assembly (-S option at compilation) you can see in the method bar and bar2 that the values 42 and 69 are hardcoded proving that the correct foo methods were inlined despite being virtual one.

Ofc this is a very specific use case but still, vir...

Read more

Yeah, there are ways around the virtual overhead, but the benefit of virtuals are that you don't need to know what it is that you're calling a given function on. Most use cases are just that - a collection of objects that are similar, but different enough to warrant different implementations of some of their parts. Another way to mitigate the cost of virtuals is to sort them by type. In that case you have far fewer I and D cache misses as you're usually calling the same functions. Modern HW is smart enough to predict the repeated branches.

Comment

Originally posted by [deleted]

If Im looking to work for Riot someday, how much of this sort of thing should I know, as far as this sort of code optimization and assembly? Im a CS major but honestly it feels like they never teach anything about practical real world software development :/

Depends on what you want to do there. If you want to do performance optimisation, then yeah, you'll should know it or be able to learn it on the job. But most of an engineers work is much higher level than this. Having said that, every engineer should be able to measure the performance of their code and understand how to speed it up if needed.

If your CS major isn't teaching yourself anything useful, you can always teach yourself. There is so much information out there for budding programmers and the best way to learn is to do. Build systems, write code for yourself. The more you code, the better you get.

Comment

Originally posted by velrak

Am i understanding that image right and rendering the HUD takes about the same amount of time as the entire rest of the graphics? That seems crazy

There is a surprising amount of work going on in there: scaling, compositing, updating, animating - lots of triangles, lots of textures. That was not a release build either, so there is some extra work going on in there that doesn't happen in LIVE builds.

I agree though, it is a considerable portion of the frame and while some work has been done since that screen shot to improve that, there is more that we should be able to do to in the future.


13 Mar

Comment

Originally posted by trc1234

It's C++, but I don't think any programmer should limit what jobs they can take by the languages they know. Languages are syntactically different, but the underlying concepts and design patterns are identical so new languages should be pretty easy to pick up (unless they are in a completely different paradigm of course). Especially since the field is changing so fast and many languages are no longer being used (for example VB6 is basically dead except a few crazy excel programmers use it) and many new languages are appearing.

This kind of assembly level optimisation the article was talking about is particularly niche topic which most programmers do not need to be too concerned about (this is probably true at Riot too). And I'm sure at Riot they use many different languages as well as hiring many different programming roles.

I totally agree that a programmer shouldn't limit themselves to a single language - the more you know, the more you know. And yes, Riot does use other languages in different roles.

The assembly is there to illustrate the cause of the slowdowns - you very rarely (if ever) need to drop down the assembly on modern HW, but it does help to understand what is going on under the hood which can in turn help you to write more performant code at the top level.


12 Mar

Comment

(celebratory chime noises)


11 Mar

Comment

Originally posted by Tiefman

Hey thats pretty good thanks. Did you work on the lobby ambience?

I didn’t - /u/Riot_Eno did! He’s a masterful sound designer :)


10 Mar

Comment

Originally posted by VincentGankplank

Actually their sound design might be good the implementation into the game is mediacore.

Interesting video: https://youtu.be/ocbfYBslseI

Hey! You (and that video) definitely are not wrong - this is a very big and active discussion we are having. It’s partly why we are transitioning to the new audio engine (which resulted in some unfortunate bugs we are fixing for next patch- rip nexus explosion). It’s a long term project (there are so many variables) we are continuously thinking about and doing and we hope it’ll make the gameplay have more clarity. (Here’s another statement in parentheses for good measure.)

Comment

;_____; <3 there are also many wonderful Riot teams that don’t get much visibility from players but we really appreciate all the love!!