Ye but, unfortunately everyone prefer to spam meaningless and non technical accurate stuff like "Cut groups in half" add/remove AoE caps, remove CP, remove Animation canceling - as a reasons for the server lag ..
The purpose of the thread I started was more so about smart heals and people spamming mutagen than 24 man groups.
Are you seriously saying that processing a skill that has to heal two people out of a pool of 12 would be no quicker for any part of the whole system than a skill that has to heal 2 out of 400? This will take no more work/code and is not a less complicated problem to solve?
Overwatch drops ticks for users with low bandwidth to avoid dropped packages, this is worse than fewer if the last packages piles up and get lost.Since Cyrodiil is the largest Zone in the game and have the largest player capacity (600) per instance if i`m not mistaken this results in huge number of player interactions and for some reason there appears to be a bottleneck which i conclude might be one of the following 2 reasons:
Reason 1: network limitation bottleneck by the server side (Every PvP server instance might have dedicated network bandwith that it exceeds in huge fights)
Reason 2: client code(game) is not optimized to receive large amount of data sent by the server side, therefore there is a queue happening( lag ) when receiving information
Possible solution (dirty fix)
Reduce the server ticks to 30/32 ticks per second - since this is not a Shooter game we (the players) won't feel significant (if any) impact to our gameplay, but this will literally be reducing the lag in half.
However its not simple math, you might have over 100 effects on you at once many are circles you move between.The purpose of the thread I started was more so about smart heals and people spamming mutagen than 24 man groups.
Are you seriously saying that processing a skill that has to heal two people out of a pool of 12 would be no quicker for any part of the whole system than a skill that has to heal 2 out of 400? This will take no more work/code and is not a less complicated problem to solve?
This thread is about network bandwith (sent by server and received by client) which has nothingning in common with server calculations.
A regular 500 CPU can perform Milions of calculations every minute, just thinking that a server machine will not be able to do a simple math is a pure nonsense.
First i would like to introduce you to the Server ticks terminology.
What are server ticks?
This is the amount of time per second that the server is sending data to the client (players game).
Supposedly ESO servers are working on 60 or 64 ticks, how does this transfer to gameplay?
Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals.
Now let's say that another player comes by to you > here is what happens:
You will receive your 64 rows of data per second + another 64 rows of data per second because of the second player, so this is 128 rows of data per second for you AND another 128 rows of data per second for the other player which is total 256 rows of data per second sent by the server:
Here is detailed explanation: https://www.nbnco.com.au/blog/entertainment/what-is-tick-rate-and-what-does-it-do
Here is a small showcase in image:
Since Cyrodiil is the largest Zone in the game and have the largest player capacity (600) per instance if i`m not mistaken this results in huge number of player interactions and for some reason there appears to be a bottleneck which i conclude might be one of the following 2 reasons:
Reason 1: network limitation bottleneck by the server side (Every PvP server instance might have dedicated network bandwith that it exceeds in huge fights)
Reason 2: client code(game) is not optimized to receive large amount of data sent by the server side, therefore there is a queue happening( lag ) when receiving information
Possible solution (dirty fix)
Reduce the server ticks to 30/32 ticks per second - since this is not a Shooter game we (the players) won't feel significant (if any) impact to our gameplay, but this will literally be reducing the lag in half.
... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
That's not how proper high traffic client/server (game) servers function ...
@InvictusApolloInvictusApollo wrote: »Please elaborate.That's not how proper high traffic client/server (game) servers function ...... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
@InvictusApolloInvictusApollo wrote: »Please elaborate.That's not how proper high traffic client/server (game) servers function ...... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
Disclaimer:
I've worked in the gaming industry for many years (As a programmer, system architect and development manager) and i have built several (successful) high client count / data volume systems.
A good client/server system only sends data when a state changes. When you are sitting idle, there is no need to send anything from you to the server for processing which also means there's no need for the server to send anything about you to anyone else around you.
The server knows your last state and only needs updating when that state changes.
Furthermore, data is usually sent via UDP without ACK to speed up processing times. That means that the server needs some sort of prediction to account for connection lag and possible data loss. That also means that the clients also need some sort of local prediction for the same reasons.
When implemented correctly, only a small amount of data needs to be transmitted from/to each client and the server maintains a "ground truth" state of the game world. Ground truth here means that any client side prediction can be invalidated and overwritten by the server if needed (usually happens when one or more clients have a laggy connection or high ping).
If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
TequilaFire wrote: »Your keywords were "proper" and "UDP".
TequilaFire wrote: »ESO also uses TCP requiring client to acknowledge each packet has been received instead of UDP which uses checksums instead. TCP may be less prone to corruption but UDP is faster and is more common in online gaming.
@InvictusApolloInvictusApollo wrote: »Please elaborate.That's not how proper high traffic client/server (game) servers function ...... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
Disclaimer:
I've worked in the gaming industry for many years (As a programmer, system architect and development manager) and i have built several (successful) high client count / data volume systems.
A good client/server system only sends data when a state changes. When you are sitting idle, there is no need to send anything from you to the server for processing which also means there's no need for the server to send anything about you to anyone else around you.
The server knows your last state and only needs updating when that state changes.
Furthermore, data is usually sent via UDP without ACK to speed up processing times. That means that the server needs some sort of prediction to account for connection lag and possible data loss. That also means that the clients also need some sort of local prediction for the same reasons.
When implemented correctly, only a small amount of data needs to be transmitted from/to each client and the server maintains a "ground truth" state of the game world. Ground truth here means that any client side prediction can be invalidated and overwritten by the server if needed (usually happens when one or more clients have a laggy connection or high ping).
If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
You are saying that incorectly implemented client-server system may allow one player to give high ping to other players.If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
InvictusApollo wrote: »@InvictusApolloInvictusApollo wrote: »Please elaborate.That's not how proper high traffic client/server (game) servers function ...... Let's say that you are alone in an area and you are doing nothing but standing still > disregarding that you are not doing ANYTHING you are still receiving 64 data rows per second containing information about your location/state/visuals ...
Disclaimer:
I've worked in the gaming industry for many years (As a programmer, system architect and development manager) and i have built several (successful) high client count / data volume systems.
A good client/server system only sends data when a state changes. When you are sitting idle, there is no need to send anything from you to the server for processing which also means there's no need for the server to send anything about you to anyone else around you.
The server knows your last state and only needs updating when that state changes.
Furthermore, data is usually sent via UDP without ACK to speed up processing times. That means that the server needs some sort of prediction to account for connection lag and possible data loss. That also means that the clients also need some sort of local prediction for the same reasons.
When implemented correctly, only a small amount of data needs to be transmitted from/to each client and the server maintains a "ground truth" state of the game world. Ground truth here means that any client side prediction can be invalidated and overwritten by the server if needed (usually happens when one or more clients have a laggy connection or high ping).
If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
Thank you.
One thing caught my interest:You are saying that incorectly implemented client-server system may allow one player to give high ping to other players.If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
I often felt that I experienced this on some ocassions. I struggled to adapt to new lag that enemies introduced, while they were in their element.
Have you experienced something similar in ESO?
But then how do you explain really bad lag in small fights or even 1v1 and sometimes with only 1/2 bars of population?
InvictusApollo wrote: »But then how do you explain really bad lag in small fights or even 1v1 and sometimes with only 1/2 bars of population?
Maybe lag isn't a derivative of only the number of players involved but also the quality of their connection to game server and the number of their actions per second? Maybe bad implementation of client-server system lets laggy players, who are far away from the server and have poor connection, increase lag to other players?
wavingblue wrote: »TequilaFire wrote: »ESO also uses TCP requiring client to acknowledge each packet has been received instead of UDP which uses checksums instead. TCP may be less prone to corruption but UDP is faster and is more common in online gaming.
Not only does it have to acknowledge every packet but if a packet is missed for whatever reason it has to request re-transmission, halt everything done with that thread, get the packet and then process the backlog. This of course creates a spiral of processing which is fine at 60 to 80% utilization but start reaching heights of 90..95...near 100% utilization on a processor and data link.. and it becomes a death spiral.
Would love if they switched to UDP... that would free up significant resources, which probably means they won't do it.
Also not sure size of TCP packets in game but they are typically 20 to 60 bytes vs 8 bytes for UDP, that's a fair amount of extra processing overhead to get to the actual game message that needs to be acted on.
InvictusApollo wrote: »One thing caught my interest:You are saying that incorectly implemented client-server system may allow one player to give high ping to other players.If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
I often felt that I experienced this on some ocassions. I struggled to adapt to new lag that enemies introduced, while they were in their element.
Have you experienced something similar in ESO?
randomkeyhits wrote: »Last thing, while I generally am in favour of UDP for MMO connections over TCP it does come with a whole bunch of different challenges. Would ZoS get it right? maybe. Not sure I'd want to risk the game over another maybe.
... Heck, just download the original quake source code and have a look at the base principles of using client/server prediction with UDP transfer ...
InvictusApollo wrote: »One thing caught my interest:You are saying that incorectly implemented client-server system may allow one player to give high ping to other players.If done correctly, that also means that a high ping/laggy client can *never* slow down other players in the world since the server does *not* wait for client data to arrive to compute state changes, make predictions or broadcast updates to clients.
I often felt that I experienced this on some ocassions. I struggled to adapt to new lag that enemies introduced, while they were in their element.
Have you experienced something similar in ESO?
Yes, unfortunately the way the client/server interaction is implemented in ESO it *DOES* allow for a laggy client to slow down server processing and thus introducing lag for other players in the immediate area. And yes, this can be done intentionally.