Perché i MMORPG usano ancora più server?


18

MMORPG, alcuni MOBA come League of Legends o anche StarCraft 2 di solito ti costringono a scegliere un server. Di solito sono USA, UE e MARE, in MMORPG molti per località. Vedo che era necessario alcuni anni fa, ma ora con l'avvento di AWS e offerte simili che ti consentono di ridimensionare senza problemi la tua "potenza del server", perché ci sono ancora server separati?

Il mio treno di pensieri è così (usando Star Wars: The Old Republic come esempio): - Sei sempre su un pianeta, una "istanza" isolata da altri pianeti. - Se ci sono troppe persone su un pianeta, SW: TOR crea una nuova istanza del mondo e mette i giocatori lì dentro. - Se lasci il mondo / cambia istanza hai una schermata di caricamento

Quindi perché il gioco non può creare un'istanza per questo pianeta? Questa istanza (e solo questa) ha i tuoi dati attuali nel suo database e gestisce x giocatori. Non appena i giocatori x-50 sono su questa istanza, un nuovo server si accenderà e nuove persone verranno generate su quell'istanza. I 50 punti sono riservati per il passaggio al tuo gruppo, ecc.

Potrebbe esserci un'istanza per tutte e tre le regioni principali per mantenere bassa la latenza, ma ti permetterebbe di giocare ancora con altri giocatori del SEA se riesci a vivere con un ritardo di 140ms (che non è ancora nulla di imho).

Ogni volta che cambi un'istanza o viaggi in un altro mondo, il tuo server attuale fornisce tutti i tuoi dati al server successivo, assicurandoti di non aver bisogno di un grande database centralizzato. Potresti comunque averne uno che ottiene periodicamente aggiornamenti a fini di analisi.

Quando ci si disconnette o il server perde la connessione, i dati potrebbero essere trasferiti in un enorme database ottimizzato per l'archiviazione dei dati. I server di istanza possono quindi essere ottimizzati per un throughput elevato.

C'è qualche motivo particolare per cui questo non funzionerà? Ci sono altri problemi che mi mancano?


Che dire del fatto che molti di questi giochi dovrebbero riscrivere sezioni moderate o ampie dei loro motori per supportarlo? E che tempo e denaro potrebbero essere spesi meglio aggiungendo più contenuti.
Xavon_Wrentaile,

Non ho suggerito di cambiare i giochi esistenti, ma molto di più perché il design è stato scelto così com'era.
mmlac,

Risposte:


12

MMORPG, alcuni MOBA come League of Legends o anche StarCraft 2 di solito ti costringono a scegliere un server. Di solito sono USA, UE e MARE, in MMORPG molti per località. Vedo che era necessario alcuni anni fa, ma ora con l'avvento di AWS e offerte simili che ti consentono di ridimensionare senza problemi la tua "potenza del server", perché ci sono ancora server separati?

AWS non è una soluzione così ovvia come sembra. Può essere costoso, in alcuni casi più che con l'utilizzo di data center interni (per un editore il costo di questi può essere ammortizzato su più prodotti, ad esempio). Inoltre, potrebbe esserci preoccupazione per la memorizzazione di file binari e log sensibili sull'hardware al di fuori del proprio controllo. Infine, la potenza di calcolo effettiva non è sempre la ragione per separare la popolazione "server" negli MMO.

Il mio treno di pensieri è così (usando Star Wars: The Old Republic come esempio): - Sei sempre su un pianeta, una "istanza" isolata da altri pianeti. - Se ci sono troppe persone su un pianeta, SW: TOR crea una nuova istanza del mondo e mette i giocatori lì dentro. - Se lasci il mondo / cambia istanza hai una schermata di caricamento

Guild Wars 2, infatti, fa qualcosa di molto simile a questo. Le mappe sono simulate da singoli processi del server e le istanze di overflow vengono create in base alle esigenze in base al limite della popolazione della mappa e ad alcune euristiche per le prestazioni della mappa.

Guild Wars 2 ha due principali data center, uno negli Stati Uniti e uno in Europa - c'è un po 'di chat tra quei data center (principalmente per le poste di trading e i sistemi di commercio) ma in generale esistono in quella configurazione, quindi i giocatori in Germania, Francia, ecc. Non devono subire la latenza più elevata nei server di gioco statunitensi. All'interno del data center i giocatori sono ordinati in "mondi domestici" (o "frammenti" in termini vernacolari); ma uno dei motivi è quello di ridurre al minimo il numero di giocatori che un cliente può vedere e di cui ha bisogno di segnalarli. L'aspetto lato client di quel problema non sarà risolto scalando su più hardware del server. L'esplosione combinatoria lato server di ulteriori percorsi di segnalazione potrebbe essere,

