システムの時計を同期させることは間違いなく問題だと思います。ユーザーはあなたがシステム設定に触れることを期待しておらず、多くのシステムはあなたに触れさせることすらしません。
必要なのは、タイムスタンプを片側の時計から反対側の時計に変換するための相関関係を持つことだけです。一方、プレーヤーの位置を予測するために使用する場合は、この相関をかなり正確にする必要があります。たとえば、少なくとも100分の1秒までです。システムクロックは、ランダムマシン間でこれほど適切に関連付けられることはありません。そのため、ネットワーク帯域幅を節約するために、おそらく他のメッセージに埋め込まれているNTPテーマのいくつかのバリエーションを使用して、自分で相関を確立する必要があります。
基本的な考え方は、送信した各パケットでタイムスタンプを送信したことと、シーケンス番号と、反対側から最後のパケットを受信したときのタイムスタンプです。これから、往復を計算します。たとえば、パケットQが1000で送信され、パケットPが500で受信されたと言う場合、0でパケットPを送信し、800でQを受信している場合、往復は(800-0 )-(1000-500)=300。非対称性を知る方法はないので、パケットはどちらの方向にも半分(150)ティックを取ると仮定します。そして、そのリモートタイムスタンプは、ローカルよりも1000-(800-150)= 350ティックだけ進んでいます。往復は異なります。クロックがかなり正確であると想定する場合は、相関の長期平均を使用する必要があります。
クロックにはシステムクロックも使用しないことに注意してください。それらは途中で再同期され、トラックから外れることがあります。clock(CLOCK_MONOTONIC)
UnixまたはGetTickCount
Windowsで使用する必要があります(これらのAPIが現在JavaまたはPythonでどのようにラップされているかは不明です)。
注:SO_TIMESTAMP
ソケットオプション(質問のコメントでott--で言及されているsocket(7)を参照)は、パケットを受信するイベントループのレイテンシの影響を分離するのに役立ちます。努力する価値があるかどうかは、必要な精度の高さに依存します。