como verificar se um servidor de jogos pode lidar com clientes antes do lançamento do jogo?


13

estamos desenvolvendo um jogo baseado no iOS com suporte para vários jogadores. até agora tudo parece realmente bom, mas agora queremos ter certeza de que o servidor pode lidar com 10000 clientes ou não. Alguma idéia de como posso garantir que o servidor sobreviverá a tanto tráfego?

Respostas:


15

Para o teste de carga de tráfego, existem muitas ferramentas, mas você também precisará testar outras coisas específicas do servidor do jogo, porque o tráfego de rede é apenas uma parte da equação - a utilização do processador e consultas constantes ao banco de dados são outros dois que imediatamente vêm à mente como fatores importantes que você deseja medir (também haverá outros fatores que você precisará determinar com base no seu conhecimento de como o servidor do jogo funciona).

Uma maneira realmente boa de fazer isso pode ser escrever um programa cliente de " simulação de jogador do jogo " e executar várias instâncias dele em vários computadores. O lado negativo é que isso pode exigir o uso de muitos computadores, mas algumas universidades locais podem ter grandes laboratórios de informática nos quais você pode executá-los (o professor pode estar interessado nos resultados dos seus testes, pois os professores tendem a ser genuinamente curiosos sobre boa pesquisa).

Seu cliente pode não precisar ser tão sofisticado quanto um player, mas convém garantir que ele faça o seguinte (não precisa ser muito inteligente, desde que possa ser um pouco mais funcional do que um desenvolvedor de software bêbado que realmente não deveria estar voltando para casa, então você também pode sinalizar os personagens de uma maneira especial, para que eles possam fazer coisas tolas, como atravessar paredes, ter orçamentos ilimitados para comprar mercadorias selecionadas aleatoriamente de comerciantes do jogo, ter infinitas suprimentos de munição e outros enfeites):

  • Enviar texto aleatório de bate-papo em uma base aleatória
  • Navegue em direções aleatórias em todo o mundo (mas tende a ficar mais próximo das principais cidades)
  • Escolha aleatoriamente disparar armas em direções aleatórias quando outros jogadores estiverem por perto
  • Compre / venda mercadorias aleatórias de comerciantes e, ocasionalmente, despeje itens em todo o mundo
  • Acende as coisas aleatoriamente (ou causa outras formas de destruição localizada)
  • Incomodar as hordas de animais selvagens e correr para uma cidade movimentada com eles, depois decidir aleatoriamente se deve ou não fazer logout (se escolhido para sair, talvez esses animais selvagens comecem a atacar outros na cidade?)
  • Curar jogadores lesionados
  • Solte magias selecionadas aleatoriamente em lugares lotados
  • Cozinhe alimentos crus, processe madeira bruta e outros materiais (como na mineração), etc.
  • ... outras tarefas simples que seus jogadores provavelmente farão regularmente

Se você estima que terá 9.000 jogadores ao mesmo tempo, tente testá-lo com pelo menos 3 vezes esse número, para saber como seus servidores podem lidar com uma carga de 27.000 jogadores ocupados simulados (muitos jogadores tendem inativo, especialmente os tipos sociais).

Além disso ( e isso é muito importante ), se você fizer isso, faça o login com um personagem comum e grave um vídeo de todos esses jogadores computadorizados fazendo coisas estúpidas e compartilhe esse vídeo conosco aqui para que possamos ter uma boa risada (acho que " dança de celeiro bêbado " pode ser um bom título para este filme, se você puder encontrar o cenário certo no jogo)! ;-D


2
Muito obrigado por sua resposta, acho que precisamos testar usando esses players simulados e acho que, em última análise, usaremos um dos serviços em nuvem para executar clientes. Assim como uma nota de rodapé, é um jogo multiplayer, mas os jogadores só podem navegar pelo mundo e caçar uns aos outros, então quase nenhuma dessas tarefas que você mencionou será implementada em clientes exemplares! Espero que a próxima pessoa com a mesma pergunta esteja prestes a lançar o jogo de simulação de vida para testar todas essas coisas!
Ali1S232

Bem, basta testar o que se aplica ao seu jogo (de nada!). Eu não sabia nada sobre os recursos do seu jogo, então tentei incluir muitas possibilidades na esperança de que isso fosse coberto.
Randolf Richardson

Alguns jogos também começam com um pré-lançamento beta, mas isso pode ser uma decisão difícil, porque há um fator desagradável em que um jogador pode achar que não gosta do jogo durante a fase beta e nunca mais voltar para tentar novamente (mesmo que os problemas encontrados tenham sido resolvidos).
Randolf Richardson

2
-1, resposta irrealista. Os desenvolvedores de jogos femininos não existem. (Jks, +1, concordou em compartilhar visualmente os resultados do teste).
Deceleratedcaviar

3
Vou acrescentar que fiz exatamente isso, para um MMO em um console portátil; jogadores simulados foram a melhor coisa do mundo, para testar como os servidores lidariam sob estresse. Também realizamos uma versão beta fechada (limitada a cerca de 500 pessoas), e eu usei as estatísticas geradas sobre o comportamento dos testadores beta para ajustar os jogadores simulados para se comportarem tanto quanto os jogadores reais que eu pudesse gerenciar. Após o término da versão beta, soltei 40.000 jogadores simulados para causar estragos nos servidores. Muito caos!
Trevor Powell

0

Esta é uma resposta para uma pergunta antiga, espero que possa ser útil para quem chega aqui pelo mecanismo de pesquisa. A Netgend possui uma plataforma de teste de desempenho que pode emular 50.000 VUsers e pode fazer todas as emulações flexíveis de clientes.

Veja os blogs , especialmente

  • Rede facilitada
  • extrai campos das respostas do servidor
  • Teste de desempenho com dados binários

Observe que o processamento da mensagem não está restrito às mensagens http, ele se aplica a todas as mensagens.

Espero que seja útil.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.