C'è qualche motivo particolare per cui questo non funzionerà? Ci sono altri problemi che mi mancano?

Ti mancano un bel po 'di cose, ma sono per lo più dettagli (e non spiegherò comunque come li gestiamo dal momento che sono considerati segreti commerciali) non rilevanti per una domanda di così alto tipo, panoramica. Penso che il più grande difetto della tua proposta sia cercare di trasferire i dati dei giocatori al nuovo server quando un giocatore trasferisce. Questo è un problema complesso che non si ridimensionerà bene, probabilmente è meglio in pratica avere effettivamente i dati di quel giocatore su un sistema centralizzato di server. È abbastanza fattibile se non si utilizzano quei database e l'archivio record di runtime primario per i dati.


@Josh, diresti che anche i diritti di distribuzione sono un fattore importante nella decisione di creare e mantenere server separati per regioni separate del mondo?
Trevor Powell,

Non sono sicuro di cosa intendi, stai parlando di presentare la versione UE come SKU diverso ai fini dell'adeguamento dei prezzi (e di conseguenza vuoi mantenere distinto anche il backend del server?).

7

Principalmente riguarda la latenza.

Innanzitutto, avere un server geograficamente vicino a te riduce la latenza. Se il server si trova dall'altra parte del mondo, vedrai più latenza che se il server si trova a pochi passi di distanza.

In secondo luogo, servizi come AWS non sono progettati per il lavoro in tempo reale. Sono progettati per un throughput elevato a scapito di un po 'di latenza. Se la tua pagina web impiega 250 ms in più del solito per caricarsi in un'occasione, a nessuno importa, ma se il tuo gioco impiega 250 ms in più del solito per elaborare un messaggio, il gameplay può essere seriamente compromesso. Questo è il motivo per cui gli MMO sono quasi sempre ospitati su hardware dedicato.

Ma riguarda anche il design del gioco. Se fai sembrare che tutti siano nello stesso mondo ma devi dividere una zona quando è troppo piena, le persone si sentono frustrate di non poter trovare i loro amici nei luoghi di incontro designati. Questo tipo di problema si estenderebbe a gilde, battaglie PvP di massa, ecc. Al giorno d'oggi i giocatori sono abituati alle istanze, ma ci sono alcune aree che dovrebbero essere condivise. Se hai server completamente separati, almeno non ci sono sorprese qui.

Infine, ci sono altre questioni tecnologiche da considerare. Anche se ogni istanza è abbastanza isolata dalle altre, di solito ci sono ancora vari servizi che devono comunicare tra loro. La comunicazione tra server è difficile da fare bene con il software in tempo reale e in passato ha portato a vari exploit e bug sugli MMO. In particolare, il trasferimento di dati autorevoli sui giocatori l'uno dall'altro è rischioso. Pertanto, gli sviluppatori spesso sbagliano con cautela e hanno chiaramente delimitato i confini tra i server, riducendo la quantità di traffico che deve attraversarli.


"Se hai server completamente separati, almeno non ci sono sorprese qui." Bene, allora non puoi giocare con i tuoi amici. In SW: TOR ti dice quale istanza è il leader del gruppo e puoi passare immediatamente ad esso. Penso (personalmente) che questo sia sufficiente. Grazie per gli approfondimenti tecnici, questo mi aiuta davvero a capire i problemi a portata di mano!
mmlac,

1
Certamente alcuni giochi possono permetterti di cambiare istanza in quel modo, ma questo funziona molto meglio per i sotterranei e le aree di ricerca di quanto non faccia per le aree di incontro e sociali condivise. Alla fine però i problemi tecnici sono più significativi.
Kylotan,

E come menzionato nel mio commento a Philipp, non credo che potresti gestire capitali e città principali senza istanze.
mmlac,

3

in realtà credo che la risposta non sia legata alla rete o all'architettura ma piuttosto al gioco, di solito in questo tipo di giochi ci sono eventi, e questi eventi sono cronometrati in base ai tempi più comodi per le persone che giocano sul server, e che di solito è in relazione al fuso orario in cui vivono le persone, quindi UE e USA, ecc.

Un altro motivo è quello di creare una separazione tra i mondi in modo che se c'è un gruppo troppo forte che non rovinerà il gioco per tutti coloro che giocano, e puoi sempre spostarti in un mondo meno "stimolante".

