RealTimeBattle IV (comunicados de guerra)
Del robot de entrada salida Basica que dije en anterior articulo os dejo el log de entrada capturada que tiene la cualidad que sale masticadito, aunque para mas informacion, lo analizaremos paso a paso, no es todo el log pero si el mas interesante:
Num Unknow Mensajes:2.450500e+04
INITIALIZE
Num Unknow Mensajes:1.365060e+06
GAME_STARTS
ROBOTS_LEFT
Num Unknow Mensajes:1.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
RADAR
Num Unknow Mensajes:3.000000e+00
COORDINATES
Num Unknow Mensajes:3.000000e+00
INFO
Num Unknow Mensajes:3.000000e+00
ENERGY
Num Unknow Mensajes:9.848000e+03
WARNING:Warning
Unknown message:A
RADAR
Num Unknow Mensajes:3.000000e+00
COORDINATES
Num Unknow Mensajes:3.000000e+00
INFO
Num Unknow Mensajes:3.000000e+00
WARNING:Warning
Unknown message:ccelerate
WARNING:Warning
Unknown message:Ac
ENERGY
Num Unknow Mensajes:1.912900e+04
WARNING:Warning
Unknown message:celerate
WARNING:Warning
Unknown message:Acc
RADAR
Num Unknow Mensajes:3.000000e+00
COORDINATES
Num Unknow Mensajes:3.000000e+00
INFO
Num Unknow Mensajes:3.000000e+00
WARNING:Warning
Unknown message:elerate
….continua….
NumUnknow Mensajes: son las lineas basura algunas veces y otras veces son cosas que no se han podido reconocer como
GAME_OPTION
Num Unknow Mensajes:2.000000e+00
Las dos lineas desconocidas son los parametros de Opcion.
Porque el formato de los mensajes son en varias lineas (3 casi siempre), donde la primera es un texto tal cual con el tipo de mensaje Radar, Initialize, Warning… y despues una linea con cada parametro del mensaje.
Por eso si vemos el log, se ve claramente donde esta las lineas de basura porque se van a calcoño el numero de lineas como por ejemplo:
Las de antes de Iniciar el robot (INITIALIZE):
Num Unknow Mensajes:2.450500e+04 <- que hay casi 20.000 lineas de basura
Esto significa que el bucle de lectura esta leyendo como un cosaco y el RealTimeBattle como todavia no ha iniciado nada pues responde con basura (numeros al azar sin un encabezado de mensaje), hasta que si ya manda el inicio.
Y despues de iniciar tenemos:
Num Unknow Mensajes:1.365060e+06
GAME_STARTS
Casi 1 millon de lineas de basura hasta que el server empieza el juego.
Pero justo despues ya vemos que nos tragamos una linea como basura pero que es informacion:
ROBOTS_LEFT
Num Unknow Mensajes:1.000000e+00
Por parte de la salida pues segun el codigo fuente, el robot solo de momento corre hacia adelante:
if(comienzo)
{
printf(”Accelerate 5\n”);
fflush(stdin);
}
Se ve que es interesante hacer un “flush flush” para que vuelque bien la salida porque sino hay problemas, por cierto esta dentro de una condicional porque sino el RealTimeBattle se queja (con warnings) de que queremos acelerar el robot antes de tiempo.
Y bueno hasta aqui el interesante analisis y un poco superficial pero sobrado de como se comunica el RealTimeBattle.
Anteriores Articulos:
Por: MD | Consejos, Trucos y Tutoriales | | Referencias ()







He colaborado en la creacion del robot Chuck Norris que citas en uno de los posts anteriores. Debemos decir en nuestro descargo que no conseguimos que leyera nada de lo que le enviaba el servidor, asi que enviaba aleatoriamente mensajes como acelerar, rotar y disparar. Le han puesto de alias “la puta”, porque iba de esquina en esquina :)
A lo mejor completamos tus intrucciones/ayudas con codigo en Java dentro de unos meses.
Tenemos una duda: el robot le envia al servidor cadenas de texto, ¿pero el servidor le envia la informacion como cadenas de texto tambien?
Muchas gracias
Comentario por Unho — 6 Marzo 2007 10:26 am
jajajaj xD Es bueno tomarse las cosas con buen humor, espero no haberme pasado hablando del robot de Chuck Norris, no obstante era por hacer la coña sin animo de ofenderle ;).
Pese a que lo tengo algo olvidado el Realtimebattle, si el servidor te manda la informacion como cadenas de texto, y segun el “modo comunicacion” que le pongas al principio en las cadenas de texto que le envias de configuracion pues si es el modo que puedes “leer cuando te de la gana” pues si no tiene ningun dato que enviarte solo te envia basura.
Venga animos y a seguir con el hobby :).
Comentario por MD — 6 Marzo 2007 11:51 am
Vamos a hacer Chuck v2.0. Te pegaria el codigo de la version 1.0, pero desgraciadamente lo hemos perdido, y eso que teniamos dos copias de seguridad :) Para la version 2 haremos que lea los mensajes del servidor y que haga tonterias.
Tomaremos el codigo que has puesto en los posts como base, y para aclararnos las ideas. Y despues intentaremos hacer el robot en java.
Hasta luego.
Comentario por Unho — 6 Marzo 2007 12:29 pm
Gracias por ser de ayuda, ale adios.
Comentario por MD — 6 Marzo 2007 2:14 pm
Por cierto, le faltan los includes.
Comentario por Unho — 9 Marzo 2007 9:46 am
Uy cierto eso es de que ha pillado los > y los < en plan etiquetas de html, voy a arreglarlo. Gracias.
Comentario por MD — 9 Marzo 2007 6:38 pm
OK. Estamos ahora mismo a vueltas con el código. Hay cosas que no entendemos, pero nos vamos arreglando. Tu código no es de mucha ayuda.
Comentario por Unho — 13 Marzo 2007 1:08 pm
Uhmm aqui encontrado yo un poco mas de codigo que sera mas decente que el mio, incluso se han hecho una libreria y todo:
http://pinguino.dyndns.org/vernew.pl?id=566
Comentario por MD — 13 Marzo 2007 11:37 pm
Ya. Muchas gracias. Te comunico que este año dos de mis compañeros se han presentado al torneo de RTB que se celebra todos los años en la XGN (http://www.xuventudegalicia.net/) y uno de ellos lo ha ganado, y han usado ese API para programarlo.
Parece ser que lo de montar una pagina sobre como hacerlo va adelante.
Comentario por Unho — 13 Abril 2007 3:08 pm
Por cierto, a finales de mes se vuelve a celebrar el torneo de RTB de las Xornadas de Software Libre. A ver si consigo crear un robot que este a la altura de los de mis dos compañeros :)
Comentario por Unho — 13 Abril 2007 3:10 pm
Gracias por la informacion y felicidades.
Comentario por MD — 15 Abril 2007 9:14 pm