Desain mesin permainan: Multiplayer dan mendengarkan server [ditutup]

10

Mesin game saya sekarang terdiri dari bagian singleplayer yang berfungsi. Saya sekarang mulai berpikir tentang bagaimana melakukan bagian multiplayer.

Saya telah menemukan bahwa banyak game sebenarnya tidak memiliki mode singleplayer nyata, tetapi ketika bermain sendiri Anda sebenarnya hosting server lokal juga, dan hampir semuanya berjalan seolah-olah Anda berada di multiplayer (kecuali bahwa paket data dapat dilewati melalui rute alternatif untuk kinerja yang lebih baik)

Mesin saya perlu refactoring besar untuk beradaptasi dengan model ini. Akan ada tiga mode yang memungkinkan: Klien yang berdedikasi, Server khusus, dan Client-Server (mode mendengarkan)

  • Seberapa sering model server mendengarkan digunakan dalam industri game?
  • Apa kelebihannya?
  • Opsi apa lagi yang saya miliki?
Vaillancourt
sumber
4
Pertanyaan pertama cukup tidak relevan. Mengapa penting bagaimana industri melakukannya? Mereka tidak melakukan segalanya dengan cara terbaik.
Bebek Komunis

Jawaban:

11

Saya akan melihat apakah saya bisa menjawab ini sebaik mungkin:

Seberapa sering model server mendengarkan digunakan dalam industri game?

Ketika datang ke sebagian besar game online, Anda akan menemukan bahwa sebagian besar game menggunakan arsitektur client-server, meskipun tidak selalu dengan cara yang Anda pikirkan. Ambil game Sumber apa pun, misalnya. Sebagian besar akan menggunakan klien-server standar dengan arsitektur server master (untuk daftar game yang tersedia), di mana satu orang akan menjadi tuan rumah server khusus dan siapa pun dengan klien dapat bergabung dengannya.

Namun, Anda memiliki beberapa game dan layanan, misalnya Left 4 Dead, League of Legends, dan beberapa game XBox Live, yang menggunakan pendekatan yang sedikit berbeda. Ini semua menggunakan arsitektur client-server dengan server pengendali. Gagasan utama di sini adalah bahwa seseorang membuat server khusus yang tidak "menjalankan" permainan apa pun. Server pengendali akan membuat semacam "lobi", dan ketika permainan dimulai, server pengendali akan menambahkannya ke antrian, dan ketika giliran lobi itu, ia akan memilih server khusus yang cocok (dalam hal lokasi / kecepatan, ketersediaan, banyak faktor), dan tetapkan pemain ke server itu. Hanya kemudian server akan benar-benar "menjalankan" permainan. Itu ide yang sama, tetapi sedikit disederhanakan, karena klien tidak perlu "memilih" server,

Tentu saja, model client-server terbesar adalah model MMO, di mana satu atau banyak server menjalankan dunia persisten yang menangani hampir semua data dan logika. Beberapa game yang lebih terkenal menggunakan model ini adalah World of Warcraft, Everquest, atau sejenisnya.

Jadi di mana server pendengar cocok di sini? Sejujurnya, tidak terlalu baik, namun, Anda masih akan menemukan banyak game yang menggunakannya. Misalnya, sebagian besar game Sumber memungkinkan server pendengaran dibuat, dan banyak game XBox Live melakukannya (sudah lama, tapi saya yakin Counter Strike melakukannya, serta Quake 4, dan banyak lainnya). Secara umum, mereka tampaknya disukai karena kelebihan dari model client-server, yang membawa kita ke poin berikutnya.

Apa kelebihannya?