Dal punto di vista della capacità della CPU del server, sebbene le macchine di oggi siano piuttosto forti, c'è sempre un limite a ciò che una macchina può gestire, quindi è necessario creare una separazione tra i mondi per proteggere il gioco dal sovraccarico e consentire alle persone di scegliere il mondo che vogliono giocare in modo che possano giocare con i loro amici. Il ridimensionamento in orizzontale non è solo una questione di macchine, è necessario che l'applicazione sia in grado di funzionare in un'architettura in scala orizzontale, e non è così facile quando si verificano migliaia di "azioni" contemporaneamente con possibile influenza reciproca, e è necessario sincronizzare tutto. Penso che sarebbe molto difficile farlo su più macchine.


Beh, almeno in SW: TOR ci sono solo influenze sull'istanza attuale in cui ti trovi. Il che significa che i capi del mondo che uccidi nell'istanza 1 saranno ancora illesi / generati nell'istanza 2. Quindi la separazione è già in atto. Riesco a vedere la ragione di diversi server dal lato dell'alimentazione, ma sotto la cintura, potrebbero anche ridimensionarsi in questo modo, quindi non hai limiti di popolazione artificiale. Il tempo non dovrebbe preoccupare, perché gli eventi locali sono frequentati da persone locali. Se ti capita di essere online, perché non dovresti essere autorizzato a partecipare? Non è solo su misura per il tuo fuso orario.
mmlac,

Giocavo a Lineage2 su un server americano mentre ero sul fuso orario dell'UE (prima che creassero i server UE), e posso dirti che è una cagna! Mi sono dovuto svegliare alle 3 del mattino se volevo partecipare alle incursioni e agli assedi ai castelli perché era allora che tutto avveniva. Quindi il tempo è sicuramente una preoccupazione.

Bene sì, il tempo è un problema quando hai un solo server nel fuso orario sbagliato. Con la mia idea hai persone online in tutto il mondo. Se vuoi partecipare a quell'incursione delle 3:00, vai avanti! In questo momento, sei SOL e devi aspettare fino al "tuo" raid del server - che potrebbe essere ogni Saturady alle 22:00 - dove non hai tempo. Quindi partecipa alle incursioni dell'UE alle 15:00. Ha senso?
mmlac,

2

Cosa c'è di sbagliato nell'istanza automatica? Quando una posizione è troppo popolata, devi semplicemente mettere i 1000 giocatori in 10 diverse istanze.

Il problema è che i giochi online riguardano la comunità. Immagina di aver organizzato un incontro con le persone che hai incontrato prima, e quando ci sei tutti in un determinato momento non ti vedi perché sei in situazioni diverse? È fastidioso e rompe l'immersione.

Come può essere prevenuto? Si potrebbe fare mettendo tutti i giocatori nella stessa istanza in ogni momento, in modo che quando si incontra un altro giocatore una volta, si può essere sicuri di incontrare nuovamente questo giocatore quando ci si trova entrambi nella stessa posizione. Non incontrerai mai quei giocatori che sono assegnati ad altre istanze.

Ma cosa succede quando vuoi incontrare qualcuno esterno al gioco? Come un amico della vita reale che hai invitato a giocare con te? Per permettere che ciò accada, avrai bisogno della possibilità di scegliere l'istanza quando crei il tuo personaggio. Come da un elenco di istanze con nomi facili da memorizzare. Sfortunatamente, il nome "istanza" sembra confuso per l'utente medio. Non sono abituati a quella parola. Non sarebbe meglio usare un termine a cui sono abituati? Un termine come ... Server ?


1
Non confondere il termine istanza e server. Le istanze ti consentono di passare l'una dall'altra. I server sono generalmente atomici. No dentro e fuori. Per incontrare persone: metti tutti in un'istanza e le tue capitali conterranno 20.000 persone. Allo stesso tempo. Non funzionerebbe né sarebbe desiderabile, ecco perché devi creare comunque delle istanze. Il mio treno di pensieri era rendere globali queste istanze anziché limitarle a un server.
mmlac,

Ma penso che il punto sia che in genere vuoi che le persone abbiano un'esperienza prevedibile nelle aree deliberatamente condivise. Devi partizionarli per motivi di prestazioni, ma dovrebbero essere condivisi con "tutti", quindi idealmente hai una partizione fissa (es. Server) piuttosto che variabile (es. Istanza). Pochissimi MMO che conosco presenteranno questo tipo di area, perché è considerato importante per ragioni di comunità e di raggruppamento che tutti possono vedere tutti lì.
Kylotan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.