Saya pikir sudah pasti tidak baik untuk menyinkronkan jam dalam sistem . Pengguna tidak berharap Anda menyentuh pengaturan sistem dan banyak sistem bahkan tidak akan membiarkan Anda melakukannya.
Yang Anda butuhkan hanyalah memiliki korelasi untuk mengubah timestamp dari jam satu sisi ke jam pihak lain. Di sisi lain Anda perlu korelasi ini agak tepat, katakan setidaknya seperseratus detik, jika Anda ingin menggunakannya untuk memprediksi posisi pemain. Jam sistem tidak akan pernah berkorelasi dengan baik antara mesin acak ini. Jadi, Anda harus membuat korelasinya sendiri, menggunakan beberapa variasi pada tema NTP , mungkin tertanam dalam pesan Anda yang lain untuk menghemat bandwidth jaringan.
Ide dasarnya mungkin bahwa dengan setiap paket yang Anda kirim timestamp yang Anda kirim dan nomor urut dan timestamp ketika Anda menerima paket terakhir dari sisi lain. Dari ini Anda menghitung pulang pergi: Misalnya jika paket Q mengatakan itu dikirim pada 1000 dan paket P diterima pada 500, daripada memberi Anda mengirim paket P pada 0 dan menerima Q pada 800, round-trip adalah (800 - 0 ) - (1000 - 500) = 300. Tidak ada cara untuk mengetahui asimetri, sehingga Anda hanya berasumsi bahwa paket tersebut mengambil setengah (150) kutu di kedua arah. Dan stempel waktu jauh lebih cepat dari lokal dengan 1000 - (800 - 150) = 350 ticks. Perjalanan pulang pergi akan bervariasi. Jika Anda menganggap jam itu cukup tepat, Anda harus menggunakan rata-rata korelasi jangka panjang.
Perhatikan, Anda juga tidak ingin menggunakan jam sistem untuk jam tersebut. Mereka mungkin disinkronkan di tengah jalan, membuat Anda keluar jalur. Anda harus menggunakan clock(CLOCK_MONOTONIC)
Unix atau GetTickCount
Windows (tidak yakin bagaimana API tersebut dibungkus dengan Java atau Python sekarang).
Catatan: SO_TIMESTAMP
Opsi soket (lihat soket (7) yang disebutkan oleh ott-- dalam mengomentari pertanyaan) akan berguna untuk memisahkan efek latensi dari loop peristiwa yang menerima paket. Apakah itu sepadan dengan usaha tergantung pada seberapa baik presisi yang Anda butuhkan.