If 50 players play online , what kind of data being sent/receive to the servers ?
I assume complex physics will require more bytes sent/receive.
In order to maintain gameplay, latency must be minimal.
Imagine a player with 33ms latency fighting with 300ms latency. At 300ms, Assetto Corsa was unplayable at all.
Very little is exchanged with the server / router. The server doesn't run the game itself, hence it is incapable of making correct penalty assessments.
Every client sends their own car telemetry to the server which duplicates it and sends it on to all other clients.
Each client receives data from all other cars and forward predicts it to run in sync with your car. This all happens separately per car. Only your own car is running in real time, all the other ones are forward predicted based on how old the last telemetry is from that car.
If a player with 33ms ping is racing a player with 300ms ping, what happens is:
It takes your data 16ms to reach the server, then 150ms to reach the other player and vice versa.
So if you both drive 60 m/s (216 kph / 135 mph) your car is displaced/predicted forward by 4 meters on his screen and his car is displaced/predicted forward by 4 meters on your screen. As long as the lag is stable the game can cope pretty well with forward prediction. However lag never is, the higer the latency, the higher the jitter or variance as well. GTS handles jitter and lag spikes pretty badly, the worse the jitter the more erratic cars start to behave.
Physics, criteria for ghosting, collision, all that is handled on the console. Hence when there is contact the physics often look weird. You collide with the forward predicted car of someone else. You can't actually move other cars on your console, only the effects on your own car are shown (and the new telemetry is send on to the server) and you won't see the effects of the collision on the other car until the telemetry from how the collision played out on their console reaches you. Since both cars are in slightly different places/speeds/angles at the time of the collision (from all the forward predicting) the collision often look under/over exaggerated. There is even a bug where some laggy clients stop accepting any telemetry from other cars (drive by themselves) but are still sending their telemetry which results in a car running on your client that is immune to any contact and will shove you out of the way without any effect on them.
Anyway long story short, the server only sees telemetry from all cars and simple info like contact, car hit wall, went outside track limits, and tracks position changes by synchronizing the time from all incoming telemetry. It doesn't know anything about track placement, whether contact happened in a corner, straight or braking zone, and tries to make sense of a collision that played out slightly differently on each console. It's an impossible task without actually running the simulation on the server to apply actual racing rules. Currently it can't say who didn't leave room where or who started braking too late since it simply doesn't know where anyone is on the road.