Autor Tema: [Proyecto Juego - Presentación] Vector City [Juego Flash]  (Leído 25658 veces)

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #135 en: 20 de Marzo de 2011, 17:45:57 pm »
Adelante, Ya paso de ser flash a un proyecto en general.
---
Gracias chicos, Pero con cada cosa buena llega una mala.
¿Como seria posible el "movimiento" del coche por sockets?, me refiero en el sentido de que el coche estará cambiando de coordenadas todo el tiempo, es decir, no puedo enviar un socket por cada cambio de coordenadas del coche. Esto jodería horriblemente el servidor aun estando desde un VPS.

Si envío las coordenadas al servidor cada "x" intervalo de tiempo, Los otros que estén conectados verían "cortado" el movimiento de tu coche.

Si el coche sigue una linea de guía por cada coordenada que se le asigne, el retraso de tiempo entre un jugador y el otro seria alrededor de 5 o 10 segundos.

¿Como le hago?
¿Existe alguna forma lógica de hacer esto por sockets?

En el caso de los juegos en los que se usa un movimiento por click, seria muy fácil ya que este solamente envía un socket con la coordenada de inicio y la final, Lo que hace el otro cliente es seguir una linea "guia" desde el punto de inicio hasta el punto final.

Si me pueden ayudar en pensar comos e podría hacer, se los agradeseria como no tienen idea.
Saludos

Si usas TCP el socket debe estar abierto constantemente. Desde que se conecta hasta que sale del juego.
Lo único que deberías es enviar paquetes por ese socket, pero el socket en sí siempre esta abierto y activado.

Como posibilidad, podrías considerar mandar vectores en lugar de posiciones. Nunca he probado este método y no se si alguien lo usa pero no me parece mala idea.
Me explico: en lugar de mandar coordenadas (como 50,20) y el servidor mueve el coche a esa posición, podrías mandar direcciones y vectores de velocidad y aceleración (no se si alguna vez has dado física en el colegio) El caso es que en lugar de mandar a donde vas lo que mandas es hacía donde vas, con que velocidad, y con que aceleración, y durante cuanto tiempo. Si mandas esto con por ejemplo 1 segundo de tiempo, ese vector iría cambiando y enviandose cada segundo y por lo tanto el coche se iría moviendo en cada segundo de una manera diferente.

Te sirva o no esto, me gustaría que cuando encuentres una solución viable la publicaras pues me parece un tema muy interesante!

Saludos :)
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Comunidad PHPeros

Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #135 en: 20 de Marzo de 2011, 17:45:57 pm »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #136 en: 21 de Marzo de 2011, 00:02:01 am »
Si usas TCP el socket debe estar abierto constantemente. Desde que se conecta hasta que sale del juego.
Lo único que deberías es enviar paquetes por ese socket, pero el socket en sí siempre esta abierto y activado.

Como posibilidad, podrías considerar mandar vectores en lugar de posiciones. Nunca he probado este método y no se si alguien lo usa pero no me parece mala idea.
Me explico: en lugar de mandar coordenadas (como 50,20) y el servidor mueve el coche a esa posición, podrías mandar direcciones y vectores de velocidad y aceleración (no se si alguna vez has dado física en el colegio) El caso es que en lugar de mandar a donde vas lo que mandas es hacía donde vas, con que velocidad, y con que aceleración, y durante cuanto tiempo. Si mandas esto con por ejemplo 1 segundo de tiempo, ese vector iría cambiando y enviandose cada segundo y por lo tanto el coche se iría moviendo en cada segundo de una manera diferente.

Te sirva o no esto, me gustaría que cuando encuentres una solución viable la publicaras pues me parece un tema muy interesante!

Saludos :)

Exacto, eso también lo pensé pero también pensé en las colisiones.
En el caso de que tome una coordenada futura tomando en consideración el intervalo de tiempo (para mantenerlo en tiempo real, ya que de lo contrario estaría atrasado por un segundo) este daría problemas con las colisiones ya que el coche seguiría de largo un segundo hasta que se de cuenta que colisiono xD

