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.

jcora
fonte
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 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.
Triang3l
fonte
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.

jhocking
fonte
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.

aaaaaaaaaaaa
fonte
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).

Pjotterke
fonte