Foros - Stratos

Programadores => Programación en red => Mensaje iniciado por: Virtus en 01 de Enero de 1970, 01:00:00 AM

Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Virtus en 01 de Enero de 1970, 01:00:00 AM
                                Vale, gracias a los posts de ayer y gracias a AK47 he resuelto muchas de las pegas que tenia... pero continuo investigando. Mi cuestion ahora es la siguiente:

Supongamos ke instalo dos servers para el juego y me gustaria que cada cliente que se conectara supiera si hay 2 servers, si estan operativos y que demonios!!! ke cualquiera pueda añadir un server a la lista...

Como puedo mantener esa lista actualizada??? es decir, si un server se desconecta o si alguien crea una partida en modo server... que todo el mundo sepa que hay desde su cliente????

Gracias!!!
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Gunder en 01 de Enero de 1970, 01:00:00 AM
                                Hola Virtus,

la mejor forma es tener un porgrama que se encarga de mantener un catalogo de los servidores activos y de su estado.

Asi, los clientes se conectaran con este programa para solicitar infromacion y los servidores para informarle de su estado.

Ale.
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Virtus en 01 de Enero de 1970, 01:00:00 AM
                                Si, si eso lo tenia claro... pero, como mira ese programa si el server esta activo??? usando el PING?

Y luego, esa lista ke hace con ella? la pone en FTP en formato texto y los clientes lo interepretan y presentan la lista en el juego???

Gracias.
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: undol en 01 de Enero de 1970, 01:00:00 AM
                                Bueno esto ya es un poco mas complicado .. primero de todo a grandes rasgos te hace falta un servidor principal o varios que nunca esten caidos para que como mínimo el cliente pueda encontrar una primera ruta , importante que si registras este servicio en algun server de internet las direcciones que distribuias a los clientes sean nombres, ya que si algun día cambia la ip de tu server o servers principales vas a tener problemas !!!! o sea que estate al loro !!!

A parte de todo esto también tendras que montarte como dicen por arriba una lista on-line de los servers activos .... etc etc etc

Todo esto lo puedes montar bajo GNU/Linux quizà sea la plataforma mas indicada entre otras cosas pq puedes encontrar el código fuente de un servidor de IRC que en este caso es un patron de solución a tu problema

Saludos
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Virtus en 01 de Enero de 1970, 01:00:00 AM
                                Si, si ya digo... eso lo tengo claro. Es decir, un server con nombre (http://www.juegaketejuega.com, por ejemplo), una makina secundaria ke mantiene una lista de los servers ke tenemos y que permite añadir a los usuarios sus propios servers... eso lo tengo claro...

La pregunta es mas concreta: como mantiene ese ordenador secundario la lista de ips/direcciones de los servers que estan activos????

Con Ping? o me hago un pakete propio ke sirva de ping??? o hay alguna otra manera???

Salu2. Jesus.
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: undol en 01 de Enero de 1970, 01:00:00 AM
                                Pues muy facil por ejemplo:

Tienes el server A que es el que mantiene la lista de servidores activos

1) Un cliente B es potencialmente un nuevo
servidor de juegos, pues:

Envia un paquete UPD o TCP al serve A con su ip por ejemplo

El serer A lo atiende y coje esa direccion IP y lo pone en su tabla de servidores activos (por ejemplo SQL)

2) Un cliente C potencialmente un jugador, quiere saber que servidores se encuentran activos , le pregunta a A !!

A le responde con la lista de la tabla !!!

Entonces C decide donde quiere ir, y puede consultar directamente información a las ip de la lista (numero de jugadores en el server,estado del juego ...)


3) A no tiene claro si su lista esta muy actualizada, manda un paquete TCP o UDP para todos los servers que tiene activos (al tanto con un ataque DOS a tu mismo) y si responde los deja en la lista sino es el caso los saca

4) El cliente B esta harto de que otros le chupen el amplio de banda de su modem de 56 k y decide cortar por lo sano, manda un msg al serve A

Esto podría ser una "aproximación" a la dialéctica para manterner de forma mas o menos correcto la lista de servidores activos


[ Este Mensaje fue editado por: undol el 2002-05-16 12:37 ]                                
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Gunder en 01 de Enero de 1970, 01:00:00 AM
                                Lo mas sencillo esque los servidores de juego le digan al servidor de catalogo cada cierto tiempo que siguen activos.

Respecto a las consultas de los clientes, pues te conectas por sockets al servidor de catalogo y le pides la informacion que te interesa.

Ale.
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Virtus en 01 de Enero de 1970, 01:00:00 AM
                                Vale, no es mala idea... pero, ke pasa si algun cliente pide la lista y estamos en el "entre-tiempo" de actualizacion... es decir, estaria intentando acceder a un server ke ya no esta... pero ke no ha sido kitado de la lista por ke aun no ha transcurrido ese tiempo de actualizacion...

por cierto, cuanto es ese tiempo en el que se actualiza????
                               
Título: Hmmm, vale... y ahora...como mantengo una lista de servers d
Publicado por: Milinko en 01 de Enero de 1970, 01:00:00 AM
                                La información que proporciona tu servidor de catálogo es diferida. Es decir, desde que se ofrece hasta una actualización posterior puede estar desfasada en un momento dado.

La frecuencia de actualización depende de varios factores:

- El número de servidores de juego que le ofreces al cliente (no es lo mismo actualizar dos servidores que 200)
- El tipo de juego. Por ejemplo seria deseable actualizar un servidor de juego de ajedrez a menudo ya que es muy posible que una sala ya esté llena para jugar (solo son dos jugadores por sala). Por el contrario un juego donde en cada "canal" pueda haber 20 jugadores (por ej.) no es necesario actualizarlo tan a menudo ya que la posibilidad de que esté lleno es menor.

En cualquier caso, siempre es posible que un usuario decida jugar en un sitio ya no disponible (sea cual sea la frecuencia de actualización) por lo que es necesario una recuperación de errores de ese tipo, ya sea enviandole a otro servidor automaticamente ya sea ofreciendo mensajes de "Servidor Lleno", etc...

Virtus, te recomiendo que te leas este artículo que es muy interesante (a mi me enseñó mucho acerca del problema que planteas...)

http://www.gamasutra.com/features/20000511.../bernier_01.htm

Un saludo

Milinko.