Saya pernah mencoba menulis gim sederhana dengan UDP dalam seminggu sebagai tes sekali pakai. Itu berjalan mengerikan.
Saya membuangnya lebih awal. Masalah utama yang saya miliki adalah mengembalikan keadaan permainan semua pemain / musuh / objek ke keadaan lama dan memajukan game ke titik waktu pemain itu bermain (yaitu setengah detik sebelum melompat. Sedikit awal atau terlambat bisa membuat pemain ketinggalan lompatan)
Mungkin metode ini bukan cara termudah? Saya menduga hal itu terjadi tetapi saya merancang kesalahan sejak awal dan menyadari pada akhir hari ke-2. (jadi saya tidak belajar terlalu banyak atau menghabiskan banyak waktu)
Untuk saya dan orang lain, Apa yang terlibat untuk permainan UDP sederhana dan bagaimana cara menulisnya? Atau bagaimana cara mengatasi masalah prediksi yang dikembalikan ke kondisi semula.
Saya akan menandai ini sebagai CW bc saya tahu akan ada banyak jawaban yang bermanfaat.
sumber
Menggulir sendiri bisa menjadi hal yang mendidik, tetapi Anda sering menyelesaikan lebih banyak jika dapat memanfaatkan implementasi yang ada (atau setidaknya mulai dari sana).
Saya telah menggunakan ENet dan Raknet . Saya hanya menggunakan Enet dalam permainan sederhana tapi itu melakukan apa yang saya butuhkan. Enet menggunakan API tingkat lebih rendah dari Raknet. Raknet digunakan dalam proyek yang lebih besar. Raknet sangat kuat, tetapi ingin membuat Anda menyusun permainan di sekitar kerangka Raknet.
Enet:
Raknet:
sumber
Jika Anda punya waktu dan energi, Anda bisa mengunduh sumber Quake 3 dan mempelajarinya. Cukup mudah untuk dipahami jika Anda nyaman dengan C, dan sama-sama mudah untuk bermain-main.
Game multipemain lainnya mana yang sumbernya tersedia dan menggunakan UDP?
sumber
Jika Anda menggunakan homebrew (seperti yang saya lakukan), Anda akan belajar banyak - juga tentang hal-hal yang tidak ingin Anda ketahui. Seperti NAT traversal. Menurut caspin, Enet melewatkan itu, tetapi Anda selalu dapat menemukan beberapa kode STUN open source yang berfungsi di sebagian besar situasi.
sumber