Publicado el Deja un comentario

Como NO programar un juego multijugador HTML5

A continuación presento un proyecto en el que estuve trabajando, que en papel es súper interesante debido a la implementación multijugador entre Phaser y Croquet.IO, sin embargo he llegado a constatar ciertas características que debo tomar en cuenta antes de continuar con el desarrollo de un juego como el planteado.

Se trata de un juego tipo PACMAN, AGAR.io, Bomberman, una mezcla de jugabilidad que pensaba podía implementar fácilmente utilizando la tecnología Croquet.IO.

El prototipo funciona bastante bien hasta donde logré desarrollarlo, y se puede apreciar las bondades de utilizar Croquet como marco de desarrollo para juegos multijugador.

Sin embargo tuve que detener el proyecto al constatar que la forma en la que estaba implementando ciertas características de los juegos multijugador es incorrecta.

El prototipo tiene el problema que al momento remite la información en tiempo real de todos los jugadores conectados pero no hace ningún cálculo en el servidor de predicción, lo que provoca desfases al actualizar la posición de cada jugador en los diferentes clientes conectados. Es un típico problema de programación de juegos multijugador en los que normalmente se deja al servidor predecir la posición de todos los jugadores conectados, sin embargo por ser algo nuevo en este tipo de desarrollos decidí ver con mis propios ojos este problema de latencia, y he terminado en un camino que todavía debo descifrar frente a la programación de videojuegos multijugador.

Se puede apreciar dos jugadores conectados al mismo tiempo

¿Qué hace al momento este videojuego?

Este pequeño desarrollo hasta el momento es capaz de administrar las conexiones en un canal determinado randómico que puede ser compartido para jugar con quien se requiera para probarlo. Si se habilita la consola de desarrollo del navegador web se podrá ver algo de esta implementación en práctica, para probarlo a manera de multijugador, en la pantalla de inicio se debe escoger «play with friends»

El sistema genera un cuarto aleatoreo

El sistema genera un ID para jugar y un URL que se debe compartir con las personas a jugar. El sistema registra los usuarios e internamente crea una instancia de juego en por cada jugador conectado, esto es parte de la tecnología Croquet, que como ventaja principal frente a las implementaciones tradicionales por ejemplo con socket.io, NO SE REQUIERE la implementación de un servidor dedicado que administre las conexiones, sino que con una infraestructura propietaria evita al desarrollador tener que hacer toda la implementación multijugador y simplemente permite enfocarse en el desarrollo del videojuego.

Nótese la conjunción entre Croquet y Phaser

Para ver el videojuego y probar la implementación con Croquet.IO y Phaser puedes dar click en el siguiente enlace:

CLICK PARA IR AL PROYECTO