Aunque, de igual forma enviando vectores para un evento de movimiento, nunca en la vida el vector enviado (el que se reproduce en los otros clientes) va a ser igual al movimiento que estas realizando (Angulo de giro), se va a notar la diferencia.

Aunque, la forma mas razonal seria esa, ya que enviar un dato de posición por cada pixel que cambie.... No pasan dos segundos cuando el vps ya quede colgado y el servidor casi que te escupe en la cara (si pudiera) y te diría las palabras mas bajas que te puedas imaginar.. xDD

En fin, tendré que ver como hacer eso en todo caso si quiero que el juego fuera "entretenido", algo es algo.
Twitter: @JoakoM010



Desconectado Gero

  • PHPerit@
  • *
  • Mensajes: 4
  • Karma: 0
  • Sexo: Masculino
  • Chupacabras.
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #137 en: 21 de Marzo de 2011, 22:03:49 pm »
Está muy bueno eh!
Que ganas de jugarlo. Jajaja. ;)

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #138 en: 22 de Marzo de 2011, 20:11:00 pm »
Exacto, eso también lo pensé pero también pensé en las colisiones.
En el caso de que tome una coordenada futura tomando en consideración el intervalo de tiempo (para mantenerlo en tiempo real, ya que de lo contrario estaría atrasado por un segundo) este daría problemas con las colisiones ya que el coche seguiría de largo un segundo hasta que se de cuenta que colisiono xD

Aunque, de igual forma enviando vectores para un evento de movimiento, nunca en la vida el vector enviado (el que se reproduce en los otros clientes) va a ser igual al movimiento que estas realizando (Angulo de giro), se va a notar la diferencia.

Aunque, la forma mas razonal seria esa, ya que enviar un dato de posición por cada pixel que cambie.... No pasan dos segundos cuando el vps ya quede colgado y el servidor casi que te escupe en la cara (si pudiera) y te diría las palabras mas bajas que te puedas imaginar.. xDD

En fin, tendré que ver como hacer eso en todo caso si quiero que el juego fuera "entretenido", algo es algo.

Bien pensado lo de las colisiones, no se me habia ocurrido...

Se me ha ocurrido otra forma, que incluso me parece mejor y también podría aplicar yo a Nails jaja.

En lugar de vectores, que como has dicho no parece funcionar muy bien, podrías enviar las coordenadas cada X intervalo de tiempo.
Estas coordenadas las recibe el servidor, y las remite a los demás.
Cada cliente por tanto tiene coordenadas de un jugador cada X tiempo.
Estas coordenadas las metes en una cola (¿conoces las colas? Basicamente es una lista donde el primero que entra es el primero que sale).
De forma que se van acumulando ahí:
Por ejemplo: Un usuario se mueve de [2:3] a [5:3] y luego a [8:4], eso se envía al servidor, la distancia temporal entre cada envío es X.
Los demas clientes reciben esos datos con una distancia temporal X.
Eso lo almacenas así: [2:3]  [5:3]  [8:4], y además tienes como dato la direccion origen (en la que estaba el cliente que envió los paquetes antes de moverse) que seria: [0:0] por ejemplo.
Ahora solo te faltaría una funcion que dibujase la trayectoria desde [0:0] a [2:3], cuando termine, la dibuja desde [2:3] hasta [5:3] y cuando termine la dibuja de [5:3] a [8:4]. Todas las trayectorias serían lineas rectas.

Pero claro, en el juego no todo serán lineas rectas ¿Como se arregla esto?. Cuanto mas pequeño sea el intervalo de tiempo X entre la emisión de coordenadas por parte del cliente, mas real será el movimiento. Cuanto mas grande. mas irreal.

El sistema de colisiones sería parte del cliente, y no del servidor. El cliente del personaje que se esta moviendo conoce la coordenada real donde esta posicionado su jugador. Y a la vez conoce las coordenadas de los objetos sobre los que puede colisionar. Según el personaje se mueva comprueba si esta colisionando, y si lo hace envía la posición donde colisionó al servidor, sin tener en cuenta el intervalo de tiempo que ha pasado desde la ultima información. De esta forma tendrías el sistema funcionando y me parece mucho mas factible y real que lo de los vectores.

