Por que os MMORPGs ainda usam vários servidores?

18

MMORPGs, alguns MOBAs como League of Legends ou mesmo StarCraft 2 geralmente o forçam a escolher um servidor. Geralmente eles são EUA, UE e MAR, em MMORPGs muitos por local. Percebo que isso era necessário há alguns anos, mas agora com o advento da AWS e ofertas semelhantes que permitem escalar perfeitamente seu "poder do servidor", por que ainda existem servidores separados?

Minha linha de pensamento é assim (usando Star Wars: The Old Republic como exemplo): - Você está sempre em um planeta, uma "instância" isolada de outros planetas. - Se houver muitas pessoas em um planeta, SW: TOR cria uma nova instância do mundo e coloca jogadores lá. - Se você deixar o mundo / alternar instâncias, terá uma tela de carregamento

Então, por que o jogo não pode criar uma instância para este planeta. Esta instância (e somente esta) possui seus dados atuais em seu banco de dados e gerencia x players. Assim que x-50 jogadores estiverem nessa instância, um novo servidor será iniciado e novas pessoas aparecerão nessa instância. Os 50 pontos são reservados para mudar para o seu grupo, etc.

Poderia haver uma instância para as três principais regiões manterem a latência baixa, mas isso permitiria que você ainda tocasse com outros jogadores, por exemplo, SEA, se você puder viver com um atraso de 140ms (o que ainda não é nada).

Sempre que você alterna uma instância ou viaja para outro mundo, seu servidor atual fornece todos os seus dados para o próximo servidor, garantindo que você não precise de um grande banco de dados centralizado. Você ainda pode ter um que receba atualizações periodicamente para fins de análise.

Quando você efetua logoff ou os servidores perdem a conexão, os dados podem ser transferidos para um banco de dados maciço que é otimizado para armazenar os dados. Os servidores de instância podem ser otimizados para alta taxa de transferência.

Existe alguma razão específica para que isso não funcione? Existem outros problemas que estão faltando?

mmlac
fonte
E o fato de muitos desses jogos precisarem reescrever seções moderadas a grandes de seus mecanismos para dar suporte a isso? E esse tempo e dinheiro poderiam ser melhor gastos com a adição de mais conteúdo.
Xavon_Wrentaile
Eu não sugeri mudar os jogos existentes, mas muito mais por que o design foi escolhido da maneira como era para começar.
mmlac

Respostas:

12

MMORPGs, alguns MOBAs como League of Legends ou mesmo StarCraft 2 geralmente o forçam a escolher um servidor. Geralmente eles são EUA, UE e MAR, em MMORPGs muitos por local. Percebo que isso era necessário há alguns anos, mas agora com o advento da AWS e ofertas semelhantes que permitem escalar perfeitamente seu "poder do servidor", por que ainda existem servidores separados?

A AWS não é uma solução tão óbvia quanto parece. Pode ser caro, em alguns casos mais do que usar centros de dados internos (para um editor, o custo destes pode ser amortizado em vários produtos, por exemplo). Além disso, pode haver uma preocupação em armazenar binários e logs confidenciais no hardware fora do controle de alguém. Por fim, o poder computacional real nem sempre é o motivo para segregar a população de "servidores" nos MMOs.

Minha linha de pensamento é assim (usando Star Wars: The Old Republic como exemplo): - Você está sempre em um planeta, uma "instância" isolada de outros planetas. - Se houver muitas pessoas em um planeta, SW: TOR cria uma nova instância do mundo e coloca jogadores lá. - Se você deixar o mundo / alternar instâncias, terá uma tela de carregamento

Guild Wars 2, de fato, faz algo muito semelhante a isso. Os mapas são simulados por processos individuais do servidor, e as instâncias de estouro são criadas conforme necessário, com base no limite da população do mapa e em algumas heurísticas para o desempenho do mapa.

O Guild Wars 2 possui dois data centers importantes, um nos EUA e outro na Europa - há alguma conversa cruzada entre esses data centers (principalmente para os postos de comércio e sistemas de comércio), mas, em geral, eles existem nessa configuração para que os jogadores Alemanha, França etc. não precisam sofrer uma latência mais alta dos servidores de jogos dos EUA. Dentro do data center, os jogadores são classificados em "mundos domésticos" (ou "fragmentos" em termos vernaculares); mas uma das razões para isso é minimizar o número de players que um cliente pode ver e precisar reportar a ele. O aspecto do cliente desse problema não será resolvido expandindo para mais hardware de servidor. A explosão combinatória do servidor de caminhos de relatórios adicionais pode ser,

