Mengapa MMORPG masih menggunakan banyak server?


18

MMORPG, beberapa MOBA seperti League of Legends atau bahkan StarCraft 2 biasanya memaksa Anda untuk memilih server. Biasanya mereka adalah AS, UE dan LAUT, di MMORPG banyak per lokasi. Saya dapat melihat bahwa itu diperlukan beberapa tahun yang lalu, tetapi sekarang dengan munculnya AWS dan penawaran serupa yang memungkinkan Anda untuk meningkatkan "kekuatan server" Anda dengan mulus, mengapa masih ada server yang terpisah?

Kereta pemikiran saya adalah seperti ini (menggunakan Star Wars: The Old Republic sebagai contoh): - Anda selalu berada di satu planet, "contoh" yang terisolasi dari planet lain. - Jika ada terlalu banyak orang di satu planet, SW: TOR menciptakan contoh dunia baru dan menempatkan pemain di sana. - Jika Anda meninggalkan instance dunia / switch Anda memiliki layar memuat

Jadi mengapa game tidak dapat membuat instance untuk planet ini. Contoh ini (dan hanya yang ini) memiliki data Anda saat ini di basis datanya dan mengelola x pemain. Begitu pemain x-50 berada dalam instance ini, server baru akan menyala dan orang baru akan menelurkan instance tersebut. 50 tempat dicadangkan untuk beralih ke grup Anda, dll.

Mungkin ada contoh untuk ketiga wilayah utama untuk menjaga latensi rendah, tetapi itu akan memungkinkan Anda untuk tetap bermain dengan pemain lain yaitu LAUT jika Anda bisa hidup dengan penundaan 140 ms (yang masih belum ada apa-apa).

Setiap kali Anda mengganti instance atau melakukan perjalanan ke dunia lain, server Anda saat ini memberikan semua data Anda ke server berikutnya, memastikan Anda tidak memerlukan satu database terpusat besar. Anda masih dapat memiliki satu yang mendapat pembaruan secara berkala untuk keperluan analisis.

Ketika Anda logout atau server kehilangan koneksi, data kemudian dapat ditransfer ke database besar yang dioptimalkan untuk menyimpan data. Server instance kemudian dapat dioptimalkan untuk throughput tinggi.

Apakah ada alasan khusus ini tidak akan berhasil? Apakah ada masalah lain yang saya lewatkan?


Bagaimana dengan fakta bahwa banyak dari game-game itu harus menulis ulang bagian mesin mereka yang sedang hingga besar untuk mendukungnya? Dan waktu dan uang itu bisa dihabiskan lebih baik dengan menambahkan lebih banyak konten.
Xavon_Wrentaile

Saya tidak menyarankan untuk mengubah gim yang ada tetapi lebih banyak mengapa desainnya dipilih sebagaimana mula-mula.
mmlac

Jawaban:


12

MMORPG, beberapa MOBA seperti League of Legends atau bahkan StarCraft 2 biasanya memaksa Anda untuk memilih server. Biasanya mereka adalah AS, UE dan LAUT, di MMORPG banyak per lokasi. Saya dapat melihat bahwa itu diperlukan beberapa tahun yang lalu, tetapi sekarang dengan munculnya AWS dan penawaran serupa yang memungkinkan Anda untuk meningkatkan "kekuatan server" Anda dengan mulus, mengapa masih ada server yang terpisah?

AWS bukanlah solusi yang jelas. Mungkin mahal, dalam beberapa kasus lebih dari menggunakan pusat data in-house (untuk penerbit biaya ini dapat diamortisasi di beberapa produk, misalnya). Selain itu, mungkin ada kekhawatiran tentang menyimpan binari sensitif dan log pada perangkat keras di luar kendali seseorang. Akhirnya, daya komputasi yang sebenarnya tidak selalu menjadi alasan untuk memisahkan populasi "server" dalam MMO.

