Keterbatasan game multiplayer p2p vs client-server [ditutup]

12

Saya membaca tentang arsitektur game multi-pemain.

Sejauh ini sebagian besar artikel yang saya temukan berurusan dengan model client-server.

Saya ingin tahu apa saja batasan untuk menggunakan arsitektur p2p? "kelas" gim apa yang mungkin (atau lebih umum) untuk diterapkan dengan menggunakannya? yang bukan? dan secara umum, apa perbedaan utama dan keterbatasannya terhadap model client-server.

spaceOwl
sumber
terkait gamedev.stackexchange.com/questions/3887/…
Ciro Santilli 冠状 病毒 审查 六四 六四 事件 法轮功
Sebagai contoh gim P2P sejati, Anda dapat melihat Gunz: Duel, yang memiliki masalah besar dalam multipemain dan peretasan karena ini.
fhyve

Jawaban:

11

Inilah dua sen saya:

P2P :

  • Pro:
    • Tidak perlu server pusat : ini membuatnya jauh lebih murah, dan lebih layak untuk game indie beranggaran rendah.
    • Skala sangat baik (hingga titik tertentu ketika klien rata-rata tidak dapat menangani bandwidth).
    • Sangat bagus untuk distribusi data : Menyesuaikan game di mana konten yang dibuat pengguna disinkronkan secara dinamis (mis. Torrent).
    • Lebih Stabil: Tidak pernah bisa terjadi bahwa server mengalami masalah dan tidak ada yang bisa bermain (tergantung implementasi).
  • Cons:
    • Sulit diimplementasikan : jauh lebih sulit untuk membuat arsitektur P2P yang solid, daripada server-klien.
    • Sangat sulit untuk mencegah kecurangan dalam sistem seperti itu, kecuali jika Anda menunjuk rekan resmi (yang akan menghalangi manfaat dari scaling dengan baik dari P2P).
    • Keamanan sulit dicapai.
    • Koneksi internet klien juga dapat memengaruhi game untuk orang lain.
    • Latensi biasanya jauh lebih besar (meskipun bisa lebih baik ketika bergabung dengan game internet dengan banyak orang dari jaringan LAN misalnya).
    • Mungkin memerlukan penerusan porta : P2P melalui Internet memerlukan penerusan porta, dan tidak semua orang cukup teknis untuk melakukan itu. Selain itu, ISP dapat mencegah penerusan porta, dan ini menambah penghalang untuk masuk.

Server-Klien :

  • Pro:
    • Mudah diimplementasikan: Sangat mudah.
    • Jika diimplementasikan dengan baik, skala sangat baik (jika pekerjaan dapat didistribusikan di beberapa server).
    • Menyontek bisa dihindari dengan mudah (dibandingkan dengan P2P).
    • Turunkan Latensi : Jika server memiliki koneksi yang solid latensi bisa sangat rendah.
    • Koneksi internet seorang pemain tidak pernah memengaruhi permainan orang lain.
  • Cons:
    • Biaya uang Anda untuk menjalankan server : jelas tidak cocok untuk permainan gratis (kecuali jika Anda membiarkan para pemain membuat server khusus, tetapi itu mungkin masalah keamanan).
    • Jika server memiliki masalah, semua orang melakukannya.

Saya akan menganggap P2P pilihan yang baik karena koneksi internet rata-rata semakin baik, di masa depan P2P latensi mungkin tidak menjadi masalah sama sekali. Juga banyak tentang P2P tergantung pada implementasi spesifik.

Ada juga beberapa arsitektur yang menggabungkan P2P dengan Server-client.

akaltar
sumber
P2P Con: Matchmaking, kecuali ini permainan LAN, Anda tidak tahu bagaimana menemukan rekan Anda. CS: Latensi yang lebih rendah bukan ketika satu pemain di, katakanlah, Jerman dan yang lainnya berada di Australia. Masih masalah 6 tahun kemudian. CS: Harganya uang tidak banyak, kok. Server menjadi agak murah. Selain itu, Anda dapat mulai dengan hosting game di PC Anda sendiri menggunakan beberapa web-proxy untuk mengarahkannya.
badunius
2

Risiko besar dari permainan peer-to-peer adalah bahwa tanpa otoritas pusat dalam bentuk server netral, tidak ada cara untuk mencegah kecurangan. Setiap klien dapat menginterpretasikan hasil permainan seperti yang diinginkan. Beberapa game menyatakan salah satu klien sebagai tuan rumah dan membiarkannya menjadi juri, tetapi ketika klien itu adalah penipu, mereka memutuskan hasil dari keseluruhan permainan.

Dengan gim yang membutuhkan latensi rendah dan bandwidth tinggi, seperti gim lain yang membutuhkan reaksi cepat dari para pemain, Anda juga memiliki masalah bahwa tuan rumah hanya menggunakan koneksi internet tingkat konsumen, tidak duduk di pusat data dengan tulang punggung berkinerja tinggi koneksi. Itu berarti pengalaman pengguna akan menderita. Ini bukan masalah besar di game yang lebih berorientasi pada strategi, lebih lambat.

Philipp
sumber
Menggunakan model konsensus, menyontek tidak lebih merupakan masalah daripada yang terjadi pada model client-server.
Jeroen
1

Menerapkan permainan multipemain peer to peer tidak mudah dan tidak berlaku saat ini.

Masalah yang Anda miliki adalah, bahwa tidak ada rekan yang mengetahui semua rekan lain sehingga Anda memiliki beberapa lompatan untuk setiap pesan yang menghasilkan latensi yang lebih tinggi dibandingkan dengan model server klien. Lihat makalah ini untuk detail tambahan.

Permainan berbasis bulat dapat dengan mudah menggunakan protokol seperti itu karena mereka tidak terlalu bergantung pada latensi. Juga mereka biasanya hanya memiliki beberapa host dalam satu sesi sehingga satu dapat menyiarkan setiap pesan ke semua pemain lain.

Game lain yang menggunakan peer to peer hanya memilih salah satu Peers secara dinamis untuk menjadi tuan rumah game (yaitu CoD MW2), yang menghasilkan masalah seperti migrasi host jika host memutus.

Horstinator
sumber
3
Apa maksudmu "tidak berlaku saat ini"? Ada banyak game yang menggunakan P2P untuk jaringan. Juga, "tidak ada teman yang tahu semua teman lain" dikatakan salah. Sementara dalam praktiknya relay perlu didukung untuk meningkatkan ketahanan, sangat mungkin untuk memiliki topologi jaringan semua-orang yang sempurna, terutama dengan jumlah rekan kecil atau di LAN di mana tidak ada gangguan router NAT.
Tapio
@Tapio Tentu saja dimungkinkan untuk membangun jaringan p2p untuk game tetapi akan terbatas dalam hal latensi, jumlah pengguna atau lingkungan di mana ia digunakan. Untuk alasan itu kebanyakan game tidak menggunakan pendekatan p2p.
Horstinator
@Horstinator Saya tahu tentang permainan yang menggunakan P2P untuk permainan FPS, ia dengan kuat mendukung 50-100 pemain tanpa masalah latensi apa pun. (Disebut perang stickman untuk siapa saja yang peduli)
akaltar
@akaltar Apakah ini open source? Saya ingin melihat bagaimana mereka melakukannya.
Horstinator
@Horstinator Sayang sekali, tapi sejauh yang saya tahu tidak. Anda bisa bertanya kepada pembuatnya di forum (ini proyek yang sangat kecil, jadi seseorang harus merespons).
akaltar