3
\$\begingroup\$

I hear pros playing Fortnite that have 20-50 ping complain that they cannot perform as well as pros with 0 ping due to wall taking, etc. It's easy to think that a 20ms ping difference is negligible but it is not in competitive situations.

It seems to me that it should be possible to standardize a lobby's ping to the current maximum player's ping at any given moment. Obviously in a competitive game like Fortnite, the worst ping a pro player can have is generally 50-60 ping.

This solution would involve psuedo latency. For example, in competitive Fortnite, if the worst ping among the players is 50, then all players will be forced to also have 50 ping by inducing an artificial server response delay. This would allow no single player to have an advantage based on internet connection.

How could I implement a feature like this, to provide a level playing field?

\$\endgroup\$
3
  • \$\begingroup\$ +1 for thinking outside the box, although this is impractical. \$\endgroup\$
    – Evorlor
    Jun 3 '20 at 1:12
  • \$\begingroup\$ Thank you for the prompt edits, Rage! I've re-opened the question. @Evorlor, I look forward to reading your answer. :) \$\endgroup\$
    – DMGregory
    Jun 3 '20 at 1:25
  • \$\begingroup\$ @Evorlor let's hear it \$\endgroup\$
    – Rage
    Jun 3 '20 at 3:55
2
\$\begingroup\$

First of all, I commend you for thinking outside the box. Keep doing that.

Here are a couple problems off the top of my head with one potential implementation. (Only a partial answer.)

It increases latency for all players, including the already highest ping player.

How much pseudo ping do we add? We must first check which player has the highest ping. So the server pings each player to figure that out.

We are one tick behind now.

OK. We now have the player who has the highest ping. Let's let each other player know what their artificial ping should be.

We are two ticks behind now.

OK. Each player inserts an artificial delay, then reports to the server their input. (Let's assume the predicition is perfect for how long it takes to send this input to the server.)

So we balanced the latency across all players. But instead of being 50ms for the highest ping player, we now have 150ms for all players.

Also keep in mind each ping has a different latency and can have a wide range (for the same player). This adds a lot of complexity.

(There are probably better implementations than the one i showed above, but I cannot think of any off the top of my head, considering the ping varies every tick.)

It punishes other players for being in the lobby with a lower ping player.

I have 20ms ping. I pay a lot of money for it. It is worth it because I like high responsiveness in my games.

The other player has 50ms ping (or 150ms if the above is taken into account). So I get throttled? I am going to go play something else.

\$\endgroup\$
3
  • \$\begingroup\$ Perhaps you are overestimating how long it takes to calculate the highest ping each tick. It may look something like this (seperated by first tick and subsequent ticks). First tick: Each time a client sends a packet to the server the following happens (ms starting now): 0ms client sends game-state packet to server, 8ms server receives packet and prepares return packet, 10ms server sends client game-state packet, 20ms client receives packet and instantly sends a packet back to server, 28ms server receives packet and stores client's ping. \$\endgroup\$
    – Rage
    Jun 3 '20 at 19:36
  • \$\begingroup\$ @Rage Yes, that makes much more sense. Not sure why I was thinking the clients would do the pseudo-latency \$\endgroup\$
    – Evorlor
    Jun 3 '20 at 19:38
  • \$\begingroup\$ Subsequent ticks (ms starting now): 0ms client sends game-state packet to server | 8ms server receives packet and prepares return packet ++server generates psuedo latency by sleeping X amount. X = lobby's max ping (lets say max ping in the lobby is currently 50)/2 - client's average ping/2 | 50ms client receives packet and instantly sends a packet back to server 58ms server receives packet and stores client's ping \$\endgroup\$
    – Rage
    Jun 3 '20 at 19:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.