<_< good point. internally the ship's location is stored as 10000th of pixels. if it's not done this way, when the ships are moving very slowly they'll stop moving completely as you can't move a whole pixel in one frame iteration (and movement looks sloppy). Rounding won't work for this reason. I should make it a constant though... any name suggestions? pi is the packet instance... pi->getValue("timestamp") is the timestamp we just received in the packet. The reason for the binary & is that in the player packet, the timestamp is stored as a 16 bit value, whereas when you do a timer sync it's 32 bits... continuum is re!@#$%^&*ed I know. distSq and maxDistSq are verbose names.. distance squared and maximum distance squared... it's the pythagorean theorem without the square root which is unnecessary for just comparing distances. everything is integer division, "(s->loc.x / 10000 != newx / 10000)" is checking whether the pixel of the Ship* (which we are drawing), is the same as the predicted actual pixel position.