Haruskah tuan rumah permainan menjadi otoritas, atau klien bodoh lainnya?

15

Saat merancang game multipemain jaringan tempat satu pemain host dan yang lainnya terhubung, ada dua strategi yang saya ketahui:

  • Buat permainan pemain tuan rumah menjadi otoritas , dengan semua pemain lain sebagai klien bodoh berusaha mengejar ketinggalan dengan kondisi permainan saat ini. Dalam kode, harus ada banyak kasus khusus, tergantung pada apakah pemain saat ini adalah tuan rumah atau tidak.
  • Jadikan host sebagai klien bisu seperti orang lain dengan menjalankan server khusus yang tersembunyi di utas lainnya. Server khusus akan menjadi otoritas, dan tuan rumah akan terhubung ke sana seperti orang lain (melalui localhost).

Apa kelebihan / kekurangan masing-masing? Yang mana yang paling sering digunakan (atau apakah itu berbeda menurut jenis / ukuran game)?

BlueRaja - Danny Pflughoeft
sumber
Kasus pertama yang Anda gambarkan dapat menjadi salah satu bentuk jaringan P2P (dengan satu klien otoritatif) dan biasanya jauh lebih kompleks, dan lebih sulit untuk diterapkan dan dipelihara.
akaltar

Jawaban:

13

Pendekatan bodoh-klien adalah yang terbaik dari sudut pandang desain murni - sangat membatasi jumlah kode yang berbeda yang Anda butuhkan antara host dan klien, dan memungkinkan server untuk berjalan secara tidak sinkron. Kelemahannya adalah bahwa mesin host membutuhkan sumber daya tambahan - tapi saya rasa itu selalu terjadi.

DeadMG
sumber
8

Di antara dua opsi ini, pendekatan bodoh-klien tentu saja paling baik karena alasan yang disebutkan DeadMG.

Ada opsi lain yang membuat setiap klien menjadi otoritas, itu memiliki keuntungan dari klien-bodoh bahwa semua rekan berbagi kode yang sama. Keuntungan lainnya adalah bahwa itu mungkin jauh lebih adil jika Anda menetapkan aturan yang benar karena tidak ada yang memiliki keunggulan 0-lag-ke-server.

Tentu ini bisa agak sulit untuk diterapkan tergantung pada jenis permainan. Protokol Anda harus berurusan dengan penyelesaian konflik antar teman, mungkin menggunakan semacam skema kepemilikan. Hanya menyisakan konflik tempat 2 rekan mengklaim kepemilikan objek game yang sama.

Protokol multipemain Goerling Peer-2-Peer mungkin memberi Anda lebih banyak detail tentang pendekatan ini.

Tinco
sumber
1
gamedev.stackexchange.com/questions/3887/… Ini beberapa info lagi :)
michael.bartnett
Menarik. Posting itu mengklaim bahwa ini adalah cara "sebagian besar judul strategi" menerapkan jaringan. Apakah ini benar? Apakah ini bagaimana mis. Pekerjaan Command and Conquer and Starcraft ?
BlueRaja - Danny Pflughoeft
@BlueRaja, beginilah cara kerja Starcraft, ya. Di Starcraft tidak ada otoritas sama sekali. Warcraft III dan Starcraft II memiliki model pertukaran pesan yang lebih terpusat, penanganan lag dan disconnect, tetapi pada dasarnya sama karena setiap klien memiliki status permainan sendiri.
Rotsor
Keuntungan lain dari model jaringan ini adalah memungkinkan untuk mendukung negara dunia bersama yang konsisten besar dengan lalu lintas sinkronisasi minimal.
Rotsor
Kerugian terbesar dari model ini adalah kerentanannya yang melekat pada "maphacking", yaitu mengungkapkan beberapa data keadaan permainan yang biasanya tidak bisa dilihat oleh pemain.
Rotsor