Estoy a punto de planear un juego creado con JavaScript y HTML5.
Tengo problemas para comprender cómo podría evitar que alguien simplemente copie el JavaScript del servidor web y cree su propio juego con él (no es mi mayor preocupación), o sustituya sus propias funciones de JavaScript y deseche cualquier esperanza de clientes confiables en el salvaje si el juego fuera eventualmente compatible con el modo multijugador.
¿Se puede hacer algo para evitar que cualquiera lea el JavaScript?
Si no es así, ¿todo el procesamiento del juego debería tener lugar en un servidor en algún lugar con las únicas responsabilidades del cliente de capturar la entrada del usuario y dibujar gráficos?
html5
javascript
client-server
cristiano
fuente
fuente
Respuestas:
Mantenga todos los datos y lógicas del juego en el servidor. Parte del juego que está en el lado del cliente se puede copiar utilizando las herramientas apropiadas de todos modos (incluso si está en Flash o Java), así que simplemente acéptelo y no se preocupe demasiado.
Para mantener su JavaScript menos copiable, debido a la mala legibilidad, puede minimizarlo . De todos modos, es una buena práctica, ya que hace que el sitio de juegos se descargue más rápido.
fuente
Aquí es donde la ley ayuda. En la práctica, esto no parece suceder muy a menudo.
No hay clientes confiables en la naturaleza, exactamente por este tipo de razón. Renunciar a este sueño ahora. :)
fuente
Tal como todos los demás lo han recomendado; mantener tanto código como sea posible del lado del servidor.
Un método que he usado para manejar la copia de código es un poco extraño, pero ha funcionado bien hasta ahora.
Ahora su código secreto se está ejecutando en el lado del cliente y no aparecerá en view-source o en inspectores / consolas. Todavía hay formas de llegar al código, pero es bastante más difícil.
fuente
La única forma de estar razonablemente seguro de que su código de juego será seguro es crear un tipo de juego cliente / servidor y poner tanto código como sea posible en el servidor. Y, por supuesto, ¡asegure ese servidor!
El problema principal es que si el código se está ejecutando en mi computadora, puedo inspeccionarlo, descompilarlo y descubrir cómo funciona. Esto es cierto para JavaScript, Flash, C ++, cualquier otra cosa. De hecho, en el desarrollo de MMO (que es donde está la mayor parte de mi experiencia profesional) la suposición desde el principio es que el cliente está comprometido: lo que haya escrito para el cliente ya está en manos de quien lo desee, malicioso o no.
El código minificador proporciona una pequeña cantidad de protección contra las personas que son demasiado vagas para desminificarlo usando una de las muchas herramientas disponibles. (Pero el código de producción debe minimizarse para reducir su huella de datos).
Pero si se encuentra en una situación en la que, por ejemplo, su jefe quiere algún tipo de protección de código, puede buscar en Google "Javascript ofuscador": hay una gran cantidad de software gratuito y de pago que hace que JS sea al menos tan impermeable. para descompilar como Flash.
fuente
Además de toda esta charla sobre la ofuscación del código, asegúrese de poner una declaración de derechos de autor muy clara en la parte superior de cada archivo y hacer obvio que la licencia no permite la alteración o el uso comercial. Esto le brinda un recurso legal si alguien intenta copiarlo. Si no está dispuesto a ir al tribunal por ello, entonces toda esta pregunta es principalmente académica.
fuente
Creo que si haces que tu juego sea multijugador, lo que implica mantener la lógica de tu juego en el servidor, probablemente harás que sea al menos menos atractivo robar. No puedes confiar en el cliente realmente. Como alguien ya ha mencionado, existen herramientas incluso para lenguajes compilados como Java y Flash, que pueden realizar ingeniería inversa del texto del código a partir del código de bytes.
fuente
Necesitas usar un Javascript Minifier. Hay muchas opciones disponibles, no dude en encontrar una que le guste. Para ahorrarle algo de investigación, aquí puede probar Yahoo Minifier . No lo he ejecutado yo mismo, pero supongo que hará lo que necesita. El objetivo es 1) reducir el tamaño del archivo y 2) ofuscar el código. Esto se logra eliminando todos los espacios en blanco, comentarios y reemplazando nombres de variables con nombres más cortos y sin sentido.
La mayoría de las aplicaciones web actuales tienen una cantidad significativa de Javascript y utilizan herramientas como estas para tratar de proteger su IP. Como otros han dicho, siempre debe preguntar: "¿Puedo hacer esto en el servidor?" para operaciones importantes o sensibles, pero creo que esto debería ofrecer cierta protección.
fuente
Utilice el compilador de cierre de Google http://code.google.com/closure/compiler/ No es solo un js minimizer;)
¿Cuáles son los beneficios de usar Closure Compiler?
Eficiencia. El compilador de cierre reduce el tamaño de sus archivos JavaScript y los hace más eficientes, ayudando a que su aplicación se cargue más rápido y reduciendo sus necesidades de ancho de banda.
Comprobación de código. El Compilador de cierre proporciona advertencias para JavaScript ilegal y advertencias para operaciones potencialmente peligrosas, ayudándole a producir JavaScript que tenga menos errores y sea más fácil de mantener.
fuente
O puede usar algo como Game Maker HTML5 para crear su juego que ofuscará el código por usted. Eso significa que hará que el código sea ilegible para los humanos. Y será casi imposible de editar.
fuente
Cualquier propiedad debe mantenerse en el lado del servidor. Del lado del cliente, solo proporciona lo suficiente para facilitar su uso del juego.
fuente
Poner todo en el servidor podría tener problemas de rendimiento y no utilizar todo el potencial de la web tal como lo conocemos hoy.
Puede escribir su código en c ++ y compilarlo en binarios.
Cliente nativo (NaCl).
Ver https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
fuente