El problema es que como todos sabemos, los clientes se pueden hackear. Si te hackean el sistema de colisiones estarían moviendose por donde quisieran. (no es muy complicado hackear un sistema así). La solución sería que el servidor vaya comprobando que todas las posiciones que le van mandando sean coherentes y tengan sentido (por ejemplo que no haya atravesado ninguna pared). Esto tampoco me parece que sea muy dificil de implementar (Obviamente el servidor necesitará una copia del mapa).

En fin! Este sistema me parece mucho mejor. Estoy por ponerlo a prueba incluso en Nails! jaja
Un saludo, espero haberte ayudado :) En cualquier caso si se te ocurre algo mas no dudes en seguir la conversacion! Parece interesante :)
« Última modificación: 22 de Marzo de 2011, 20:12:54 pm por TLX »
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #139 en: 22 de Marzo de 2011, 21:38:05 pm »
Primero que nada, yo pienso que antes de comenzar a trabajar con el tema de sockets y demás, termines una versión offline. Para que el juego funcione al 100%, sin errores ni nada y con todo el mapa completo. Ya después comenzarías a implementar la versión multijugador, es que te lo digo en serio, este proyecto tiene futuro, pero dejará de tener futuro si te apresuras en tener algo. El apuro trae cansancio.

Lo de los vectores me llamó la atención TLX, más adelante veré como puedo aplicarlos para unos proyectitos que tengo en mente.

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #140 en: 23 de Marzo de 2011, 22:30:55 pm »
Bien pensado lo de las colisiones, no se me habia ocurrido...

Se me ha ocurrido otra forma, que incluso me parece mejor y también podría aplicar yo a Nails jaja.

En lugar de vectores, que como has dicho no parece funcionar muy bien, podrías enviar las coordenadas cada X intervalo de tiempo.
Estas coordenadas las recibe el servidor, y las remite a los demás.
Cada cliente por tanto tiene coordenadas de un jugador cada X tiempo.
Estas coordenadas las metes en una cola (¿conoces las colas? Basicamente es una lista donde el primero que entra es el primero que sale).
De forma que se van acumulando ahí:
Por ejemplo: Un usuario se mueve de [2:3] a [5:3] y luego a [8:4], eso se envía al servidor, la distancia temporal entre cada envío es X.
Los demas clientes reciben esos datos con una distancia temporal X.
Eso lo almacenas así: [2:3]  [5:3]  [8:4], y además tienes como dato la direccion origen (en la que estaba el cliente que envió los paquetes antes de moverse) que seria: [0:0] por ejemplo.
Ahora solo te faltaría una funcion que dibujase la trayectoria desde [0:0] a [2:3], cuando termine, la dibuja desde [2:3] hasta [5:3] y cuando termine la dibuja de [5:3] a [8:4]. Todas las trayectorias serían lineas rectas.

Pero claro, en el juego no todo serán lineas rectas ¿Como se arregla esto?. Cuanto mas pequeño sea el intervalo de tiempo X entre la emisión de coordenadas por parte del cliente, mas real será el movimiento. Cuanto mas grande. mas irreal.

El sistema de colisiones sería parte del cliente, y no del servidor. El cliente del personaje que se esta moviendo conoce la coordenada real donde esta posicionado su jugador. Y a la vez conoce las coordenadas de los objetos sobre los que puede colisionar. Según el personaje se mueva comprueba si esta colisionando, y si lo hace envía la posición donde colisionó al servidor, sin tener en cuenta el intervalo de tiempo que ha pasado desde la ultima información. De esta forma tendrías el sistema funcionando y me parece mucho mas factible y real que lo de los vectores.

