Jika Anda belum melakukannya, saya sarankan Anda untuk membaca dua artikel yang mendalam tetapi dapat dimengerti ini: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking dan http://fabiensanglard.net/quake3/network.php .
Ini menjelaskan mengapa disarankan untuk menggunakan pengiriman paket 'interval tetap'. Singkatnya, itu sebenarnya terutama penting untuk paket yang dikirim oleh server.
Mengirim paket memiliki biaya tetap, dan ukuran maksimum paket jaringan sekitar 1,5 KB. Jadi jika Anda memiliki misalnya 16 pemain di server Anda, setiap frame ketika Anda menghitung pergerakan pemain, kode naif dapat mengirim paket pembaruan ke setiap pemain setelah setiap resolusi gerakan, jadi 16 * 16 = 256 paket. Jika Anda memiliki framerate 30, itu adalah 7680 paket.
Pendekatan yang lebih baik, adalah membuat buffer di setiap awal frame, menggabungkan di dalamnya 16 posisi Anda yang diperbarui, dan kemudian mengirimkannya ke 16 pemain Anda.
Anda sekarang hanya mengirim 480 paket per detik untuk hasil yang sama.
Dalam kasus pemain-ke-server, itu berarti Anda harus mengirim, dalam paket yang sama, maksimum data, seperti; posisi tampak, tindakan yang disebut bingkai ini dan sebagainya.
Tentang bagian kedua dari pertanyaan Anda - cara saya memilih untuk mengurangi sensasi jeda adalah dengan mengirim informasi ini ke server pada setiap frame:
posisi aktual pemain saat ini (digunakan oleh server untuk memeriksa apakah sisi server dan posisi sisi pemain tidak terlalu tersinkronisasi).
Perkiraan posisi pemain dalam 1 detik: dihitung oleh klien: jika pemain tidak mengubah arah mouse dan meninggalkan keyboard dalam kondisi saat ini selama 1 detik, di mana akan menjadi pemain? (kami tidak peduli tentang tabrakan) Jika pemain tidak bergerak, maka posisinya yang diperkirakan dalam 1 detik adalah posisi saat ini.
Posisi yang dia lihat.
Setiap kali server menerima informasi ini, ia memperbarui posisi masa depan dan melihat posisi, dan entitas pemain akhirnya bergerak menuju posisi masa depannya.
Pemain tidak pernah benar-benar disinkronkan, tetapi input input instan (paling penting bagi saya) dan saya menemukan posisi prediksi cukup akurat untuk saya.