Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Juego Multiplayer Phaser.Io Socket.io y Node.js

Estas en el tema de Juego Multiplayer Phaser.Io Socket.io y Node.js en el foro de Frameworks JS en Foros del Web. Hola a todos , Escribo porque me siento algo perdido ... os explico: Resulta que me propuse hacer un pequeño juego arcade en 2D ( ...
  #1 (permalink)  
Antiguo 26/07/2014, 11:22
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Juego Multiplayer Phaser.Io Socket.io y Node.js

Hola a todos ,

Escribo porque me siento algo perdido ... os explico:

Resulta que me propuse hacer un pequeño juego arcade en 2D ( tipo air hockey ) .

Entonces investigando un poco , escogí la siguiente plataforma :

Phaser.io Como framework de juegos .
Node.js + socket.io como gestor de conexiones.
MongoDb como capa de persistencia.

El caso es que mi primer experimento fue un chat ,con mensajes publicos y mensajes privados , hasta aquí sin problemas.

Después de aprender como iba Nodejs y Socket.io empece con phaser.io ...

Con juegos sin multiplayer .. es la caña pero con juegos multiplayer...me empezó a dar auténticos quebraderos de cabeza ...

Tengo varios fallos al "remotar" a 1 jugador... ( se me copian los sprites en vez de moverlos de sitio... etc...) y parece ser que phaser.io no esta preparado nativamente para ser multijugador.

Mi pregunta es sí alguien conoce o a utilizado algún otro framework en javascript para desarrollo de pequeños juegos 2D y si ha podido integrarlo bien a través de nodejs y socket.io.

Y por supuesto si alguien que haya tocado phaser.js me pudiera echar una mano ... le estaría muy agradecido.

P.D : No se si este es el mejor lugar para este post , espero lo muevan si no lo es.

Saludos a todos y gracias !

Última edición por Djoaq; 26/07/2014 a las 11:27
  #2 (permalink)  
Antiguo 03/08/2014, 10:02
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Se ve interesante Phaser.io, yo he utilizado EaselJS y lo he integrado sin problemas, voy a revisar Phaser.io e intentar integrar algo rápido, se ve muy bien esa librería :)
  #3 (permalink)  
Antiguo 06/08/2014, 13:33
Avatar de jp91  
Fecha de Ingreso: mayo-2014
Mensajes: 94
Antigüedad: 10 años, 6 meses
Puntos: 11
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Ya se han realizado varios juegos puedes entrar al foro de desarrolladores html5gamedevs.com aqui hablan de uno http://www.html5gamedevs.com/topic/4...r-demo-inside/ en su firma tiene un tetris pultiplayer.
__________________
OOoo Como hacer ooOO
juegos con Html5.
  #4 (permalink)  
Antiguo 08/08/2014, 09:35
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Ok, después de unos días de ponerme a hacer esto lo he conseguido!! Aquí te dejo un pequeño demo:

http://aprendejs.com/

El código JS lo puedes leer fácilmente, realmente es poco código. En este momento solo están funcionando las conexiones con sockets, cada que se conecta un usuario nuevo se crea su monito en todos los clientes, cuando el jugador local mueve su monito este también se mueve en todos los clientes.

Para mover al monito simplemente envío las coordenadas y dirección a los jugadores remotos, esto usando websockets:

Código Javascript:
Ver original
  1. Stars.socket.emit("moveplayer", {id:me.current.id, x: me.player.x, y:me.player.y,direction:direction});

Luego tengo esta función que se ejecuta únicamente en los jugadores remotos:
Código Javascript:
Ver original
  1. _moveRemotePlayer : function(event,message){
  2.         var me = this,
  3.             movePlayer = me.remotePlayers[message.player.id];
  4.  
  5.         // Player not found
  6.         if (!movePlayer) {
  7.             console.log("Player not found: "+message.player.id);
  8.             return;
  9.         };
  10.  
  11.         // Update player position
  12.         movePlayer.x = message.player.x;
  13.         movePlayer.y = message.player.y;
  14.         if(message.player.direction){
  15.             movePlayer.animations.play(message.player.direction);
  16.         }else{
  17.             movePlayer.animations.stop();
  18.      
  19.             movePlayer.frame = 4;
  20.         }
  21.     }

Esta función se ejecuta cuando los jugadores remotos reciben las coordenadas, aquí solo asigno las nuevas coordenadas y ejecuto la animación.

En este momento todavía no detecto coaliciones entre jugadores, ese es el siguiente paso, planeo hacer un juego donde existan dos tipos de jugadores, humanos y leones (o cualquier otro animal), los humanos correrán para no ser comidos por los leones :)

Saludos
  #5 (permalink)  
Antiguo 11/08/2014, 10:26
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Cita:
Iniciado por stock Ver Mensaje
Ok, después de unos días de ponerme a hacer esto lo he conseguido!! Aquí te dejo un pequeño demo:

http://aprendejs.com/

El código JS lo puedes leer fácilmente, realmente es poco código. En este momento solo están funcionando las conexiones con sockets, cada que se conecta un usuario nuevo se crea su monito en todos los clientes, cuando el jugador local mueve su monito este también se mueve en todos los clientes.

Para mover al monito simplemente envío las coordenadas y dirección a los jugadores remotos, esto usando websockets

Saludos
Buen aporte! Yo lo saqué de este ejemplo:https://github.com/XicoMBD/phaser-multiplayer-game
Ahora estoy en el punto de que las colisiones y la física funcionan y ya solvente el problema de la duplicación de sprites . El problema que se presenta ahora es que me he dado cuenta de que cuando se juega via Wi-Fi aveces hace lag.. y por lo que he estado investigando , resulta que la conexión Wi-Fi soporta la pérdida de paquetes... y eso hace que de vez en cuanto haya lag.. estoy estudiando laa posibilidad de jugar con intervalos de tiempo para intentar ahorrar recursos de transimision de datos, teniendo en cuenta que node recibe las posiciones cada 12/16 ms.
Otro experimento que estamos probando es ver si merece la pena ccomprimir los Json para ahorar ancho de banda a la hora de recibir y enviar posiciones.
Ire posteando mis experiencias.
  #6 (permalink)  
Antiguo 12/08/2014, 09:56
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Yo también estoy en eso de optimizar el envío de datos, noté cierto lag cuando lo subí al servidor y también ando buscando mejores soluciones.

Es la primera vez que hago juegos, así que mi experiencia en este ramo es nula. Igual voy a ir documentando mis experiencias en mi blog y subiendo mis experimentos a github.

Saludos
  #7 (permalink)  
Antiguo 12/08/2014, 17:18
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: Juego Multiplayer Phaser.Io Socket.io y Node.js

Yo estoy en la misma situación stock!
Pero aun estoy haciendo pruebas.. tengo varias cosillas en mente... restrasar los emits..para bajar la tasa de transferencia.. pasar json comprimidos (bson) segmentar los movimentos por bloques y hacer tweens... etc etc!
Ya iré poniendo en común!

Etiquetas: javascript, js, juego, multiplayer, socket-io
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.