Next Previous Contents

2. Uso del programa

Este capítulo describe como utilizar el programa en sí. No obstante, si te resulta aburrido de leer, siéntete libre de usar el método habitual de prueba y error, y vuelve aquí si tropiezas con algo confuso en la interfaz de usuario. Es buena idea, sin embargo, leer la corta sección sobre opciones de la línea de comandos bajo estas líneas. Ten en cuenta que no hay ninguna ayuda integrada en el programa: es aquí donde debes buscar ayuda.

2.1 Opciones de línea de comandos

Hay varias opciones, en la línea de comandos, que determinan el comportamiento general de RealTimeBattle. Es posible elegir un fichero de opciones, donde se definan los valores por defecto de las opciones. También puedes seleccionar en que modo de juego se ejecutará el programa: debug, normal o competición.


 Uso: RealTimeBattle [opciones] 

 Opciones:
    --debug_mode,                -d   modo de depuración
    --debug_level [0-5],         -D   determina el nivel inicial de depuración
                                      (implica -d)
    --normal_mode,               -n   modo normal (por defecto)
    --competition_mode,          -c   modo de competición

    --no_graphics,               -g   no se mostrarán gráficos
    --option_file [file],        -o   selecciona el fichero de opciones
                                      (por defecto (default: $HOME/.rtbrc)

    --log_file [file],           -l   genera un fichero de registro (log file).
                                      Si el fichero es "-", el registro se
                                      envía a STDOUT

    --tournament_file [file],    -t   especifica un fichero de torneo para
                                      comenzar un torneo automáticamente

    --statistics_file [file],    -s   fichero en que se guardarán las 
                                      estadísticas al comenzar automáticamente

    --message_file [file],       -m   redirecciona los mensajes a un fichero.
                                      '-' como fichero es equivalente a STDOUT.
                                      Si tanto el registro como los mensajes
                                      son enviados a STDOUT, '-m' será ignorado

    --replay [file]              -r   reproduce un fichero de registro. Si se
                                      especifica '-' como fichero, la entrada
                                      se toma de STDIN

    --help,                      -h   muestra este mensaje de ayuda
    --version,                   -v   muestra el número de versión
    --port_number                -p   especifica el puerto para clientes
                                      remotos (el puerto por defecto es 32134)

La opción "port_number" está disponible solo si se eligió compilar RealTimeBatle con la opción --enable-network. Véase el fichero INSTALL para más información.

Las diferencias entre los tres modos de juego se muestran en la siguiente tabla:


Modo Debug Normal Competición
Comando 'debug' disponible No No
Pausa en el juego No
Juego paso a paso No No
Uso de CPU ilimitado para robots No

2.2 Ventana de control

Nuevo campeonato:

Para comenzar un torneo nuevo. La sección Comenzar un torneo nuevo te dará más información.

Reproducir campeonato:

Reproducir un torneo. Te pedirá que selecciones un fichero de registro (log file) del juego para poder estudiarlo.

Pausa:

Detiene el juego. En el modo de competición la pausa será pospuesta hasta que el juego actual termine.

Fin:

Detiene el torneo actual.

Opciones:

Muestra la ventana de opciones.

Estadísticas:

Muestra la ventana de estadísticas.

Ver la arena:

Esta opción puede ser usada para mostrar y ocultar las tres ventanas utilizadas durante el juego: la ventana de la arena, la ventana de puntuación y la ventana de mensajes.

Quitar:

Finaliza el programa.

En el modo de depuración (debug) hay disponible otro conjunto de botones. Estos están pensados para ayudar en la depuración de robots. Ten en cuenta que puedes depurar un proceso ejecución; si utilizas gdb el comando es gdb robot-name process-number.

Paso:

Permite, en un juego en pausa, avanzar un paso de tiempo. Esto es muy útil cuando se ejecuta el robot en un depurador, ya que de otro modo el robot será saturado con mensajes (N. del T. el robot recibe demasiados mensajes como para poder analizarlos).

Fin juego:

Finaliza el juego actual. Tiene el mismo efecto que un timeout.

Matar robots marcados:

En el modo de depuración, se puede marcar un robot en la ventana de puntuación. Ese robot morirá al pulsar este botón.

Nivel de debug:

Cambiar el nivel de depuración es una manera de indicar a los robots que mensajes deben enviar. El rango es entre 0 y 5, donde 0 significa no depurar y 5 es el nivel más alto de depuración, esto es, todos los mensajes de depuración deben ser enviados.

Cuando estés reproduciendo un fichero de registro (log file), que no sea suministrado por la entrada estándar, hay varios botones para controlar la reproducción. Véase el capítulo acerca de la reproducción para más detalles.

2.3 Comenzar un torneo nuevo

Para seleccionar robots y arenas para el torneo, marca los ficheros a la derecha y pulsa el botón añadir. Los ficheros seleccionados se muestran a la izquierda y pueden eliminarse de manera similar.

Un torneo consiste en un número de secuencias de juegos. En cada secuencia el mismo robot compite en todos los juegos. Aquí se puede seleccionar el número de juegos y secuencias, así como el número de robots en cada secuencia. Si pretendes jugar con todos los robots en todos los juegos se recomienda seleccionar una sola secuencia y, en cambio, incrementar el número de juegos. El motivo es evitar que los procesos de los robots sean reiniciados, lo cual puede tomar un cierto tiempo, especialmente si el número de robots es grande.

También es posible cargar un torneo o salvar el torneo actual. El último torneo jugado se almacena en /tmp/rtb/tmp.tour y se muestra siempre cuando esta ventana se abre. Si no está disponible se muestra un torneo vacío.

Debes seleccionar al menos dos robots y una arena para poder empezar.

2.4 Directorios de robots y arenas

A fin de que el programa pueda encontrar los robots y arenas existen dos opciones: ruta de búsqueda de robots y ruta de búsqueda de arenas. Independientemente de las opciones, siempre se busca en los subdirectorios Robots y Arenas en el directorio de instalación de RealtimeBattle, especificado en el Makefile principal durante la compilación (por defecto /usr/local/games/RealTimeBattle), pero si creas un directorio nuevo, o si instalaste RealTimeBattle en otro directorio, tendrás que establecer estas opciones.

2.5 Ventana de la arena

Aquí es donde tienen lugar las batallas. Si quieres una vista más detallada, usa los botones de zoom o presiona las teclas +, - ó 0. Los robots se representan como círculos coloreados con una marca en forma de escuadra que indica la dirección del radar. La línea gruesa es el cañón, y la línea delgada apunta en la dirección frontal.

2.6 Ventana de puntuación

En esta ventana se muestran los robots que compiten en la secuencia actual.

2.7 Ventana de mensajes

Aquí se muestran los mensajes enviados por los robots utilizando Print y Debug. Los mensajes más recientes son mostrados en la parte superior. Puedes limpiar la ventana y elegir ver solo los nuevos mensajes de un robot en particular.

2.8 Ventana de opciones

Aquí tienes la posibilidad de cambiar un gran número de opciones. En el capítulo de opciones puedes encontrar información más detallada sobre cada opción. Los cambios no serán aplicados hasta que pulses bien el botón apply o el botón OK.

Puedes guardar tus opciones en un fichero: Save options salvará las opciones a un fichero de tu elección, y Save as default las guardará en el fichero .rtbrc de tu directorio de usuario.

El botón Default reiniciará todas las opciones a sus valores por defecto.

2.9 Ventana de estadísticas

Hay varias maneras de estudiar las estadísticas del torneo actual. Puedes elegir entre:

Pulsando los botones con forma de flecha puedes moverte al primer elemento, retroceder uno, avanzar uno o ir al último elemento respectivamente. La barra del centro muestra que es lo que se está mostrando y pulsándola se actualizarán las estadísticas si el juego está en marcha. Si estás usando gtk+1.1.x, también es posible ordenar los datos por columnas pulsando sobre los títulos correspondientes.

2.10 Ejecución sin gráficos

Si lo deseas, es posible ejecutar RealTimeBattle sin ningún tipo de gráficos. Esto puede resultar muy útil cuando se está realizando una serie larga de pruebas o se ejecuta una competición. Para utilizar esta opción tienes dos opciones: bien pasar el parámetro -g al lanzar el programa, o deshabilitar los gráficos al compilar el programa (véase el fichero INSTALL para más información). Esta última alternativa es útil ya que el ejecutable será menor y, en consecuencia, más rápido en máquinas con poca memoria. Ello también permite ejecutar RealTimeBattle en ordenadores que no tengan gtk+ instalado.

Durante la ejecución sin gráficos es necesario proporcionar un fichero de torneo, o no ocurrirá nada. También es una buena idea crear un fichero de registro (log file) y/o un fichero de estadísticas si quieres conocer el resultado.

2.11 Ficheros de torneo

El fichero de torneo se indica como una opción de línea de comandos. Cuando se especifica, un torneo comenzará y terminará automáticamente. Para más información sobre como guardar las estadísticas mira en la sección sobre los ficheros de estadísticas.

Un fichero de torneo consiste en cinco palabras clave. Todas estas palabras clave pueden ser especificadas múltiples veces, pero recuerda que solo la última de las palabras clave que toma un número como argumento es tenida en cuenta. Todas las palabras clave deben ir seguidas de un punto y coma.

Games/Sequence o g/s:

Toma un número o * como argumento. El número indica cuantos juegos deben ser jugados por torneo. El asterisco significa que el programa toma el número exacto de arenas y lo utiliza como argumento. El valor por defecto es 1.

Robots/Sequence o r/s:

Toma un número o * como argumento. El número es cuantos robots jugarán en cada secuencia. El asterisco significa que el programa toma el número exacto de robots y lo utiliza como argumento. El valor por defecto es 2.

Sequences o seq:

Toma un número o * como argumento. Este número indica cuantas secuencias se jugarán en el torneo. El asterisco significa que el programa toma el número exacto de robots y los robots por secuencia, realiza un cálculo binomial para determinar el número de secuencias necesario para que todos los robots se encuentren exactamente una vez, y utiliza este número como argumento. El valor por defecto es 1.

Robots o r:

Toma uno o más ficheros de robot como argumento.

Arenas o a:

Toma uno o más ficheros de arena como argumento.

Los argumentos de fichero pueden ser uno de entre los siguientes:

El fichero solo:

Busca el fichero en cuestión en la ruta definida.

Ejemplo: Robot: empty.robot

Ruta completa del fichero:

Usa el fichero en cuestión.

Ejemplo: Arena: /usr/local/games/RealTimeBattle/Arenas/Circle.arena

Todos los ficheros en la ruta:

Busca la ruta completa y usa todos los ficheros encontrados.

Ejemplo: Arena: *

Un directorio específico:

Busca en el directorio especificado y usa todos los ficheros encontrados.

Ejemplo: Robot: /usr/local/games/RealTimeBattle/Robots/*

Es posible indicar varias veces el mismo fichero. De modo que si quieres tres robots rotate_and_fire.robot, simplemente escribe rotate_and_fire.robot tres veces. Esto también es aplicable a *.

Ejemplo de fichero de torneo:

R: * Arenas: Circle.arena Square.arena G/S: 2 r/s: 3 Sequences: *

2.12 Ficheros de registro (log files)

A veces puede ser útil reproducir un juego y analizarlo en detalle o simplemente almacenarlo como referencia futura. Añade el parámetro -l al arrancar RealTimeBattle, con el nombre de fichero como argumento, para activar esta opción, y con argumento '-' para que el registro sea mostrado en la salida estándar.

El formato del fichero de registro es de la siguiente manera: cada línea consiste en una letra, que determina el tipo de información, seguida de una lista de argumentos separados por espacios en blanco. En concreto se muestra la siguiente información:

Cabecera:

H [juegos/secuencia] [robots/secuencia] [secuencias] [robots]

Información de la arena:

A [línea del fichero de la arena]

Comienzo del juego:

G [número de secuencia] [número de juego]

Opción:

O [opción:valor]

Lista de propiedades del robot:

L [identificador de robot] [color del robot] [nombre del robot]

Información sobre la posición del robot:

R [identificador de robot] [x] [y] [ángulo del cañón] [ángulo del radar] [energía]

Tiempo:

T [tiempo transcurrido]

Mensaje impreso:

P [identificador del robot] [mensaje impreso]

Galleta:

C [identificador de galleta] [x] [y]

Mina:

M [identificador de mina] [x] [y]

Disparo:

S [identificador de disparo] [x] [y] [dx/dt] [dy/dt]

Muerte:

D [tipo de objeto muerto] [identificador de objeto] (si es un robot: [puntos recibidos] [posición])

2.13 Reproducción

Puedes repetir un juego a partir de su fichero de registro (log file) bien pasando la opción de línea de comando "-r" o desde la ventana de control. Ten en cuenta que si el registro proviene de la entrada estándar (opción de línea de comando "-r -"), no podrás hacer mucho más que contemplar el juego, si bien de otro modo puedes influir en el desarrollo del juego:

2.14 Ficheros de estadísticas

El fichero de estadísticas es un archivo empleado solo cuando se especifica un fichero de torneo. Las estadísticas serán guardadas en este fichero cuando el torneo termine. Por otra parte, puedes salvarlo a mano utilizando el botón guardar estadísticas en la ventana de estadísticas.


Next Previous Contents