Apa yang terlibat untuk game UDP sederhana?

17

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.

pengguna1047
sumber

Jawaban:

9

Glenn Fiedler telah menulis serangkaian artikel yang sangat baik tentang ini, yang mencakup hampir semua konsep dasar.

Falstro
sumber
Artikel Determinisme Floating Point mengejutkan saya. Status Sinkronisasi yang terlalu buruk tidak dapat dilakukan karena itu yang ingin saya baca. Meskipun Determinisme Floating Point memang menjawab banyak pertanyaan.
Tak satu pun dari artikel tersebut yang membahas tentang sinkronisasi negara, yang ia tanyakan
BlueRaja - Danny Pflughoeft
3

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:

  • Manajemen Koneksi
  • Pengurutan
  • Saluran
  • Keandalan
  • Fragmentasi dan Perakitan Ulang
  • Pengumpulan
  • Kemampuan beradaptasi
  • Portabilitas
  • Kebebasan

Raknet:

  • Replikasi objek
  • Autopatcher
  • Koneksi aman
  • Lapisan komunikasi yang kuat (pada dasarnya semua fitur Enets digulung dalam satu item)
  • Panggilan prosedur jarak jauh
  • Komunikasi suara
  • Punchthrough NAT
deft_code
sumber
+1 untuk ENet, saya telah menggunakannya untuk sementara waktu sekarang untuk klien dan mereka menyukainya.
Len Holgate
Dia bertanya tentang sinkronisasi negara - jawaban ini tidak ada hubungannya dengan itu
BlueRaja - Danny Pflughoeft
-1, alasan yang sama dengan BlueRaja
Jonathan Dickinson
2

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?

Peredam
sumber
1
Ada juga artikel yang menjelaskan kode tersebut. trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking
zooropa
0

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.

Jonas Byström
sumber