Um jogo multiplayer em JavaScript é uma má idéia? [fechadas]


8

Quais são as possíveis desvantagens do uso de JavaScript (do lado do cliente) ao criar um jogo multiplayer?

Descrição do jogo: É um MMORPG / RTS. Isso significa que os jogadores contribuem ativamente para as estruturas do mundo e criam grande parte do conteúdo.


Estou curioso: qual mecanismo você usa para o cliente falar com o servidor e como é a latência? Qual plataforma você está usando para o servidor?
— Will

O servidor está sendo executado no meu netbook que executa o Ubuntu Linux e está escrito em JavaScript do lado do servidor, que é executado usando o node.js.
— jcora

Não sei por que originalmente votei nessa questão. Alterou para um voto negativo e considerou lançar um voto apertado, porque "___ é uma boa ideia?" nunca é realmente uma pergunta respondível. De fato, na minha resposta, eu até apontei que a pergunta não pode ser exatamente respondida.
— Jhocking

Além disso, estou com vontade de mudar o título para "Um jogo multiplayer em JavaScript é uma má idéia?" melhoraria a questão. No começo, isso parece uma mudança trivial, mas reformular a pergunta procurando desvantagens torna-a mais responsável do que uma "qual tecnologia devo usar?" meio que pergunta. Perguntar "esta tecnologia é boa?" apenas convida a moagem de machado.
— Jhocking

11
Eu não sei o que os mods pensam, mas eu gosto muito melhor agora. de volta a
— voto positivo

Respostas:


9

Tudo bem se:

  1. O servidor não envia nenhuma informação sobre jogadores por trás do campo de visão do jogador local (deve ser calculado no servidor) para o jogador local (para evitar ataques de parede).
  2. Todas as ações são verificadas quanto à disponibilidade no servidor quando um jogador pressiona o botão de ação.
  3. Você renderiza apenas no cliente - todas as ações são realizadas no servidor e previstas apenas no cliente.
  4. Todas as ações programadas estão no servidor.

Sim, eu estou fazendo essas coisas.
— jcora

10
Observe que estas instruções são válidas para todos os jogos multiplayer, independentemente do idioma, plataforma ou qualquer outra coisa.
— o0 '.

10

Se o seu jogo é ou não adequado para o desenvolvimento de JavaScript, depende do jogo. Você não descreveu seu jogo, então não há como respondermos à pergunta no título.

No entanto, posso dizer que sua preocupação com hackers não é um problema aqui. Não porque o JavaScript não pode ser invadido (pode e facilmente), mas também qualquer outra tecnologia do lado do cliente. Um dos princípios básicos do desenvolvimento de jogos multiplayer é "nunca confie no cliente". Crie seu jogo de forma que tudo o que você precise proteger contra hackers esteja em execução no servidor, porque o cliente será invadido. Isso significa apenas enviar comandos da interface do usuário do cliente (por exemplo, "o jogador clicou no botão Bomb") e calcular os resultados das ações do jogador no servidor. Em seguida, o servidor envia de volta ao cliente os resultados dessas ações.

Como não importa em qual tecnologia você confia, você deve projetar seu jogo com a suposição de que o componente do lado do cliente será invadido, a possibilidade de hackers do JavaScript não é considerada ao decidir se deve ou não usar o JavaScript.


Muito obrigado. Vou editar meu post e descrever o jogo agora.
— jcora

3
nunca, nunca, nunca, nunca, nunca, nunca confie no cliente, seja em javascript ou em qualquer outra coisa!
— the_e

11
Embora todos os clientes do jogo sejam de fato hackáveis, alguns são mais hackáveis ​​que outros.
— Jonathan Connell

2
Isso é verdade, mas a distinção é irrelevante. Ao projetar a segurança do seu jogo, o que importa se a opção A é mais difícil de invadir do que a opção B se ambas forem invadidas?
— Jhocking # 6/11

2

As pessoas podem alterar o código do cliente para enganar, o que é um problema para qualquer jogo multiplayer. Se a velocidade da reação ou a rápida resolução de tarefas matemáticas fizer parte do jogo, você não poderá impedir completamente a trapaça.

Para qualquer outro elemento do jogo, você deve garantir que o cliente não obtenha nem possa obter informações que deveriam estar ocultas ao jogador. E, claro, o servidor deve validar que todas as ações tomadas por um jogador são legais.

O maior problema que vejo nos jogos JavaScript é que muitos navegadores tendem a gaguejar, especialmente o Firefox estava muito ruim na última vez que verifiquei. Por esse motivo, o JavaScript não é uma boa opção para jogabilidade sensível ao tempo. Mas para jogos baseados em turnos ou pelo menos em ritmo lento, o JavaScript pode funcionar muito bem.


2

Alterar as variáveis ​​Javascript é muito fácil de fazer com ferramentas como o Firebug (para firefox) ou com as ferramentas de desenvolvimento do Safari / Chrome. Você pode simplesmente digitar javascript no console e ele será executado. Como regra simples, não confie no lado do cliente para segurança. Além disso, com a introdução do elemento canvas HTML5, o javascript oferece algumas possibilidades reais para jogos simples (existe uma versão completa em javascript / html5 do Angry Birds, por exemplo).

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.