In the 3D world there is a problem that is pretty involved to discuss. I will attempt it here.

In 3D the coordinate system has lots of coordinates. 3D usually uses floating point coordinates to determine the position of an object. When redrawing at some number of frames per second it is possible for an objects position to change during every frame. Communication of the position of every object to every other object every frame consumes a tun of bandwidth. This is why Doom could only handle 4 players in its network modes during the first version.

The problem is resolved by increasing the time between broadcasts of position data to other objects. Bandwidth goes down and the clients effectively sample the position data over time of other objects. Since this is a sample of data it is bound by all of the rules of statistics and is prone to error of some percent.

We have achieved the bandwidth reduction we are looking for but the outcome was that you could never be sure where objects were on the client side because of statistical probabilities. This is where prediction algorithms come into play. The client takes not only position data but speed data and vector data. An object moving on vector PQ at a given speed will arrive at Q in such an amount of time. Comparing that time to the refresh time allows us to extrapolate where the object should be at all points between PQ for any time t. This works wonderfully as now the position data can be generated by the client and interactivity with the object increases as statistical probabilities decrease.

The drawback here happens when the object on vector PQ decides to change to vector RS which is some angle off of PQ. If this event occurs before the broadcast time to other clients then the clients prediction algorith thinks the object is at Q after time t when in fact it is following vector RS and no where near position Q. Solving this is finding the balance between your bandwith restrictions, the broadcast interval, and a myriad of other pieces of information. I hope this helps you see the problem. There are ways to speed this up, some are effective while others are not.

In the 3D world flagging objects as immobile allows prediction algorithms to always correctly position the object with respect to its position on the server.

Having the broadcast interval shorten as a user gets closer to the object is another way to decrease the percent error of the prediction algorithm as compared to the server.

Less acceleration and more constant speed helps the prediction algorithm tremendously. The faster the object moves the larger the real position error can be over a given time. Acceleration is speed over time over time and since time is the problem in the prediction the percentage of error rises when time is factored into the equation twice. Acceleration and deceleration only exascerbate the problem inherent to the prediction algorithm.

When you see this problem to its fullest you will have a new appreciation for what games like Quake, EverQuest, Asheron's Call, Ultima Online and others are doing. Again I hope this helps you out.

Kressilac

ps If you have questions please feel free to email me. I will try to help as much as possible. Geometry books and Physics books can help the Vector math and acceleration/speed math as well.

------------------

Derek Licciardi