Kereta pemikiran saya adalah seperti ini (menggunakan Star Wars: The Old Republic sebagai contoh): - Anda selalu berada di satu planet, "contoh" yang terisolasi dari planet lain. - Jika ada terlalu banyak orang di satu planet, SW: TOR menciptakan contoh dunia baru dan menempatkan pemain di sana. - Jika Anda meninggalkan instance dunia / switch Anda memiliki layar memuat

Guild Wars 2, pada kenyataannya, melakukan sesuatu yang sangat mirip dengan ini. Peta disimulasikan oleh proses server individual, dan instance luapan dibuat sesuai kebutuhan berdasarkan tutup populasi peta dan beberapa heuristik untuk kinerja peta.

Guild Wars 2 memiliki dua pusat data utama, satu di AS dan satu di Eropa - ada beberapa obrolan silang antara pusat data tersebut (terutama untuk pos perdagangan dan sistem perdagangan) tetapi secara umum mereka ada dalam konfigurasi itu sehingga para pemain di Jerman, Prancis, dan lain-lain tidak perlu menderita latensi yang lebih tinggi untuk server game AS. Di dalam pusat data pemain diurutkan menjadi "dunia asal" (atau "pecahan" dalam istilah bahasa setempat); tetapi salah satu alasan ini dilakukan adalah untuk meminimalkan jumlah pemain yang dapat dilihat oleh klien dan perlu dilaporkan kepada mereka. Aspek sisi klien dari masalah itu tidak akan diselesaikan dengan meningkatkan ke lebih banyak perangkat keras server. Ledakan kombinatorial sisi server dari jalur pelaporan tambahan mungkin,

Apakah ada alasan khusus ini tidak akan berhasil? Apakah ada masalah lain yang saya lewatkan?

Anda kehilangan beberapa hal, tetapi sebagian besar detail (dan saya tidak akan menjelaskan bagaimana kita menanganinya karena mereka dianggap rahasia dagang) tidak relevan dengan jenis pertanyaan tingkat tinggi seperti tinjauan umum. Saya pikir kelemahan terbesar dalam proposal Anda adalah mencoba untuk menyerahkan data pemain ke server baru ketika pemain mentransfer. Itu adalah masalah kompleks yang tidak akan skala baik, mungkin dalam praktiknya lebih baik untuk benar-benar memiliki data pemain pada sistem server terpusat. Ini cukup bisa dilakukan jika Anda tidak menggunakan database dan penyimpanan catatan runtime utama untuk data.


@Josh, apakah Anda akan mengatakan bahwa hak distribusi juga merupakan faktor besar dalam keputusan untuk membuat dan memelihara server terpisah untuk wilayah terpisah di dunia?
Trevor Powell

Saya tidak yakin apa yang Anda maksud, apakah Anda berbicara tentang menghadirkan versi UE sebagai SKU berbeda untuk tujuan penyesuaian harga (dan akibatnya ingin membedakan server backend juga?).

7

Sebagian besar tentang latensi.

Pertama, memiliki server yang secara geografis dekat dengan Anda mengurangi latensi. Jika server berada di sisi lain dunia maka Anda akan melihat lebih banyak latensi daripada jika server hanya berjarak beberapa lompatan.

Kedua, layanan seperti AWS tidak dirancang untuk pekerjaan waktu nyata. Mereka dirancang untuk throughput tinggi dengan mengorbankan sedikit latensi. Jika halaman web Anda membutuhkan 250ms lebih lama dari biasanya untuk dimuat pada satu kesempatan, tidak ada yang peduli, tetapi jika game Anda membutuhkan 250ms lebih lama dari biasanya untuk memproses pesan, gameplay dapat sangat terpengaruh. Inilah sebabnya mengapa MMO hampir selalu di-host pada perangkat keras khusus.

Tapi ini juga tentang desain game. Jika Anda membuatnya tampak seperti semua orang berada di dunia yang sama tetapi harus membagi zona ketika sudah terlalu penuh, orang-orang menjadi frustrasi karena mereka tidak dapat menemukan teman-teman mereka di tempat pertemuan yang ditentukan. Masalah semacam ini akan meluas ke guild, pertempuran PvP massal, dll. Para pemain sudah terbiasa dengan instance belakangan ini, tetapi ada area tertentu yang diharapkan akan dibagikan. Jika Anda memiliki server yang benar-benar terpisah maka setidaknya tidak ada kejutan di sini.