Existe alguma razão específica para que isso não funcione? Existem outros problemas que estão faltando?

Você está perdendo algumas coisas, mas na maior parte são detalhes (e não explicarei como lidamos com eles de qualquer maneira, pois são considerados segredos comerciais) que não são relevantes para uma pergunta de nível geral tão geral. Penso que a maior falha na sua proposta é tentar entregar os dados do jogador para o novo servidor quando um jogador é transferido. Esse é um problema complexo que não pode ser dimensionado bem, provavelmente é melhor na prática ter esses dados do player em um sistema centralizado de servidores. É bastante possível se você não usar esses bancos de dados e o armazenamento de registros de tempo de execução primário para os dados.


fonte
@ Josh, você diria que os direitos de distribuição também são um grande fator na decisão de criar e manter servidores separados para regiões separadas do mundo?
Trevor Powell
Não sei ao certo o que você quer dizer, você está falando em apresentar a versão da UE como um SKU diferente para fins de ajuste de preço (e, consequentemente, querer manter o back-end do servidor distinto também?).
7

Principalmente é sobre latência.

Em primeiro lugar, ter um servidor geograficamente próximo a você reduz a latência. Se o servidor estiver do outro lado do mundo, você verá mais latência do que se o servidor estiver a apenas alguns saltos de distância.

Em segundo lugar, serviços como o AWS não são projetados para trabalho em tempo real. Eles são projetados para alta taxa de transferência às custas de um pouco de latência. Se a sua página da web demorar 250ms a mais do que o normal para carregar em uma ocasião, ninguém se importa, mas se o seu jogo demorar 250ms a mais do que o normal para processar uma mensagem, a jogabilidade poderá ser seriamente afetada. É por isso que os MMOs são quase sempre hospedados em hardware dedicado.

Mas também é sobre design de jogos. Se você faz parecer que todos estão no mesmo mundo, mas precisam dividir uma zona quando ela fica cheia demais, as pessoas ficam frustradas por não encontrarem seus amigos nos pontos de encontro designados. Esse tipo de problema se estende às guildas, batalhas PvP em massa, etc. Os jogadores estão acostumados a instâncias hoje em dia, mas há certas áreas que se espera que sejam compartilhadas. Se você possui servidores completamente separados, pelo menos não há surpresas aqui.

Finalmente, existem outras questões tecnológicas a serem consideradas. Mesmo que cada instância seja bastante isolada das demais, geralmente ainda existem vários serviços que precisam se comunicar entre eles. A comunicação entre servidores é difícil de se dar bem em software em tempo real e levou a várias explorações e erros nos MMOs no passado. Em particular, entregar dados oficiais de jogadores de um para o outro é arriscado. Portanto, os desenvolvedores costumam errar por precaução e têm limites claramente delineados entre servidores, reduzindo a quantidade de tráfego que precisa atravessá-los.

Kylotan
fonte
"Se você possui servidores completamente separados, pelo menos não há surpresas aqui." Bem, você simplesmente não pode brincar com seus amigos então. No SW: TOR, ele informa qual instância é o líder do grupo e você pode mudar imediatamente para ele. Eu (pessoalmente) acho que isso é suficiente. Obrigado pelas informações técnicas, isso realmente me ajuda a entender os problemas em questão!
mmlac
11
Certamente, alguns jogos podem permitir que você mude de instância assim, mas isso funciona muito melhor para masmorras e áreas de missão do que para áreas sociais e de reuniões compartilhadas. Em última análise, embora os problemas técnicos sejam mais significativos.
Kylotan
E, como mencionado no meu comentário a Philipp, não acho que você possa administrar capitais e principais cidades sem instâncias.
mmlac
3

na verdade, acredito que a resposta não está relacionada à rede ou à arquitetura, mas sim ao jogo, geralmente nesse tipo de jogo há eventos, e esses eventos são cronometrados de acordo com os prazos mais confortáveis ​​para as pessoas que jogam no servidor, e isso geralmente é relacionados ao fuso horário em que as pessoas vivem, daí a UE e os EUA, etc.

Outro motivo é criar uma separação entre os mundos, para que, se houver um grupo forte demais, eles não atrapalhem o jogo de todos os que jogam, e você sempre pode mudar para um mundo menos "desafiador".

