Foros - Stratos

Programadores => Programación en red => Mensaje iniciado por: Altair en 18 de Noviembre de 2012, 10:41:29 AM

Título: Juego 2D cliente servidor
Publicado por: Altair en 18 de Noviembre de 2012, 10:41:29 AM
Buenas,

estoy mirando alguna libreria para hacer un juego en red. Es un juego 2D sencillo, lo tengo todo en papel mas o menos claro, estoy usando Linux, C/C++, SDL para graficos y demas y MySQL en el servidor para almacenar los datos.

En la comunicacion entre el cliente y el servidor, como uso SDL he mirado SDL_net. Estoy trasteando con TCP con este ejemplo http://content.gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net (http://content.gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net) y me funciona mas omenos, puedo enviar texto. Digo mas o menos porque si el texto tiene espacios en blanco, en el servidor aparece solo hasta el espacio. Si envio "uno dos" el servidor recibe "uno" y el resto "(espacio en blanco) dos" se pierde. Si envio "uno_dos", el servidor lo recibe bien.

Otro tema es que estoy probando pero no me deja conectar mas de un cliente, parece que la funcion SDLNet_TCP_Recv tiene que estar dentro de un bucle, lo cual hace que solo pueda atender un socket.

He leido en una web, que estoy intentando localizar desde hace un rato, que SDL_net es mas bien una libreria sencilla para aclarar conceptos y cosas basicas, pero nada mas. Recomendaban otras dos o tres librerias, segun ellos mucho mas avanzadas.

Otra opcion que he pensado, no se si es muy valida pero en fin, es que los clientes metan su solicitud en una tabla de entrada y que el servidor continuamente lea esa tabla y procese las ordenes una a una. Con esto se conseguiria algo del tipo una accion cada vez, y para tener un orden, se pone un identificador del tipo nombre_cliente y la fecha y hora completa al milisegundo del servidor. Hay en mysql algo asi, no recuerdo exactamene el nombre. Lo que pasa, y no se si puede ser un problema, es que creo que con esto la CPU y el disco duro estan siempre en marcha porque se esta leyendo la tabla continuamente, no se si esto puede ser un problema.

En fin, no me enrollo mas, no se si estoy por el camino que toca o que, pero un poco eso es lo que estoy barajando. Igual, para los que conoceis mas estos temas, estoy poniendo una tonteria  ^_^' pero ahi lo dejo.