Ping is not directly the cause, no, the trouble is the way GPL/NR200x
servers compensate for it, but not for the position errors this system
causes when collisions are calculated.
It works pretty well if the combined ping of the players is under 40ms. E.g.
back in the days when I was one of the first group of people on broadband
where I live and my ping to Norway was 23ms, I could race my buddy Asgeir on
the server at the university (his ping < 10ms) without taking online issues
into account. Once we went one and a half laps around Monaco side by side,
banging wheels Villeneuve vs Arnoux style (and those sissies had a lot of
run off ;-)) as we went along without GPL getting really out of shape.
Anything much higher (say 70ms and above) and things deteriorate rapidly.
Also, in NR200x you are able to turn on more cars to view than the bandwidth
between you and the server allows. In GPL terms, NR200x bandwidth allows you
to view 6 cars and, while stationary, you will only see this amount. Once
you start moving and prediction kicks in you can see up to 42 cars if your
config allows, but this has to be at the cost of update rate. Which is to
say, position info on any opponent car will arrive only once every 3
communications with the server (for 18 opponents in view) and, even if your
combined ping is very low for internet standards nowadays, say 60ms, the
effective update rate between two players may be as bad as 6 times that, or
360ms.
It's because of the way GPL/NR200x compensates for latency and then
calculates collisions client side, for both clients.
A GPL/NR200x server collects data about the player's position and compares
the amount of time which has passed in the client's race with the amount of
time it knows the race has been underway. It uses this data to sent out info
to the clients on their opponents in such a way that the information will be
current when it arrives at the client PC, assuming latency is the same both
ways AND constant. Because all data has to pass sequentially from the
server, this means that, relative to the server and eachother all players
are at a different point in the timeline with regard to the start of the
race, i.e. each player's game reality is slightly different to all the
others.
Say a collisions starts at one players end... his game calculates his car's
reaction to the collision and send it to the server. This info is then
passed on to the other game where either seperate collision is in progress
or an accident hasn't occured yet. It sends back the local cars reaction to
this time delayed, coming from another version of reality information and
the whole mess keeps feeding back and forth until it spirals out of control
because the two games were too far out of sync due to their relative
latencies (compounded by the update rate in NR200x games) when the accident
started. It's similar to the ball bearing bouncing on the marble plate in
the explanation why the simulation update frequency plays such a big part in
how accurate its results are.
Anyhow, ISI and the people behind LFS use a different system (as yet
unexplained to me), so nudges between cars remain just that, nudges. It's
pretty obvious the trade off is more data being passed between the
participants, but otherwise I'm not aware of the merits/flaws/workings of
this system.
Jan.
=---