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)?
game-design
networking
multiplayer
BlueRaja - Danny Pflughoeft
sumber
sumber
Jawaban:
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.
sumber
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.
sumber