Live data from Hacker News

Riot Games: Artificial Latency for Remote Competitors

lolesports.com

41–50 of 160 posts

Re: Riot Games: Artificial Latency for Remote Competitors

#41
post #7

Seems something very hard to do in software but very easy to do in hardware.

I'd argue the complexity of trying to achieve this at all is too much to bear in practice, especially considering the type of customers this would be inflicted upon. Competitive gamers will now also be wondering if the "fake lag" system is bugged, in addition to all of the other problems that could still exist.

Some problems cannot be solved with clever tricks.

Re: Riot Games: Artificial Latency for Remote Competitors

#42
post #7

Seems something very hard to do in software but very easy to do in hardware.

Think other people have already done the hard part. Wouldn't be too hard to write something that wraps tc and ping.

  # hping -S -p 1234 somehost.com
  HPING somehost.com (ens3 1.2.3.4): S set, 40 headers + 0 data bytes
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=0 win=26883 rtt=0.9 ms
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=1 win=26883 rtt=0.8 ms
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=2 win=26883 rtt=0.7 ms

  # tc qdisc add dev ens3 root netem delay 25ms

  # hping -S -p 1234 somehost.com
  HPING somehost.com (ens3 1.2.3.4): S set, 40 headers + 0 data bytes
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=0 win=26883 rtt=25.9 ms
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=1 win=26883 rtt=25.8 ms
  len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=2 win=26883 rtt=25.7 ms

Re: Riot Games: Artificial Latency for Remote Competitors

#43
post #28
post #21

Earlier quoted context omitted.

You would use an external source of randomness, which you can definitely prove is sufficiently random.

You could do something like this: • Pre-publish, for each time batch, a public key. You could publish lists of these well in advance. • Let everyone submit, alongside each order, a number arbitrarily selected by them. It does not matter how they select the number, but it would be simpler if everyone chose distinct numbers. • When order processing is done, do it by the order of closeness of the submitted number to the…

Something very similar is done on smart contracts to introduce randomness (at least to the practical extent) on blockchain. Good thought experiment nevertheless to provably inject randomness into a system with untrusting parties.

Re: Riot Games: Artificial Latency for Remote Competitors

#44
post #8

As context this was a big international fiasco. Nobody was acting maliciously but fans of RNG and other teams felt wronged. RNG didn't want to attend due to covid restrictions on travel but Riot really wants Chinese viewers in international tournaments, hence all this online latency work. Pros on other teams were lied to by the false latency information which must be almost paranoia inducing to be told it's only 35ms…

You can in fact have that magical time-travel approach to get apparent latency lower than the real number. Keep a history of the game state at every tick, so you can roll back to any previous instant. If real latency from one client is 50 ms, and you're targeting 35 ms, you roll back the game state by 15 ms each time input comes in from that client, and re-run the game logic from that point forwards and send the resulting state update to all clients. Those clients will see a bit of jumpiness in the game state, which isn't ideal, but may be the lesser evil compared to enduring more latency.

(I have no idea what LoL in particular supports or implements, but that's the general idea.)

Re: Riot Games: Artificial Latency for Remote Competitors

#46
post #7

Seems something very hard to do in software but very easy to do in hardware.

Think other people have already done the hard part. Wouldn't be too hard to write something that wraps tc and ping. # hping -S -p 1234 somehost.com HPING somehost.com (ens3 1.2.3.4): S set, 40 headers + 0 data bytes len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=0 win=26883 rtt=0.9 ms len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234 flags=SA seq=1 win=26883 rtt=0.8 ms len=46 ip=1.2.3.4 ttl=64 DF id=0 sport=1234…

well adjusting the latency is the easy part. doing it in real time while observing the connection and making adjustments, that is when it becomes hard.

and they did it basically after the network stack, so if a paket took 40ms they added no latency if it took 20ms they added 15ms and so on.

so EACH paket was evaluated and of course this is not an easy feat, because lol is serverside authoritive so the latency must be correct inside the server and the client for each packet.

Re: Riot Games: Artificial Latency for Remote Competitors

#47
post #17

I love the intent and actions behind this post. Finding an unfair bug mid-tournament is serious, and it takes courage and integrity on the part of the technical team to -listen to the players -investigate past what your own analytics are saying -find and fix the bug under time pressure -and disclose the (potentially embarrassing!) initial mistake I think the article itself could have been worded better though. It did…

Yep, look at what Valve is doing to dota 2...

Re: Riot Games: Artificial Latency for Remote Competitors

#48
post #17

I love the intent and actions behind this post. Finding an unfair bug mid-tournament is serious, and it takes courage and integrity on the part of the technical team to -listen to the players -investigate past what your own analytics are saying -find and fix the bug under time pressure -and disclose the (potentially embarrassing!) initial mistake I think the article itself could have been worded better though. It did…

The technical team acted honorably, but the upper stewardship at Riot games behaved horrendously.

They sacrificed the competitive integrity of their sport because they didn't want to exclude RNG from the tournament, because they wanted the audience of the Chinese market.

This article goes into more detail, giving a larger context for why this situation shouldn't have never happened in the first place.

https://www.invenglobal.com/articles/17207/montecristo-its-e...

Re: Riot Games: Artificial Latency for Remote Competitors

#49

Earlier quoted context omitted.

Not apocryphal; IEX has 38 miles of wire in their building. Tom Scott did a video a few years ago about it: https://www.youtube.com/watch?v=d8BcCLLX4N4

Does IEX have any liquidity or uptake yet?

Apparently they have 2.6% market share for trading in the US?

Re: Riot Games: Artificial Latency for Remote Competitors

#50
post #8

As context this was a big international fiasco. Nobody was acting maliciously but fans of RNG and other teams felt wronged. RNG didn't want to attend due to covid restrictions on travel but Riot really wants Chinese viewers in international tournaments, hence all this online latency work. Pros on other teams were lied to by the false latency information which must be almost paranoia inducing to be told it's only 35ms…

You can in fact have that magical time-travel approach to get apparent latency lower than the real number. Keep a history of the game state at every tick, so you can roll back to any previous instant. If real latency from one client is 50 ms, and you're targeting 35 ms, you roll back the game state by 15 ms each time input comes in from that client, and re-run the game logic from that point forwards and send the resu…

That's just another kind of latency. Additional time has still passed from you (or the enemy player) doing an action, and you seeing the results of that action on your screen.

By contrast, the server rolling back the game state is indistinguishable from the server always being 15ms behind and the clients running the simulation ahead of time (which they do anyway for fluency [1]). The "jumpiness" is called rubberbanding [2].

[1] https://www.gabrielgambetta.com/client-side-prediction-serve...

[2] https://www.urbandictionary.com/define.php?term=rubberbandin...

Post reply on HN