Pertama dan terpenting: kinerja. Dalam model client-server, klien akan menangani perubahan lokal (seperti input, grafik, suara, dll) pada setiap siklus permainan. Pada akhir siklus, itu akan mengemas data yang relevan (seperti, apakah pemain bergerak? Jika demikian, ke mana? Di mana dia mencari sekarang? Kecepatan? Apakah mereka menembak? Jika demikian, informasi tentang peluru. Dll) dan mengirimkannya ke server untuk diproses. Server akan mengambil data ini dan menentukan apakah setiap hal valid seperti, apakah pengguna bergerak dengan cara yang menunjukkan peretasan (lebih lanjut tentang itu nanti), apakah langkah tersebut valid (apa pun yang menghalangi?), Apakah peluru dari pemain 1 pemain hit 2 ?, dan banyak lagi. Kemudian server mengemas ini, dan mengirimkannya ke klien, yang kemudian memperbarui apa pun yang diperlukan, seperti menyesuaikan kesehatan jika pemain ditembak, menendang pemain jika ditentukan bahwa mereka meretas, dll.

Namun, server yang mendengarkan harus menangani semua ini pada saat yang bersamaan. Karena saya menganggap Anda sudah terbiasa dengan pemrograman, Anda mungkin menyadari betapa banyak daya yang dapat dirampok oleh sebuah game dari komputer, terutama yang didesain dengan buruk. Menambahkan pada pemrosesan jaringan, pemrosesan keamanan, dan lebih banyak lagi serta permainan klien, Anda dapat melihat di mana kinerja akan mendapat pukulan serius, setidaknya sejauh hanya pemrosesan standar berjalan. Selain itu, sebagian besar server berjalan pada jaringan cepat, dan server dirancang untuk menahan lalu lintas jaringan. Jika jaringan server pendengaran lambat, seluruh gim akan menderita.

Keamanan kedua , seperti yang dinyatakan sebelumnya, salah satu hal utama yang akan dilakukan server adalah menentukan apakah pemain mengeksploitasi permainan. Anda mungkin telah melihat ini sebagai Punkbuster, VAC, dll. Ada seperangkat aturan yang sangat rumit yang menjalankan program-program ini, misalnya, menentukan perbedaan antara seorang hacker, dan hanya pemain yang sangat bagus. Akan sangat buruk untuk gim Anda jika Anda tidak dapat menangkap peretas, tetapi lebih buruk lagi jika Anda melakukan tindakan terhadap tersangka yang salah.

Server pendengaran umumnya tidak dapat menangani permainan klien, pemrosesan server, dan deteksi retasan, dan dalam kebanyakan kasus, detektor seperti Punkbuster sangat sulit untuk, jika bukan tidak mungkin untuk dijalankan pada server pendengaran, karena itu sulit untuk berfungsi dengan benar tanpa kekuatan pemrosesan yang diperlukan, karena umumnya logika permainan diprioritaskan daripada keamanan, dan jika detektor tidak diizinkan untuk memproses untuk satu bingkai, ia mungkin kehilangan data yang diperlukan untuk menghukum seseorang.

Terakhir, gameplay . Hal terbesar tentang server adalah bahwa mereka gigih, yang berarti bahwa meskipun semua orang pergi, server akan terus berjalan. Ini berguna jika Anda memiliki server populer yang tidak memiliki banyak aktivitas di malam hari, orang masih dapat bergabung ketika mereka siap untuk bermain dan tidak harus menunggu untuk dibawa kembali online.

Dalam server pendengaran, kelemahan utama adalah bahwa segera setelah klien hosting server pendengaran pergi, permainan harus ditransfer ke pemain lain (membuat lul dalam permainan yang dapat berlangsung beberapa menit dalam beberapa kasus), atau harus berakhir sepenuhnya . Ini tidak disukai di server besar, karena tuan rumah harus tetap online (membuang slot di server, dan komputernya, yang juga bisa memperlambat game), atau mengakhiri permainan untuk semua orang.

Namun, terlepas dari masalah ini, server mendengarkan memang memiliki beberapa keunggulan.

