viernes, 21 de septiembre de 2007

online

Pues sí , es que este juego es online , aunque hasta ahora no lo pareciera .

Septiembre es el mes de "meter" las conexiones online y hacer que funcionen las cuestiones más básicas online ( ver a otros personajes , comunicarte con ellos ... ) .
Todavía no me he puesto con la parte del servidor . Aún estoy haciendo la parte online de los locales : ver a otros personajes y comunicarte bien con ellos ... ( posiciones , animaciones , chat , minijuegos , comunicaciones ... ) .

¿ os expliqué la arquitectura online de este juego ? no me acuerdo . En otro mensaje lo explicaré . Como resumen para poder seguir : hay un servidor central común a toda la ciudad , y que tiene el estado de todos los personajes y de los locales . Pero el tráfico con este servidor es MINIMO y muy "de vez en cuando" . Un coste de servidor similar al de un juego web online , por ejemplo . No pasa todo el trafico por él . Ya lo explicaré y debatiré en otro momento .

La prioridad : tiene que ser sencillo , facil , nada critico a los errores ( de red , de programacion ... imaginate que un jugador se congela 2 minutos y luego vuelve al juego ) . Para ello no puede haber cosas criticas ( tipo colisiones , disparos .... ) , el lag no debe ser grave en el juego , si se cae un cliente ( cualquier jugador ) por supuesto no tiene que pasar nada , la comunicación tiene que ser mínima ...
En cada local hay un máximo de 8 jugadores (auqnue en la ciudad , exagerando , puede haber infinitos jugadores a la vez )
Estoy utilizando tcp connectionless y peer to peer entre jugadores .
El tráfico no pasa por un jugador que hace de servidor . Los jugadores aparecen en el local , empiezan a mandar su estado a todos los del local , y entonces los demás jugadores registran al nuevo y empiezan a mandarle los mensajes a él también .
Esto lo puedo hacr gracias a que no hay cuestiones criticas en las que tenga que decidir un servidor : en un juego tipico , un shooter por ejemplo , un servidor tiene que estar continuamente decidiendo cual es la posicion "valida" de un jugador y si otro le ha dado al disparar , por ejemplo . Aquí como no hay puntos criticos como este , cada jugador es responsable de sí mismo , y decide su posición y estado ... sin que haya un servidor-juez .

Me evito hacer muchas gestiones e implementar muchas cosas .También evito tener un jugador especial que si se me cae o hace cosas raras ... tendría que hacer un par de cosas algo delicadas y saber gestionarlo bien = TIEMPO .

Tiene que ser todo MUY sencillo , que si no no llego . De hecho , espérate a ver si llego , que cada vez voy peor ... vaya sorpresa no ? ;) . las prisas de fin de proyecto ... no me habia pasado nunca antes ... ¿ y a vosotros ? . jeje .

Por supuesto , estoy sacrificando muchas cosas para conseguir algo tan sencillo .

Lo primero que direis es seguridad , por ejemplo . La mayor seguridad en el juego es que un jugador ( auqnue no le sea dificil hacer trampas como conseguir muchos puntos ... ) no pueda molestar a otro . Este juego es que no es de unos contra otros ( con la unica excepcion quiza de los duelos ,auqnue no tiene consecuencias negativas perder , y los dos jugadores tienen que decir que quieren hacer el duelo ) . La interaccion entre jugadores siempre da "puntos" o ventajas a los dos .

todas estas cosas he tardado tiempo en pensarlas y encajarlas ...

Por cierto , estoy por madrid unos dias , a ver si paso un dia a comer por allí la semana que viene .

Un saludo .

8 comentarios:

flipper83 dijo...

te esperamos con los brazos abiertos; en que estas programando el server?? tienes un socket para cada player?? la putada del peer to peer como has dicho son las trampas, en tu caso no va a ser nada comercial, pero si lo fuera tendrías problemas con cosas como spam o insultos, por eso el peer to peer, vas a implementar banneos de la peña??? bueno ya hablaremos.

Anónimo dijo...

Interesante...

Lo que creo que es más rollo de P2P es que hay muchos problemas con los puertos, ya que casi todo el mundo utiliza routers que si no confugras bien e puerto de entrada no te servirán. Siempre se puede soportar a un cliente tras de un servidor NAT si el cliente con el que se reta es capaz de escuchar en un puerto arbitrario. Pero en el caso de que los dos esten detrás de un servidor NAT no podrás hacer una conexión directa de manera sencilla.

De todas maneras hay ciertas técnicas que permiten conexión entre estas dos máquinas 'capadas'. Estas técnicas ('NAT traversal') para lograr comunicar estos dos clientes sin que tenga que rebotar la señal en otra máquina expuesta externa. Resulta muy interesante cómo los clientes de VoIP se las han ingeniado para atravesarlos :)

Qué bonito sería el mundo con una IP por cliente...

Anónimo dijo...

Por cierto, ha pasado una semana después de este mensaje... Sigues por aqui??? Jode, como haya venido a comer y ni me haya enterado... eres la letxe :P

platinio dijo...

Hola ! .
No , no , me pasaré seguramente el martes 25 .
Hay un servidor central , y tu tienes una cuenta en él y te tienes que "loguear" ( espero las reacciones a esta palabra ) al estilo wow . O sea , se puede banear a la gente ...

El tema de los puertos sí me preocupa más . Aunque lo veo inevitable . ¿ cómo se podría evitar ? ya lo hablaré contigo el martes . En cualquier juego online ( tipo unreal por ejemplo ) tienes ese problema ... hay que abrir los puertos del router , pasa con casi todos los juegos .Una pregunta , ¿ en el guild wars tienes que abrir el puerto ?

Morpheo dijo...

Yo juego al WoW con los puertos cerrados... No sé como se las apañaran pero funciona... supongo que porque siempre inician la conexión ellos, nunca "escuchan"....

platinio dijo...

si , en el wow lo que pasa es que tus conexiones son siempre conexiones cliente , nunca te pones a escuchar en un puerto como servidor .
Por lo tanto todo el trafico pasa por el servidor .

Morpheo dijo...

Diego, esa era mi teoría... pero conozco routers que con los puertos cerrados no deja salir ni el bigote de una gamba!! Ni emule con ID baja ni ostias... ¿funcionaría el WoW allí?

platinio dijo...

yo creo que cuando capan los puertos ( tipico de oficinas , universidad ... ) no va el wow . Pero que no es la configuración típica "en casa" .El router en "configuración de casa " supongo que tiene los puertos abiertos como cliente y cerrados como servidor , básicamente . De todas formas , sobre todo esto me tengo que enterar bien . Ahora mismo puedo estar equivocado . Me voy buscar buenos asesores :) . Dentro de menos de un mes te cuento :) .