Comunidad de diseño web y desarrollo en internet online

Ayuda con juego online

Citar            
MensajeEscrito el 28 Oct 2009 02:10 pm
ATENCION: la explicacion es larga, y las dudas son teoricas.

Bueno, hola amigos programadores (?)
Les cuento mas o menos la historia; tengo un proyecto, el cual consiste en desarrollar un juego online con flash, el juego es una especie de shooter con juego de plataformas, similar al LieroX o Teeworlds, por si alguno queria darse una idea. Uso Flash 8, con AS2, pero mis dudas no son sobre script, sino mas bien son dudas generales.

Veran; necesito una mano para refinar el protocolo que tengo pensado para el juego, como ya dije el juego funcionara de manera ONLINE por lo que varios usuarios participaran al mismo tiempo. Una vez mas, para el que le interese, uso SmartFoxServer (version 1.6 creo).

Ahora mi idea de protocolo es mas o menos asi; una vez dentro del juego los usuarios, al moverese (es decir, al cambiar su posicion respecto al mapa), este, el usuario, la envia al servidor, y el servidor re-envia este paquete a los demas clientes de la sala, para que estos "muevan" el objeto del jugador contrario.

Luego de un par de pruebas locales, me di cuenta, que el protocolo no funcionaba muy bien, tenia bastante lag al probarlo en una red LAN. Para empezar siendo la pelicula flash de 60fps, quiere decir que mientras se mueva estaria mandando 60 paquetes por segundo (si, suena demasiado, hasta para mi). Luego pense en ponerle un "delay", ahora manda 20 paquetes por segundo mientras se mueva, aun asi, al momento de jugar, con dos clientes en la misma maquina, se mueve bastante entrecortado y feo. Se les ocurre alguna otra idea para cumplir con esto?
Si alguien pudiese darme una mano se lo agradeceria mucho : )

Gracias por su tiempo, espero respuestas~

Por jonlolo

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Oct 2009 03:04 pm
Si el smartfoxserver y los clientes están en una red LAN el lag no debería ni notarse, considera trabajar a 24 FPS y mandar no más de dos paquetes por segundo a menos que la info sea muy relevante. Si realmente piensas hacerlo fuera de una LAN, es decir en Internet, y el juego es de acción (no conozco mucho de juegos) de tipo disparar y matar, te encontrarás con un casi imposible

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Oct 2009 09:08 pm
Bueno, no se si es 'lagg' lo que hay realmente. Estuve haciendo otras pruebas, siempre en red LAN, enviando de a 60 mensajes por segundo (por los 60 fps), se veia bastante bien de hecho. Aun asi, si, la idea seria que funcionace en una internet, pero por ahora me concentro en LAN.
Pienso de todas formas en reducir la cantidad de mensajes por segundo. Me has dicho que envie 2 mensajes por segundo. Por como lo veo, eso no me serviria, de los paquetes que hablo son las posiciones del jugador, me suena que es demasiado poco.
El juego SI es un juego de accion supongo. Es un 'real-time-shooter-platformer' (es decir, un mezcla entre juego de plataformas y shooter 2D, siempre en tiempo real, por lo que la informacion de las posiciones es bastante relevante, y necesito enviarla bastante). Aqui un poco del juego en el que me estoy basando.
Por esto decia yo que las dudas era mas bien teoricas, no entiendo como le hacen los shooter reales para funcionar tan bien online, obviamente ya no estamos hablando de Flash, pero la idea es basicamente la misma (o no?). Me serviria bastante saber como funcion un shooter real xD cosa que no he encontrado en ninguna lado por ahora.
Creo que no tengo mas que decir por ahora.
Por favor mantenga el tema vivo, cualquier comentario, opinion, link, etc lo aprecio
Gracias~

Por jonlolo

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Oct 2009 12:41 am
Los juegos que funcionan online (via Internet) son altamente predictivos, es decir se puede calcular que movimiento va a hacer el oponente, de todas formas no conozco mucho de los que no son basados en Flash

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2009 04:23 pm
Juegos online en 'tiempo-real' que trabajen en plataforma Flash conozco muy pocos, Platform Racing es un ejemplo creo.
Con respecto a lo de predecir los movimientos, o lo que sucedera, creo que no tengo ni en tiempo ni el nivel como para hacer eso ahora :/
Aparentemente tendre que seguir con mi idea original, tratare de reducir el trafico. Sigo aceptando ideas.

Gracias~

Por jonlolo

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Oct 2009 06:48 pm
Hola, te recomiendo SharedObject con protocolo RTMP.

Servidores:
- Red5 o FMS

En Internet la latencia es de 160-230 milisegundos, los juegos de escritorio rondan los 30-90 milisegundos.
En una LAN no lo recuerdo exactamente, pero creo que rondaba los 30 milisegundos.

Saludos.

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 30 Oct 2009 01:08 am
Ok, creo que me tiraste un par de datos muy importantes o utiles para mi, el unico problema es que no entendi la mitad de lo que dijiste o.o
Lo de los SharedObject, protocolo RMP, y redes Red5 o FMS.
Lo otro son promedios de ping.
De todas formas quiero aclarar que es un proyecto por ahora, no planeo digamos subirlo a internet y que sea realmente funcional.
@micheloud: podrias darme un poco mas de informacion sobre esas cosas, algun link o algo?
Sino o bien seguire con mi idea, gastando mucho trafico de red y sera 'decente' para redes LAN, o tal vez averiguare algo sobre predecir.
Tambien, alguien podria guiarme un poco en eso ultimo, lo de predecir?

Gracias~

Por jonlolo

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2009 10:40 am
Hola.

Lo importante es que le saques ventaja a RTMP (real-time message protocol), es el protocolo de flash player para para establecer conexiónes asíncronas bidireccionales, para esto abre un socket entre el cliente y el servidor (normalmente en el puerto 1935).
Asíncrona: porque se utiliza la conexión cuando haga falta.
Bidireccional: porque el cliente puede invocar a métodos del servidor (o cambiar SharedObject's compartidos), y el servidor puede invocar métodos del cliente (o cambiarle SharedObject's).
Hay mucha documentación en internet acerca de esto, lo bueno es que ActionScript 2 ya existe esta capacidad.
Si seguis investigando y te encontras con preguntas avisame. Saludos.

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.