[ENet-discuss] Time synchronization client/server/client communication.

Syed Setia Pernama syedhs at yahoo.com
Tue Mar 2 22:58:34 PST 2010

Yes this is a common 'challenge' in network game. The best link I have so far is this: http://www.mine-control.com/zack/timesync/timesync.html

The algorithm from the article:-

	1. Client stamps current local time on a "time request" packet and 
sends to server
	2. Upon receipt by server, server stamps server-time and returns
	3. Upon receipt by client, client subtracts current time from sent time and divides by two to compute latency.  It subtracts current time from 
server time to determine client-server time delta and adds in the 
half-latency to get the correct clock delta.
(So far this algothim is very similar to SNTP)
	4. The first result should immediately be used to update the clock 
since it will get the local clock into at least the right ballpark (at 
least the right timezone!)
	5. The client repeats steps 1 through 3 five or more times, pausing a 
few seconds each time.  Other traffic may be allowed in the interim, but should be minimized for best results
	6. The results of the packet receipts are accumulated and sorted in 
lowest-latency to highest-latency order.  The median latency is 
determined by picking the mid-point sample from this ordered list.
	7. All samples above approximately 1 standard-deviation from the median are discarded and the remaining samples are averaged using an 
arithmetic mean.

----- Original Message ----
From: Alexander Shyrokov <sj at sjcomp.com>
To: enet-discuss at cubik.org
Sent: Wed, March 3, 2010 6:41:51 AM
Subject: [ENet-discuss] Time synchronization client/server/client communication.


I have multiple clients connected to the server. The server echos the received data from any single client to the rest of the clients. I would like to know the time when a packet is sent by the original client. How do I do that? It is clearly a very common situation in games. I get position of a player with the velocity. Given that some time elapsed since the packet was sent I can estimate current position by using elapsed time and the velocity to get the offset.


More information about the ENet-discuss mailing list