Mudah diatur : Kebanyakan server yang mendengarkan tidak lebih dari menekan "Game baru" dan membiarkan orang bergabung. Ini mudah bagi orang-orang yang hanya ingin bermain dengan teman-teman mereka, dan tidak ingin harus mencoba menemukan server khusus yang kosong, atau bermain dengan orang lain.

Baik untuk pengujian : Jika seseorang memiliki server khusus dan ingin mengubah konfigurasinya, umumnya lebih baik untuk mengujikonfigurasi terlebih dahulu. Pengguna harus membuat cadangan dari server khusus dan membabi buta dengan perubahan, dengan satu-satunya pilihan adalah memutar kembali jika terjadi kesalahan, membuat server khusus baru untuk mengujinya, dari hanya membuat server mendengarkan sederhana untuk ujilah mereka. Dan dengan poin 1, ini umumnya lebih mudah untuk memulai dan mengonfigurasi. Ini terutama benar, karena sebagian besar server khusus tidak berada dalam akses langsung administrator (sebagian besar server khusus disewa dari lokasi yang jauh). Diperlukan waktu lebih lama untuk mendorong perubahan konfigurasi, serta perintah untuk memulai kembali, dll, ke lokasi yang jauh dari mesin yang sedang digunakan administrator.

Lebih sedikit sumber daya : Di sebagian besar server khusus, pengguna dengan IP yang sama tidak dapat terhubung ke server khusus (artinya, klien harus meng-host server, atau bermain, mereka tidak dapat melakukan keduanya). Jika klien ingin bermain di servernya sendiri, mereka biasanya akan membutuhkan mesin kedua untuk meng-host server, atau membeli atau menyewa server khusus sehingga mereka dapat benar-benar bermain di dalamnya. Server dengarkan hanya membutuhkan satu mesin, yang mungkin merupakan satu-satunya hal yang dapat digunakan klien.

Dalam kedua kasus tersebut, keduanya memiliki kelebihan dan kekurangan, dan Anda perlu menimbangnya dengan apa yang Anda ingin desain dan implementasikan. Dari pengalaman saya, saya percaya bahwa jika Anda menerapkan server mendengarkan itu akan digunakan, jika tidak lain untuk beberapa pengguna yang ingin bermain-main dengan teman, atau menguji pengaturan.

Akhirnya:

Opsi apa lagi yang saya miliki?

Ini adalah kaleng industri cacing. Pada kenyataannya, semua jenis arsitektur jaringan dapat diterapkan ke permainan video. Namun, dari apa yang saya lihat, seperti kebanyakan komunikasi internet, sebagian besar bermuara pada beberapa bentuk model client-server.

Tolong beri tahu saya jika saya tidak menjawab pertanyaan Anda, atau jika Anda perlu sesuatu diperluas, dan saya akan melihat apa yang bisa saya lakukan.

shmeeps
sumber
"Di sebagian besar server khusus, pengguna dengan IP yang sama tidak dapat terhubung ke server khusus (artinya, klien harus meng-host server, atau bermain, mereka tidak dapat melakukan keduanya)." WAT? Dimana? Mengapa? Jika beberapa server memiliki batasan sewenang-wenang yang tampaknya tidak masuk akal ini, itu tidak berarti dia akan dipaksa untuk melakukan hal yang sama ketika dia menulis satu ...
o0 '.
Ini adalah artefak dari game yang lebih lama, dari saat komputer tidak bisa menangani algoritma server, perhitungan grafis dan logika game sekaligus. Banyak model server khusus akan mencegah klien yang berusaha terhubung dari mesin yang sama agar tidak berhasil terhubung, dan praktik ini masih diberlakukan di beberapa game saat ini. Saya tidak pernah mengatakan ini berlaku untuk semua model, saya juga tidak mengatakan dia harus memodelkannya dengan paradigma khusus ini. Namun, secara teknis, memungkinkan koneksi host yang sama mengalahkan tujuan dari server khusus, dan satu-satunya keuntungan adalah membiarkan server aktif saat diputuskan.
shmeeps