¿Es un mal juego multijugador en JavaScript? [cerrado]

8

¿Cuáles son las posibles desventajas de usar JavaScript (del lado del cliente) al crear un juego multijugador?

Descripción del juego: Es un MMORPG / RTS. Eso significa que los jugadores contribuyen activamente a las estructuras del mundo y crean gran parte del contenido ellos mismos.

jcora
fuente
Tengo curiosidad: ¿qué mecanismo utilizas para que el cliente hable con el servidor y cómo es la latencia? ¿Qué plataforma estás usando para el servidor?
Will
El servidor se ejecuta en mi netbook que ejecuta Ubuntu Linux, y está escrito en JavaScript del lado del servidor, que se ejecuta usando node.js.
jcora
No sé por qué voté originalmente esta pregunta. Cambió a un voto negativo y consideró emitir un voto cerrado, porque "¿es ___ una buena idea?" Nunca es realmente una pregunta que se pueda responder. De hecho, en mi respuesta, incluso señalé que la pregunta no puede responderse exactamente.
jhocking
Además, tengo ganas de cambiar el título a "¿Es una mala idea un juego multijugador en JavaScript ?" Mejoraría la pregunta. Al principio eso parece un cambio trivial, pero volver a plantear la pregunta en busca de inconvenientes lo hace más responsable que un "¿qué tecnología debo usar?" un poco pregunta Preguntando "¿es buena esta tecnología?" solo invita a moler hacha.
jhocking
1
No sé qué piensan los mods, pero ahora me gusta mucho más. volver a
votar

Respuestas:

9

Está bien si:

  1. El servidor no envía ninguna información sobre los jugadores detrás del campo de visión del jugador local (debe calcularse en el lado del servidor) al jugador local (para evitar el bloqueo de la pared).
  2. Se verifica la disponibilidad de todas las acciones en el servidor cuando un jugador presiona el botón de acción.
  3. Solo se procesa en el cliente: todas las acciones se realizan en el servidor y solo se predicen en el cliente.
  4. Todas las acciones cronometradas son del lado del servidor.
Triang3l
fuente
Sí, estoy haciendo estas cosas.
jcora
10
Tenga en cuenta que estas instrucciones son válidas para cada juego multijugador, independientemente del idioma, la plataforma o lo que sea.
o0 '.
10

Que tu juego sea o no adecuado para el desarrollo de JavaScript depende del juego. No describiste tu juego, así que no hay forma de que podamos responder la pregunta en el título.

Sin embargo, puedo decir que su problema de piratería no es un problema aquí. No porque JavaScript no pueda ser pirateado (sí, y fácilmente), sino que también lo puede ser cualquier otra tecnología del lado del cliente. Uno de los principios básicos del desarrollo de juegos multijugador es "nunca confiar en el cliente". Diseña tu juego de tal manera que todo lo que necesites proteger contra piratería se ejecute en el servidor, porque el cliente será pirateado. Esto significa que solo debe enviar comandos de IU desde el cliente (por ejemplo, "el jugador hizo clic en el botón Bomba") y calcular los resultados de las acciones del jugador en el servidor. Luego, el servidor devuelve al cliente los resultados de esas acciones.

Dado que no importa en qué tecnología confíes, debes diseñar tu juego con la suposición de que el componente del lado del cliente será pirateado, la piratería de JavaScript no es una consideración al decidir si usar JavaScript o no.

jhocking
fuente
Muchas gracias. Editaré mi publicación y describiré el juego ahora.
jcora
3
¡Nunca, nunca, nunca, nunca, nunca confíes en el cliente, ya sea javascript u otra cosa!
the_e
1
Si bien todos los clientes de juegos son pirateables, algunos son más pirateables que otros.
Jonathan Connell
2
Eso es cierto, pero la distinción es irrelevante. Al diseñar la seguridad para tu juego, ¿qué importa si la opción A es más difícil de hackear que la opción B si ambos serán pirateados?
jhocking
2

Las personas pueden cambiar el código del cliente para hacer trampa, eso es un problema para cualquier juego multijugador. Si la velocidad de reacción o la resolución rápida de tareas matemáticas es parte del juego, no puedes evitar por completo la trampa.

Para cualquier otro elemento del juego, debes asegurarte de que el cliente no pueda y no pueda obtener información que se supone que está oculta para el jugador. Y, por supuesto, el servidor debe validar que cada acción tomada por un jugador es legal.

El mayor problema que veo en los juegos de JavaScript es que muchos navegadores tienden a tartamudear, especialmente Firefox fue bastante malo la última vez que lo revisé. Por esta razón, JavaScript no es una buena opción para un juego sensible al tiempo. Pero para los juegos por turnos o al menos de ritmo lento, JavaScript puede funcionar bastante bien.

aaaaaaaaaaaa
fuente
2

Cambiar las variables de Javascript es bastante fácil de hacer con herramientas como Firebug (para firefox) o las herramientas de desarrollo de Safari / Chrome. Simplemente puede escribir javascript en la consola y se ejecutará. Como regla simple, no confíe en la seguridad del lado del cliente. Además de eso, con la introducción del elemento de lienzo HTML5, javascript le ofrece algunas posibilidades reales para juegos simples (por ejemplo, hay una versión javascript / html5 completa de Angry Birds).

Pjotterke
fuente