Un juego de programación es un videojuego que incorpora elementos de programación informática , lo que permite al jugador dirigir unidades autónomas dentro del juego para que sigan comandos en un lenguaje de programación específico del dominio , a menudo representado como un lenguaje visual para simplificar la metáfora de programación. Los juegos de programación se dividen en dos grandes áreas: juegos para un solo jugador, en los que los elementos de programación forman parte o la totalidad de un juego de rompecabezas , y juegos multijugador, en los que el programa automatizado del jugador se enfrenta a los programas de otros jugadores.
Los primeros juegos del género incluyen System 15000 y Hacker , lanzados en 1984 y 1985 respectivamente.
Los juegos de programación se han utilizado como parte de los juegos de rompecabezas, desafiando al jugador a lograr un resultado específico una vez que el programa comienza a funcionar. Un ejemplo de este tipo de juego es SpaceChem , donde el jugador debe usar su lenguaje visual para manipular dos waldos para desmontar y volver a ensamblar moléculas químicas. En estos juegos, los jugadores pueden probar y depurar su programa tantas veces como sea necesario hasta que encuentren una solución que funcione. Muchos de estos juegos alientan al jugador a encontrar el programa más eficiente, medido por la cantidad de pasos de tiempo necesarios o la cantidad de comandos requeridos. Otros juegos similares incluyen Human Resource Machine , [1] Infinifactory y TIS-100 . Zachtronics es una empresa de desarrollo de videojuegos conocida por sus juegos de rompecabezas centrados en la programación . [2]
Otros juegos incorporan elementos de programación como partes de rompecabezas en el juego más grande. Por ejemplo, Hack 'n' Slash incluye una metáfora de poder acceder a los programas internos y las variables de los objetos representados en el mundo del juego, pausar el resto del juego a medida que el jugador interactúa con esta interfaz de programación y modificar el programa del objeto para seguir avanzando; esto podría ser cambiar el estado de un objeto de indestructible a destructible. Otros juegos similares con este tipo de enfoque de programación incluyen Transistor , else Heart.Break() , Glitchspace y Pony Island . [3]
Otro enfoque utilizado en algunos juegos gráficos con elementos de programación es presentar al jugador una interfaz de línea de comandos para emitir órdenes a través de un lenguaje específico del dominio para dirigir objetos dentro del juego, lo que permite al jugador volver a emitir comandos a medida que cambia la situación en lugar de crear un programa prefabricado. Juegos como Quadrilateral Cowboy y Duskers hacen que el usuario ordene a varias criaturas robóticas pequeñas en tándem a través del lenguaje de código para alcanzar un objetivo determinado. [3] Hackmud presenta al jugador una interfaz simulada de mainframe a través de la cual emite comandos para avanzar. [4]
Muchos juegos de programación implican el control de entidades como robots , tanques o bacterias que buscan destruirse entre sí. Dichos juegos pueden considerarse entornos de organismos digitales , relacionados con simulaciones de vida artificial . Un ejemplo temprano es Core War (1984), donde los programas escritos en un lenguaje estandarizado similar al ensamblador luchan por el espacio en una memoria finita ( núcleos magnéticos virtuales ). Los jugadores reciben herramientas para desarrollar y probar sus programas dentro del lenguaje específico del dominio del juego antes de enviar el programa a un servidor central. Luego, el servidor ejecuta el programa contra otros e informa los resultados al jugador, desde donde puede realizar cambios o mejoras al programa.
Existen diferentes torneos y ligas para los juegos de programación donde los personajes pueden competir entre sí. Normalmente, un script está optimizado para una estrategia especial. Se utilizan enfoques similares para juegos más tradicionales; el Campeonato Mundial de Ajedrez por Computadora consiste en partidas entre programas escritos para el juego de estrategia abstracta del ajedrez .
El juego de programación competitiva también ha encontrado su lugar en varios juegos de mesa como RoboRally o Robot Turtles , generalmente donde un programa se convierte en una baraja de cartas prefabricada que se juega una por una para ejecutar ese código. [5]
Los investigadores presentaron RoboCode como un sustrato de "aprendizaje basado en problemas" para la enseñanza de la programación. [6]
Los juegos de mundo abierto que ofrecen la posibilidad de que los jugadores construyan entornos a partir de una serie de bloques de construcción han sido utilizados a menudo por jugadores más avanzados para construir circuitos lógicos y programas más avanzados a partir de los bloques fundamentales. Minecraft es un ejemplo de ello, ya que, si bien el juego ofrece un conjunto limitado de bloques que imitan interruptores y circuitos eléctricos, los usuarios han podido crear computadoras funcionales básicas dentro del mundo virtual, y al menos una modificación tiene como objetivo enseñar a los niños a programar en la computadora virtual en un lenguaje simplista. [7]
Varios sitios, como Codecademy , ayudan a enseñar lenguajes de programación del mundo real a través de la gamificación , donde se utilizan principios de videojuegos para motivar al usuario. [8]