Estou pensando em criar um servidor MMO e tenho observado como outros jogos estruturam sua rede. Uma das coisas que notei é que sempre há um servidor de login e, em seguida, o (s) servidor (es) de jogo.
Ainda estou decidindo se devo fazer isso, mas gostaria de ouvir algumas opiniões primeiro. Quais são as vantagens disso e como o servidor de login se comunica com o servidor do jogo para manipular logins?
mmo
networking
server
scalability
JPiolho
fonte
fonte
Respostas:
Acredito que isso seja causado principalmente pelo fato de o logon e a manipulação de jogos serem logicamente mais ou menos independentes, portanto, eles geralmente são mantidos separados para melhor dissociação, manutenção e escalabilidade mais fáceis. Eles não precisam necessariamente residir em servidores físicos diferentes, eles podem executar serviços tão bem quanto independentes na mesma máquina. Se o tráfego aumentar muito, o servidor de login poderá ser facilmente movido para outra máquina.
Além disso, os servidores de login são um vetor provável de ataque, portanto é bom separá-los do ponto de vista da segurança.
Internamente, diferentes serviços do lado do servidor podem usar soquetes regulares para se comunicar, seja na mesma máquina ou em outra máquina no cluster. Como alternativa, um servidor de banco de dados pode ser usado para manter um sinalizador 'está logado' para cada usuário.
fonte
Um aspecto muito importante no desenvolvimento de MMOs é alcançar a escalabilidade e permitir o balanceamento de carga.
Usuários de autenticação verificando credenciais, status de banimento, contando logins com falha recentes, etc. é uma tarefa que pode ser realizada sem conhecer nada da lógica ou dos dados do jogo. Portanto, é muito fácil mover isso para seu próprio cluster de servidores.
Além disso, os servidores de login são uma "entrada" bem conhecida para o cliente entrar em contato. Após a autenticação bem-sucedida, eles podem despachar o cliente para o servidor apropriado no cluster de servidores de jogos. Esse despacho pode ser feito encaminhando a conexão de rede ao servidor de jogo certo ou dizendo ao cliente para abrir uma nova conexão ao servidor de jogos certo.
Você deve pensar nos cortes do seu sistema para distribuição desde o início. É muito fácil executar várias peças em um servidor. Mas é bastante difícil dividir as coisas que foram desenvolvidas como uma unidade.
fonte
Como ex-jogador de WoW, minha experiência foi que o servidor de login sempre foi o elo mais fraco da cadeia.
Os servidores mundiais eram geralmente impressionantemente estáveis, mesmo lidando com uma carga excepcional (por exemplo, novas versões do pacote de expansão) muito bem.
Mas o (s) servidor (es) de login nunca pareceu lidar tão bem e frequentemente ficava inativo enquanto os servidores mundiais estavam bem. (o que significa que se você perder a conexão em um ataque / masmorra, não poderá voltar, mas os outros jogadores estarão esperando por você!)
E agora que o sistema de login do WoW foi mesclado ao Battle.Net, o Starcraft 2 pode ficar indisponível quando o WoW está sob carga pesada (como aconteceu por algumas horas quando o Cataclysm foi lançado)
Portanto, se você estiver criando um jogo que terá um número muito grande de usuários, a escalabilidade e o desempenho do sistema de login também são muito importantes.
fonte