El problema es que como todos sabemos, los clientes se pueden hackear. Si te hackean el sistema de colisiones estarían moviendose por donde quisieran. (no es muy complicado hackear un sistema así). La solución sería que el servidor vaya comprobando que todas las posiciones que le van mandando sean coherentes y tengan sentido (por ejemplo que no haya atravesado ninguna pared). Esto tampoco me parece que sea muy dificil de implementar (Obviamente el servidor necesitará una copia del mapa).

En fin! Este sistema me parece mucho mejor. Estoy por ponerlo a prueba incluso en Nails! jaja
Un saludo, espero haberte ayudado :) En cualquier caso si se te ocurre algo mas no dudes en seguir la conversacion! Parece interesante :)

Uff, Te ganaste el cielo!
Ya mas o menos tengo una idea con lo que dijiste de enviar un socket al momento de que el cliente detecte colisión
Mil gracias.

---

Actualizo!
-Sistema de día/ noche mejorado.
-Nueva interfaz versión BETA en camino.
-Gracias a rafa, El personaje va a tener "energía". De ella dependerá la velocidad al caminar.
Twitter: @JoakoM010



Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #141 en: 24 de Marzo de 2011, 01:39:19 am »
Actualizo!
Próximamente: Nueva interfaz BETA.

Twitter: @JoakoM010



Desconectado тockηick

  • PHPero Avanzado
  • ****
  • Mensajes: 374
  • Karma: 11
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #142 en: 24 de Marzo de 2011, 02:15:32 am »
Actualizo!
Próximamente: Nueva interfaz BETA.



No creo que que muy bien que los signos.. ($ y el reloj por ejemplo) queden del mismo color del fondo de la box.. pero buen trabajo.. saludos!

Desconectado Inalambrico

  • PHPerit@
  • *
  • Mensajes: 39
  • Karma: 0
  • Siempre para ayudar ;)
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #143 en: 26 de Marzo de 2011, 00:29:50 am »
No entiendo, ¿Va a ser un juego estilo GTA2? Lo unico que con mejores graficos, ya que no es completamente en 2D.. ¿Me equivoco?

Desconectado Fermin

  • PHPero Experto
  • *****
  • Mensajes: 783
  • Karma: 7
  • Sexo: Masculino
  • Nada que decirte.
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #144 en: 27 de Marzo de 2011, 04:49:17 am »
Me encanta como va quedando el juego, se ve con un buen futuro...

Saludos

Desconectado CerdoFlow

  • PHPerit@
  • *
  • Mensajes: 48
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #145 en: 27 de Marzo de 2011, 21:47:31 pm »
todos los dias entro para ver cuanto le queda al proyecto, lo espero ancioso  :D

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #146 en: 06 de Abril de 2011, 22:05:26 pm »
Como el host de imágenes re-abrió, Revivo tema.
En estos momentos me encuentro esperando los nuevos diseños.
Twitter: @JoakoM010



Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #147 en: 09 de Abril de 2011, 22:01:44 pm »
Actualizo!

-Nuevo diseño de alertas.
-Nueva interfaz en barra horizontal superior añadida.

Twitter: @JoakoM010



Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #148 en: 09 de Abril de 2011, 22:19:19 pm »
Actualizo!
-Fue añadido un botón de donaciones en PayPal en el tema para aquellos que deseen colaborar monetariamente en el proyecto.
Si quieren hacer una donación avísenme vía Mensaje Privado en el foro.

-Dos nuevos puntos para la personalización del coche (Frenos & Retroceso, Actuales: Aceleración, velocidad, dirección, frenos, retroceso)

Edito: En la pagina de inicio del Log in también fue agregado el botón de PayPal para recibir donaciones:
« Última modificación: 09 de Abril de 2011, 22:22:47 pm por SoyJoaquin. »
Twitter: @JoakoM010



Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[Proyecto Juego - Presentación] Vector City [Juego Flash]
« Respuesta #149 en: 09 de Abril de 2011, 22:36:53 pm »
Se me acaba de ocurrir que podrías en tu juego hacer algo así como un club VIP, o vender partes de carros especializadas a cambio de dinero, es otra forma de conseguir que los usuarios donen :P
- Moderador de PHP