Akhirnya, ada masalah teknologi lainnya untuk dipertimbangkan. Bahkan jika setiap instance cukup terisolasi dari yang lain, biasanya masih ada berbagai layanan yang perlu berkomunikasi di antara mereka. Komunikasi lintas-server sulit dilakukan dengan baik dalam perangkat lunak waktu nyata dan telah menyebabkan berbagai eksploitasi dan bug pada MMO di masa lalu. Khususnya menyerahkan data pemain yang otoritatif dari satu ke yang lain berisiko. Oleh karena itu pengembang sering keliru pada sisi kehati-hatian dan telah dengan jelas melukiskan batas antar server, mengurangi jumlah lalu lintas yang perlu dilewati.


"Jika Anda memiliki server yang benar-benar terpisah maka setidaknya tidak ada kejutan di sini." Nah, kamu tidak bisa bermain dengan teman-temanmu. Dalam SW: TOR ia memberi tahu Anda contoh pemimpin grup itu dan Anda dapat segera beralih ke itu. Saya (secara pribadi) berpikir ini sudah cukup. Terima kasih atas wawasan teknisnya, ini benar-benar membantu saya memahami masalah yang ada!
mmlac

1
Tentu saja beberapa gim dapat membuat Anda berganti seperti itu, tetapi itu bekerja jauh lebih baik untuk ruang bawah tanah dan area pencarian daripada untuk pertemuan bersama dan area sosial. Pada akhirnya, meskipun masalah teknis lebih penting.
Kylotan

Dan seperti yang disebutkan dalam komentar saya kepada Philipp, saya tidak berpikir Anda bisa menjalankan ibukota dan kota-kota utama tanpa instance.
mmlac

3

sebenarnya saya percaya jawabannya bukan terkait jaringan atau arsitektur melainkan terkait permainan, biasanya dalam jenis permainan ini ada acara, dan acara ini diatur menurut jangka waktu yang paling nyaman bagi orang-orang yang bermain di server, dan itu biasanya terkait dengan zona waktu tempat orang tinggal, karenanya UE dan AS, dll.

Alasan lain adalah untuk membuat pemisahan antara dunia sehingga jika ada kelompok yang terlalu kuat mereka tidak akan mengacaukan permainan untuk semua orang yang bermain, dan Anda selalu dapat pindah ke dunia yang kurang "menantang".

Di sisi kemampuan CPU server, meskipun mesin saat ini cukup kuat, selalu ada batasan untuk apa yang dapat ditangani oleh satu mesin, dan karenanya menciptakan pemisahan antara dunia diperlukan untuk melindungi permainan dari kelebihan beban, dan membiarkan orang memilih dunia mana yang mereka inginkan. bermain sehingga mereka bisa bermain dengan teman-teman mereka. Penskalaan secara horizontal bukan hanya masalah memiliki mesin, Anda membutuhkan aplikasi Anda untuk dapat bekerja dalam arsitektur skala horizontal, dan itu tidak mudah ketika Anda memiliki ribuan "tindakan" yang terjadi bersamaan dengan kemungkinan pengaruh satu sama lain, dan perlu menyinkronkan semuanya. Saya pikir akan sangat sulit untuk melakukannya di beberapa mesin.


Yah setidaknya di SW: TOR hanya ada pengaruh pada instance Anda saat ini. Yang berarti atasan dunia yang Anda bunuh dalam satu contoh, akan tetap tidak terluka / mati pada contoh 2. Jadi pemisahan sudah ada di tempat. Saya dapat melihat alasan untuk berbagai server di sisi daya, tetapi di bawah ikat pinggang, mereka dapat menskala seperti itu juga, sehingga Anda tidak memiliki batasan populasi buatan. Waktu seharusnya tidak menjadi perhatian, karena acara lokal dihadiri oleh masyarakat setempat. Jika Anda sedang online, mengapa Anda tidak boleh bergabung? Hanya saja tidak disesuaikan untuk zona waktu Anda.
mmlac

