Untuk membuat game seperti jaringan RTS, saya telah melihat sejumlah jawaban di sini menyarankan untuk membuat game sepenuhnya deterministik; maka Anda hanya perlu mentransfer tindakan pengguna satu sama lain, dan ketinggalan apa yang ditampilkan sedikit untuk "mengunci" input semua orang sebelum bingkai berikutnya diberikan. Maka hal-hal seperti posisi unit, kesehatan, dll. Tidak perlu terus diperbarui melalui jaringan, karena simulasi setiap pemain akan persis sama. Saya juga mendengar hal yang sama yang disarankan untuk membuat replay.
Namun, karena perhitungan floating-point adalah non-deterministik antar mesin, atau bahkan antara kompilasi berbeda dari program yang sama pada mesin yang sama, apakah ini benar-benar mungkin dilakukan? Bagaimana kita mencegah fakta itu menyebabkan perbedaan kecil antara pemain (atau tayangan ulang) yang bergejolak di sepanjang permainan ?
Saya pernah mendengar beberapa orang menyarankan menghindari angka floating-point sama sekali dan menggunakan int
untuk mewakili hasil bagi sebagian, tetapi itu tidak terdengar praktis bagi saya - bagaimana jika saya perlu, misalnya, mengambil kosinus sudut? Apakah saya serius perlu menulis ulang seluruh perpustakaan matematika?
Perhatikan bahwa saya terutama tertarik pada C #, yang sejauh yang saya tahu, memiliki masalah yang sama persis seperti C ++ dalam hal ini.