Juegos de programación: press «compile» to play

2 junio, 2014

En la mayoría de juegos de ordenador, el jugador controla a un avatar dentro del mundo del juego. Hay diferentes mecanismos para dar órdenes a nuestro avatar: controladores con botones y/o joysticks, interfaces táctiles… o incluso el movimiento corporal, con tecnologías como Kinect.

Sin embargo, hay una familia de juegos  con un interfaz muy peculiar: el jugador define a priori las instrucciones que debe realizar su avatar y, a partir de este punto, el avatar las sigue de forma autónoma sin más participación por parte del jugador. La gracia del juego está descubrir cuáles son las instrucciones idóneas y saber describirlas utilizando el lenguaje del juego (que puede ser, o no, un lenguaje de programación). Y es que, en efecto, estamos hablando de juegos de programación.

Un juego de programación clásico: Core War - Fuente: Wikipedia. Licencia: GPL 2.0
Un juego de programación clásico: Core War, programas enfrentados en la memoria de un ordenador – Fuente: Wikipedia. Licencia: GPL 2.0

En este blog hemos hablado anteriormente de algunos temas relacionados: los juegos cuyo objetivo es crackear la seguridad de un sistema informático y Scratch, un lenguaje de programación visual y sencillo que permite a los niños adentrarse en el mundo de la programación creando sus propios juegos y animaciones sencillos. Aquí hablamos de algo diferente: videojuegos cuyo control se realiza exclusivamente mediante un programa,  orientados a un público más adulto, que quizás ya sabe programar y participa en el juego “just for fun”.

Existen dos variantes de los juegos de programación:

1. El juego presenta un reto al jugador, que debe crear un programa que permita a su avatar resolver el problema. Normalmente este tipo de juegos suelen ser tipo puzzle o estar orientados a aprender a utilizar un lenguaje de programación, planteando retos de dificultad creciente.

2. El juego permite interactuar a los avatares de diversos jugadores, cada uno siguiendo su propio programa de instrucciones. La interacción suele ser competitiva (una carrera, un combate, un partido) y hay una forma de elegir al vencedor o asignar puntuaciones a los participantes. Aquí la gracia está en ser más listos que el rival, programando en nuestro avatar la estrategia que le permita tomar decisiones inteligentes y adaptarse a las acciones de los oponentes para superarlos.

Alguien puede pensar que me refiero sólo a escribir bots que juegan al ajedrez, las damas o algún otro juego de tablero y enfrentarlos entre sí. Pero el mundo de los juegos de programación es mucho más rico: combates de robots, carreras de coches, subastas, programas que compiten por los recursos disponibles en procesador, partidos de futbol, etc. Y la programación se vuelve mucho más interesante cuando es en tiempo real y no dispones de la comodidad de un “turno” durante el que el programa puede ir meditando tranquilamente.

La wiki Programming Games presenta una amplia colección de juegos para que afinéis vuestras aptitudes pasando un buen rato. De la colección de juegos disponibles, destacamos Core War, que ha cumplido 30 años este mes de mayo. En este juego, cada jugador escribe un programa en un lenguaje tipo assembler (Redcode). El objetivo de este programa, al puro estilo «sólo puede quedar uno», es conseguir que los programas del resto de jugadores “peten”.

Estos juegos proporcionan una forma divertida de aprender a programar. En mi caso, recuerdo con cariño una práctica realizada durante la carrera en un asignatura de Inteligencia Artificial: programar un agente en una casa de subastas virtuales de pescado llamada FishMarket. El objetivo era conseguir el mayor beneficio con los lotes de pescado comprados, teniendo en cuenta que el presupuesto era limitado y que todos los agentes compartían el mismo objetivo y la misma información. A parte de nuestros dolores de cabeza para enseñar al agente a tomar decisiones inteligentes, otra lección aprendida fue lo provechosa que puede llegar a ser una subasta cuando el resto de competidores se ha quedado sin dinero y controlamos el precio de venta. Eso sí que es una lección de economía para la vida real: el monopolio es muy lucrativo.

Y lo mejor todavía está por venir. Los niños y niñas del futuro tendrán a su disposición juegos de programación todavía más complejos y estimulantes gracias a… los robots. Sirva como muestra la RoboCup, la competición de futbol entre robots donde los jugadores humanos programan el comportamiento sus avatares. O consideremos este otro concurso, los DroneGames, donde los participantes controlan el comportamiento de robots voladores autónomos mediante un conjunto de librerías Javascript. Y tampoco hace falta irse a una competición: pequeños kits de robots programables, como los Lego Mindstorms, permiten poner a prueba la imaginación de forma autónoma. Sí, sí, los más viejos del lugar iremos repitiendo que «nosotros sabíamos divertirnos sin tantos artilugios«, pero seguro que la juventud del mañana (y de hoy) se lo pasará en grande.

(Visited 51 times, 1 visits today)
Autor / Autora
Robert Clarisó Viladrosa
Comentarios
Deja un comentario