No lado da capacidade da CPU do servidor, embora as máquinas de hoje sejam bastante fortes, sempre há um limite para o que uma máquina pode manipular, e, portanto, é necessário criar uma separação entre mundos para proteger o jogo da sobrecarga e permitir que as pessoas escolham em qual mundo desejam jogar para que eles possam brincar com seus amigos. Escalonar horizontalmente não é apenas uma questão de ter máquinas, você precisa que seu aplicativo possa trabalhar em uma arquitetura escalonada horizontalmente, e isso não é tão fácil quando você tem milhares de "ações" acontecendo simultaneamente, com possível influência uma sobre a outra, e precisa sincronizar tudo. Eu acho que seria muito difícil fazer isso em várias máquinas.


fonte
Bem, pelo menos no SW: TOR, existem apenas influências na instância atual em que você está. O que significa que, por exemplo, os chefes do mundo que você mata no exemplo um ainda estarão ilesos / gerados no exemplo 2. Portanto, a separação já está em vigor. Eu posso ver o motivo de diferentes servidores no lado da energia, mas, sob o cinto, eles também podem escalar assim, para que você não tenha limites artificiais de população. O tempo não deve ser motivo de preocupação, porque os eventos locais são frequentados por pessoas locais. Se você está on-line, por que não deveria participar? Apenas não é adaptado ao seu fuso horário.
mmlac
Eu costumava jogar o Lineage2 em um servidor dos EUA enquanto estava no fuso horário da UE (antes de criarem os servidores da UE), e posso dizer que é uma droga! Eu tinha que acordar às 3 da manhã se quisesse participar de ataques e cercos de castelo, porque foi quando tudo aconteceu. Então o tempo é definitivamente uma preocupação.
Bem, sim, o tempo é uma preocupação quando você tem apenas um servidor no fuso horário errado. Com a minha ideia, você tem pessoas on-line em todo o mundo. Se você quer participar do ataque às 3 da manhã, vá em frente! No momento, você é SOL e precisa esperar até que "seus" ataques de servidor sejam iniciados - que podem ser todos os sábados às 22h - onde você não tem tempo. Então vá para as incursões da UE às 15h. Isso faz sentido?
mmlac
2

O que há de errado com a instancia automática? Quando um local fica muito preenchido, basta colocar os 1000 jogadores em 10 instâncias diferentes.

O problema é que os jogos online são sobre a comunidade. Imagine que você marcou uma reunião com pessoas que conheceu antes e, quando estão todos lá no momento, não se veem porque estão em diferentes instâncias? Isso é chato e quebra a imersão.

Como isto pode ser evitado? Isso poderia ser feito colocando todos os jogadores na mesma instância o tempo todo, para que, quando você encontrar outro jogador uma vez, tenha certeza de encontrá-lo novamente quando ambos estiverem no mesmo local. Você nunca encontrará aqueles jogadores designados para outras instâncias.

Mas e quando você quiser conhecer alguém de fora do jogo? Como um amigo da vida real que você convidou para jogar o jogo com você? Para permitir que isso aconteça, você precisa escolher a instância ao criar seu personagem. Como em uma lista de instâncias com nomes fáceis de memorizar. Infelizmente, o nome "instância" parece confuso para o usuário médio. Eles não estão acostumados com essa palavra. Não seria melhor usar um termo a que estão acostumados? Um termo como ... Servidor ?

Philipp
fonte
11
Não confunda o termo instância e servidor. Instâncias permitem que você alterne entre si. Servidores geralmente são atômicos. Não entra e sai. Para conhecer pessoas: coloque todos em uma instância e suas capitais terão 20.000 pessoas. Ao mesmo tempo. Isso não funcionaria nem seria desejável, é por isso que você precisa criar instâncias de qualquer maneira. Minha linha de pensamento foi tornar essas instâncias globais em vez de limitadas a um servidor.
mmlac 07/01
Mas acho que o ponto é que você normalmente quer que as pessoas tenham uma experiência previsível nas áreas compartilhadas deliberadamente. Você precisa particioná-los por motivos de desempenho, mas eles devem ser compartilhados com 'todos'; portanto, idealmente, você tem uma partição fixa (por exemplo, servidor) em vez de variável (por exemplo, instância). Muito poucos MMOs que eu conheço irão instalar esse tipo de área, porque é considerado importante por razões de comunidade e de agrupamento que todos podem ver todos lá.
Kylotan