Seperti yang disebutkan, ini tidak mungkin, jadi saya akan mencoba pendekatan lain:
Jika Anda tidak memiliki server khusus, pilih satu klien yang berpartisipasi untuk menjadi tuan rumah (ini dapat ditransfer jika perlu).
Tuan rumah sekarang akan melakukan semua logika permainan yang penting, seperti deteksi hit, kontrol AI, penanganan inventaris, dll. Serta pelacakan waktu (yaitu menentukan waktu permainan).
Klien lain hanya akan mencoba untuk tetap sinkron dengan tuan rumah, mencoba memperkirakan atau memperkirakan nilai yang diharapkan. Jika lag bertambah atau ada kehilangan paket, semuanya mungkin berombak, tetapi sepele untuk mengejar ketinggalan, pada dasarnya hanya menunggu pembaruan berikutnya.
Sebagian besar permainan (terutama FPS) menyembunyikan fakta ini dengan melakukan perhitungan lokal mereka sendiri untuk pergerakan pemain sendiri, tembakan yang ditembakkan, dll. Untuk menghindari permainan yang terasa lamban. Semuanya masih diperbaiki berdasarkan data server. Ini dapat menyebabkan beberapa kebingungan, misalnya Anda melihat diri Anda menembak musuh, tetapi pada saat yang sama Anda jatuh mati (tanpa musuh menabrak), tetapi itu masih pendekatan yang jauh lebih baik daripada sinkronisasi penuh.
Jika Anda masih bersikeras untuk menjaga semuanya tetap sinkron, Anda mungkin ingin membuat semacam penghitung langkah atau bingkai, jadi semua klien hanya memproses satu langkah logika, lalu menyinkronkan data mereka, dll. Perlu diingat bahwa ini bisa menjadi bandwidth baik intensif dan laggy, jadi saya tidak akan merekomendasikan melakukan itu kecuali Anda punya banyak data sebaliknya dan gameplay Anda berbasis giliran (misalnya gim gaya Artillery / Worms).