ゲームの開発をする時、”二つの機器の間の時間同期化をする方法”が必要な時があります。
これを説明します。

二つの機器の時間を同期化することは普通round trip latency (RTT)を使います。
機器 A,Bがあると言いましょう。

* A->B: Aのシステムの時間を送る。「1」
* B->A: 「1」をそのまま送る。

AではAのシステム時間で「1」の中の時間を引けばRTTを得ます。

次に、

*A->B:RTT「2」とAの現在の時間「3」を送る。

こうすれば良いです。BからAの現在の時間を得たいなら、

*Aの現在の時間=「3」+「2」/2

を計算してください。

NTPもこれらしい方式で作動します。

コンピューターネットワークの特徴でRTTは一度だけ測定するから正確な方ではありません。
毎度 RTTは少し違います。
無線ネットワークでは大きく違う場合もあります。
従って何回の測定後、最近のを平均を出す方がもっと正確です。

因みに、ProudNet(proudnet.com)は多様な時間の同期化の関数を提供します。

* CNetClient.GetIndirectServerTimeMs
* CNetClient.GetP2PServerTimeMs
* CNetClient.GetServerTimeMs

ProudNetはサーバーだけでなく P2Pが繋がれた他のクライアントとRTTを得る機能も提供します。
CNetClientと CNetServerの GetLastPingと GetRecentPing 関数を利用します。