Estou no meio do planejamento de um jogo criado usando JavaScript e HTML5.
Estou tendo problemas para entender como você pode impedir que alguém simplesmente copie o JavaScript do servidor da Web e crie seu próprio jogo (não é minha maior preocupação) ou substitua suas próprias funções JavaScript e ofereça qualquer esperança de clientes confiáveis no selvagem se o jogo eventualmente oferecer suporte ao multiplayer.
Alguma coisa pode ser feita para impedir que alguém leia o JavaScript?
Caso contrário, todo o processamento do jogo deve ocorrer em um servidor em algum lugar com as únicas responsabilidades do cliente em capturar a entrada do usuário e desenhar gráficos?
html5
javascript
client-server
cristão
fonte
fonte
Respostas:
Mantenha todos os dados e lógicas do jogo no servidor. Parte do jogo que está do lado do cliente pode ser copiada usando as ferramentas apropriadas (mesmo que seja em Flash ou Java), então aceite-o e não se importe muito com isso.
Para manter seu javascript menos copiável, devido à má legibilidade, você pode reduzi-lo . De qualquer forma, é uma boa prática, pois torna o download do site de jogos mais rápido.
fonte
É aqui que a lei ajuda. Na prática, isso não parece acontecer com muita frequência.
Não há clientes confiáveis na natureza, exatamente por esse tipo de razão. Desista deste sonho agora. :)
fonte
Assim como todo mundo recomendou; mantenha o máximo de código possível do lado do servidor.
Um método que usei para lidar com a cópia de código é um pouco estranho, mas funcionou bem até agora.
Agora, seu código secreto está executando no lado do cliente e não será exibido na fonte de exibição ou nos inspetores / consoles. Ainda há maneiras de obter o código, mas é um pouco mais difícil.
fonte
A única maneira de ter certeza razoável de que seu código de jogo será seguro é criar um tipo de jogo cliente / servidor e colocar o máximo de código possível no servidor. E, claro, torne esse servidor seguro!
O principal problema é que, se o código estiver em execução no meu computador, posso inspecioná-lo, descompilá-lo e descobrir como ele funciona. Isso vale para JavaScript, Flash, C ++, qualquer outra coisa. De fato, no desenvolvimento do MMO (que é onde está a maior parte da minha experiência profissional), a suposição desde o início é que o cliente está comprometido: tudo o que você escreveu para o cliente já está nas mãos de quem o desejar, malicioso ou não.
O código de redução fornece uma pequena quantidade de proteção contra pessoas com preguiça de desminificá-lo usando uma das muitas ferramentas disponíveis. (Mas o código de produção deve ser reduzido para reduzir sua pegada de dados.)
Mas se você estiver em uma situação em que, digamos, seu chefe deseja algum tipo de proteção de código, você pode pesquisar no Google "ofuscador Javascript" - há muitos softwares gratuitos e pagos por aí que tornam JS, pelo menos, tão impermeável descompilar como o Flash é.
fonte
Além de toda essa discussão sobre ofuscação de código, coloque uma declaração de direitos autorais muito clara no topo de cada arquivo e torne óbvio que a licença não permite alterações ou uso comercial. Isso lhe dá um recurso legal se alguém tentar copiá-lo. Se você não está disposto a recorrer, a questão toda é principalmente acadêmica.
fonte
Eu acho que se você tornar seu jogo multi-jogador, o que implica manter a lógica do jogo no servidor, você provavelmente tornaria pelo menos menos atraente roubar. Você não pode confiar realmente no cliente. Como alguém já mencionou, existem ferramentas para linguagens compiladas como Java e Flash, que podem fazer engenharia reversa do texto do código a partir do código de bytes.
fonte
Você precisa usar um Javascript Minifier. Há muitas opções disponíveis, sinta-se à vontade para encontrar uma que você gosta. Para economizar algumas pesquisas, aqui está uma que você pode experimentar o Yahoo Minifier . Eu não corri isso sozinho, mas presumo que ele fará o que você precisa. O objetivo é 1) reduzir o tamanho do arquivo e 2) ofuscar o código. Isso é feito removendo todos os espaços em branco, comentários e substituindo nomes de variáveis por nomes mais curtos e sem sentido.
Atualmente, a maioria dos aplicativos da Web possui uma quantidade significativa de Javascript e usa ferramentas como essas para tentar proteger seu IP. Como outros já disseram, você sempre deve perguntar: "Posso fazer isso no servidor?" para operações importantes ou sensíveis, mas acredito que isso deve oferecer alguma proteção.
fonte
Use o compilador de fechamento do Google http://code.google.com/closure/compiler/ Não é apenas um minimizador de js;)
Quais são os benefícios do uso do Closure Compiler?
Eficiência. O Closure Compiler reduz o tamanho dos arquivos JavaScript e os torna mais eficientes, ajudando o aplicativo a carregar mais rapidamente e reduzindo as necessidades de largura de banda.
Verificação de código. O Closure Compiler fornece avisos para JavaScript ilegal e avisos para operações potencialmente perigosas, ajudando você a produzir JavaScript com menos bugs e fácil manutenção.
fonte
Ou você pode usar algo como o Game Maker HTML5 para criar seu jogo, que ofuscará o código para você. Isso significa que tornará o código ilegível para os seres humanos. E será quase impossível editar.
fonte
Qualquer coisa proprietária deve ser mantida no lado do servidor. No lado do cliente, você fornece apenas o suficiente para facilitar o uso do jogo.
fonte
Colocar tudo no servidor pode ter um problema de desempenho e não usar todo o potencial da Web como o conhecemos hoje.
Você pode escrever seu código em c ++ e compilá-lo em binários.
Cliente nativo (NaCl).
Consulte https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
fonte