UD02 · Taller 2 — Robocode Tank Royale¶
Cierre de la unidad
Robocode es la práctica de cierre del RA2, del 23 de noviembre al 3 de diciembre. Cuenta dentro de las entregas de la unidad, y es la más importante de las tres: N01 y N02 son talleres cortos y sus técnicas se vuelven a evaluar en el RA5, mientras que aquí construyes un bot que compite y escribes su memoria. Los talleres UD02 T01 (preparar el entorno) y UD00 T01-T02 (GitHub y Markdown) se entregan y se califican hecho / no hecho: son requisito, pero no puntúan. El peso exacto de cada entrega está en el libro de calificaciones de Moodle.
Introducción¶
Robocode es un juego de programación donde el objetivo es codificar un bot en forma de tanque virtual para competir contra otros bots en un campo de batalla. Quien juega es quien programa el bot: no hay control directo durante la partida. El programa dice cómo debe comportarse y reaccionar el bot ante los eventos del campo de batalla — es, en la práctica, el sistema de resolución de problemas del §10 de la teoría hecho código.
El nombre viene de una versión anterior del juego ("Código de robot"); esta versión usa "bot" en vez de "robot". Las batallas tienen lugar en un campo donde varios bots luchan hasta que solo queda uno, como en un Battle Royale — de ahí Tank Royale.
- Documentación del juego: https://robocode-dev.github.io/tank-royale/
- Repositorio en GitHub: https://github.com/robocode-dev/tank-royale
- API Java: overview · Bot API
Tank Royale no es el Robocode clásico
RCTR se basa en una versión más antigua de Robocode, pero con un API distinto: los bots antiguos y el funcionamiento del campo de batalla han cambiado sustancialmente. Mucha documentación que encontrarás en internet es del sistema antiguo — la estrategia sigue siendo válida, pero el código no. Hay un puente entre las dos versiones en robocode-api-bridge, la documentación y estrategias de la API antigua siguen en robocode.sourceforge.io, y un archivo con mucha información histórica sobre estrategias y robots está cacheado en Wayback Machine.
Antes de empezar¶
- Elige lenguaje con la comparativa Java vs Python.
- Completa el Taller 1 para dejar listo tu entorno.
- Sigue el tutorial completo: Robocode en Java o Robocode en Python, según el lenguaje elegido.
Objetivo de la práctica¶
Usando Robocode Tank Royale, te pones en el papel de los primeros programadores que dotaban de «inteligencia» a los primeros sistemas: reaccionan solo ante estímulos que su programador previó, no tienen intuición y el resultado es tan bueno como lo sea su programación — el mismo debate del §9 de la teoría sobre cuándo usar reglas y cuándo aprendizaje.
El profesor establecerá unos bots simples que tu bot deberá derrotar para superar la práctica: no sirve ganar por azar, tiene que estar razonado y documentado. Después habrá una competición entre todo el alumnado.
Pasos a seguir¶
- Preparación del entorno — en una sesión conjunta, instalación y primer combate de pruebas.
- Mi primer bot — con la guía de la documentación y el profesor, generar el primer bot, añadirlo a la batalla y depurar su funcionamiento.
- ¿Cómo mejoro mi bot? — estudiar estrategias y mejoras para dotarlo de comportamiento inteligente (radar, movimiento, disparo — ver los tutoriales).
- Investigación y desarrollo propio — trabajo individual: prever a los adversarios (los conocidos y los de tus compañeros) y aplicar las técnicas que consideres más útiles para subir en la clasificación.
Requisitos mínimos de la competición¶
- Versión 0.34.0 de la API (multi-idioma y con escalado)
- Modo classic, 10 asaltos, tamaño de campo 2000×2000
- Adversarios de referencia:
RamFire,Walls,SpinBot - Gana quien acumule más puntuación; velocidad de enfriamiento 0.1; tiempo máximo de inactividad 450
- No se permite llamar a métodos prohibidos ni ganar por azar: hay que demostrar IA
- Los combates se graban y se devuelven como feedback
La rúbrica está en Moodle
La rúbrica de Robocode se ve en la propia tarea de Moodle, y puedes leerla antes de empezar: ahí tienes los criterios, los niveles y lo que puntúa cada uno. No se duplica aquí para que no haya dos versiones del mismo dato.
Entrega¶
A través de Moodle, un archivo ZIP que contenga el código fuente de tu bot (nombre: tu nombre más los 4 últimos dígitos de tu DNI/NIE, sin letras) y la memoria justificativa en PDF.
TuNombreNNNN.java(Java) oTuNombreNNNN.py(Python) — clase del botTuNombreNNNN.json— información del autorTuNombreNNNN.cmdyTuNombreNNNN.sh— arranque en Windows y Linux
La memoria en PDF debe incluir, al menos: datos del alumnado, descripción del funcionamiento (estructura, sistema basado en reglas/casos, análisis y evolución de la solución...), descripción detallada de los métodos definidos o usados, conclusiones y webgrafía/bibliografía.