Saya sedang membangun game multipemain waktu nyata yang menjalankan loop 'fisika' yang sama pada klien dan server. Saya menggunakan perilaku pengembara 'mengembara' yang merupakan gerakan acak penting. Klien dan server menghasilkan angka acak yang berbeda saat menjalankan algoritma pengembaraan.
Saya bertanya-tanya bagaimana saya bisa menjaga gerakan tampak acak secara alami tetapi menggunakan beberapa konstanta yang akan memastikan klien dan server sampai pada kesimpulan yang sama.
Jawaban:
Anda dapat menggunakan benih acak . Pilih nilai 32-bit yang sama di server dan klien (atau server dapat mengirimkannya ke klien di awal). Gunakan itu sebagai benih untuk generator acak. Anda dapat mengirim seed aktual dari server ke klien dengan pembaruan status permainan. Jika Anda tidak ingin mengirimnya, Anda harus yakin bahwa klien dan server menghasilkan nomor acak yang sama dengan generator acak ini.
Apa yang harus Anda ketahui sebelum Anda memutuskan untuk tidak mengirim seed sebenarnya ke klien:
sumber
Jika server dan klien menyetujui seed, kebanyakan algoritma pengacakan akan menghasilkan nilai yang sama.
sumber