Saya dulu bermain Lineage2 di server AS saat berada di zona waktu UE (sebelum mereka membuat server Uni Eropa), dan saya dapat memberitahu Anda itu menyebalkan! Saya harus bangun jam 3 pagi jika saya ingin berpartisipasi dalam penggerebekan dan pengepungan kastil karena saat itulah semuanya terjadi. Jadi waktu jelas menjadi perhatian.

Ya, waktu adalah masalah ketika Anda hanya memiliki satu server di zona waktu yang salah. Dengan ide saya, Anda memiliki orang-orang yang online di seluruh dunia. Jika Anda ingin berpartisipasi dalam serangan jam 3 pagi itu, silakan! Saat ini, Anda SOL dan harus menunggu sampai serangan server "Anda" sudah habis - yang mungkin setiap Sabtu jam 10 malam - di mana Anda tidak punya waktu. Jadi pergilah untuk serangan Uni Eropa pada jam 3 sore. Apakah itu masuk akal?
mmlac

2

Apa yang salah dengan pemasangan otomatis? Ketika lokasi menjadi terlalu padat, Anda hanya menempatkan 1000 pemain dalam 10 kejadian berbeda.

Masalahnya adalah bahwa game online adalah tentang komunitas. Bayangkan Anda mengatur pertemuan dengan orang-orang yang Anda temui sebelumnya, dan ketika Anda semua ada di sana pada waktu tertentu Anda tidak bertemu satu sama lain karena Anda semua ada dalam kasus yang berbeda? Itu menjengkelkan dan merusak perendaman.

Bagaimana ini bisa dicegah? Itu bisa dilakukan dengan menempatkan setiap pemain dalam instance yang sama setiap saat, sehingga ketika Anda bertemu pemain lain sekali, Anda dapat yakin untuk bertemu pemain ini lagi ketika Anda berdua berada di lokasi yang sama. Anda tidak akan pernah bertemu dengan para pemain yang ditugaskan ke instance lain.

Tetapi bagaimana ketika Anda ingin bertemu seseorang dari luar permainan? Seperti teman dalam kehidupan nyata yang Anda undang untuk bermain game dengan Anda? Untuk memungkinkan hal itu terjadi, Anda perlu kemampuan untuk memilih contoh saat membuat karakter Anda. Suka dari daftar contoh dengan nama yang mudah diingat. Sayangnya, nama "instance" tampaknya membingungkan bagi pengguna rata-rata. Mereka tidak terbiasa dengan kata itu. Bukankah lebih baik menggunakan istilah yang biasa mereka gunakan? Istilah seperti ... Server ?


1
Jangan bingung istilah instance dan server. Contoh memungkinkan Anda untuk beralih antara satu sama lain. Server biasanya berupa atom. Tidak masuk dan keluar Untuk bertemu orang: Letakkan semua orang dalam satu contoh dan ibukota Anda akan memiliki 20.000 orang di dalamnya. Pada waktu bersamaan. Itu tidak akan berhasil atau tidak diinginkan, itu sebabnya Anda harus membuat instance. Cara berpikir saya adalah menjadikan hal ini bersifat global alih-alih terbatas pada server.
mmlac

Tapi saya pikir intinya adalah bahwa Anda biasanya ingin orang-orang memiliki pengalaman yang dapat diprediksi di area yang dibagikan secara sengaja. Anda harus mempartisi mereka untuk alasan kinerja, tetapi seharusnya dibagi dengan 'semua orang', jadi idealnya Anda memiliki partisi tetap (mis. Server) daripada variabel (mis. Instance). Sangat sedikit MMO yang saya tahu akan membuat contoh jenis area ini, karena itu dianggap penting untuk alasan komunitas dan pengelompokan yang semua orang dapat melihat semua orang di sana.
Kylotan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.