
1. Introducción
1.1 Reglas del juego
1.2 Acciones
1.3 Sensores
1.4 Estrategias
2. Juego en Equipos
RoboCode es un simulador de combates entre tanques desarrollado por IBM Alphaworks. El tanque debe recorrer el entorno para evitar ser disparado por sus oponentes y evitar también chocar contra las paredes. Además, para ganar, el tanque debe localizar a su adversario y dispararle. Como todos los simuladores, RoboCode recoge algunos aspectos de la realidad, pero obvia otros.
ASPECTOS RECOGIDOS:
• Las actuaciones llevan tiempo; mientras rotas te pueden disparar.
• Las balas tardan en llegar. Si disparar a un objetivo que se mueve, debes tener en cuenta dónde estará cuando la bala llegue.
• El sensor unidireccional debe apuntar al adversario para verlo.
• El cañón se calienta al disparar y debe enfriarse antes del próximo disparo.
• Chocar contra los obstáculos debilita
ASPECTOS NO REALISTAS:
• Los sensores y el resto de los componentes son silenciosos.
• Los sensores detectan velocidad, posición, orientación y energía restante.
• Los combates tienen lugar en un entorno plano (2D) y cerrado.
arriba
Los tanques RoboCode están escritos como programas Java. Se dirigen por eventos; hay un bucle principal, que puede ser interrumpido por un número de manejadores de eventos que incluyen acciones como:
- ver al adversario
- ser alcanzado por una bala
- chocar con un adversario - y más...
Los tanques comienzan con una determinada cantidad de energía, que se va perdiendo por:
- recibir un disparo
- chocar contra algo
- por disparar a balas
También, si el juego dura un tiempo, todos los robots pierden energía hasta que uno de ellos muere. Esto impide que la partida dure infinitamente. Cuando dos robots colisionan, ambos pierden lo mismo, por eso, chocar puede ser una buena estrategia para un robots que está a punto de ganar. Sólo se gana energía de una manera: disparando al adversario. Si un robot se queda sin energía debido a su tiroteo, se inhabilita. Si una bala da a su enemigo después, algo de energía se le devuelve. Pero si un robot se queda sin energía por alguna otra razón –como ser alcanzado por una bala o por chocar contra la pared- entonces, muere.
arriba
Un robot puede rotar su cuerpo entero, la torreta cañon/radar, o el radar solo. Todas las rotaciones llevan su tiempo, pero rotar el cuerpo entero lleva más tiempo y rotar el radar solo es lo más rápido. Además, los robots pueden moverse hacia delante o hacia atrás, a un ritmo fijo de aceleración o con una velocidad fija.
Un robot puede disparar su cañón con distintas potencias: si usa más, necesita más energía, pero hace más daño. Como ejemplo, aquí tenemos un programita que rota el robot diez grados, luego lo mueve hacia delante 75 unidades, luego rota el cañón 25 grados en otra dirección y por último dispara a su máxima potencia:
turnLeft(10);
forward(75);
gunRight(25);
fire(3);
Cada robot es implementado como un hilo y el programa puede ser interrumpido en varios puntos. Suele ser un error escribir largas secuencias de acciones, puesto que típicamente algún evento interrumpirá el hilo tarde o temprano. No obstante los robots no son entes puramente reactivos.
arriba
Todos los robots están equipados con un único sensor que tiene un rango infinito pero que sólo puede escanear oponentes dentro de la anchura de un grado. El radar sensor es la única manera que tiene el robot de obtener información sobre su adversario. El radar devuelve la posición del enemigo, su orientación, su ángulo de cañón y su energía. El robot también es consciente de su posición, su orientación, su energía y de la orientación de su cañón y su radar.
arriba
Debido a la gran popularidad de RoboCode han surgido muchos tipos de estrategias. Muchos robots intentan seguir las pared para reducir el rango que su radar necesita escanear para detectar a su oponente. Otros robots van hacia delante y hacia atrás en un movimiento errático para confundir al sistema de apuntamiento de su adversario. Otros se centran en técnicas de reconocimiento de patrones, para intentar aprender los patrones de movimiento de sus oponentes de manera que puedan predecir su movimiento. Por último, los rastreadores persiguen a su enemigo, llegando incluso a chocar contra él para producirle un daño adicional.
arriba
Una de las más recientes vueltas de tuerca de RoboCode es la introducción del combate con equipos. Los equipos están formados por dos tipos de robots:
Los “leaders” y los “droids” (tambIén pueden estar formado por tanques normales). Los líderes están equipados con un escáner, y pueden enviar y recibir mensajes. Los droid no tienen mensajes y sólo pueden recibir mensajes. Los equipos exitosos protegen al líder que se comunica con sus droid y coordina su comportamiento.
arriba
Autores:
Eduado Salagaray Cepeda
Francisca Merchán Higuera
Adaptado por Raúl Espinola, Gracias a los compañeros.
|