Zillions of Games [1] [2] es un sistema de juego general comercial desarrollado por Jeff Mallett y Mark Lefler en 1998. [3] Las reglas del juego se especifican con expresiones S , lenguaje de reglas Zillions. Fue diseñado para manejar rompecabezas o juegos de mesa de estrategia en su mayoría abstractos . [4] Después de analizar las reglas del juego, la inteligencia artificial del sistema puede jugar automáticamente con uno o más jugadores. Trata los acertijos como juegos de solitario y su IA se puede utilizar para resolverlos.
lenguaje de secuencias de comandos
El lenguaje de programación de Zillions-of-Games utiliza expresiones S. Las reglas se almacenan en un archivo de texto con la extensión ".zrf" (archivo de reglas de millones). Los usuarios pueden crear sus propios archivos ZRF y hacer que la IA de Zillions-of-Games juegue su juego recién creado. La definición de juegos suele contener el siguiente patrón: [5]
Título del juego . Un ZRF puede contener más de un juego y el título del juego permite al usuario seleccionar un juego determinado.
Descripción, historia y estrategia del juego . Este es un texto que se muestra al usuario a pedido para explicar las reglas del juego, la historia y brindar consejos generales sobre el juego.
Jugadores . Esta es una lista de nombres de jugadores utilizados en el juego. Por ejemplo, para el ajedrez sería Blancas , Negras . El nombre del jugador se utiliza en otros lugares, por ejemplo en la posición inicial o en las definiciones de objetivos del juego. Podría haber un solo jugador (por ejemplo, en los rompecabezas), dos o más.
Orden de turno Especifica el orden de los movimientos realizados por los jugadores. En el ejemplo anterior, el jugador X comienza, el jugador O se mueve y luego se repite toda la secuencia. La definición de orden de turno puede ser más compleja, por ejemplo para ajedrez balanceado de doble movimiento sería: (orden de turno Blanco repetir Negro Negro Blanco Blanco) , que especifica el siguiente orden de movimientos: Blanco, Negro, Negro, Blanco , Blanco, Negro, Negro, Blanco, Blanco, etc.
Definición del tablero en Zillions-of-Games. Esta imagen muestra todas las posiciones en el juego definido y sus nombres correspondientes. También se muestran todas las direcciones especificadas desde la posición media-media .
Definición de tablero. Esta sección especifica la geometría del tablero de juego, las posiciones separadas del tablero y las conexiones entre ellas. La definición de placa en el ejemplo anterior primero especifica una imagen de mapa de bits que se utilizará para la placa. Un tablero bidimensional se define utilizando coordenadas de píxeles del mapa de bits. La definición ("arriba/medio-/abajo-" (0 112)) especificaba las notaciones que se utilizarían para las filas, así como un desplazamiento en píxeles entre filas. La notación de texto se utiliza en la lista de movimientos, así como para guardar el juego jugado en un archivo ".zsg" (juego guardado de Zillions). Las conexiones entre la posición del tablero se especifican en la declaración (direcciones...) . El ejemplo anterior define cuatro direcciones: n (norte) - un paso hacia arriba, e (este) - un paso hacia la derecha, nw - diagonalmente arriba-izquierda y ne - diagonalmente arriba-derecha. Las instrucciones se utilizan en las definiciones de movimientos así como en las definiciones de objetivos del juego.
Definición de pieza. Define las piezas utilizadas en el juego, sus nombres y cómo se mueven. En el ejemplo anterior se define una pieza, Man , que se puede colocar en cualquier posición vacía del tablero. También se especifican dos imágenes de mapa de bits para los reproductores X y O.
Configuración del tablero. Especifica la posición inicial del juego. El ejemplo anterior define que el tablero está vacío inicialmente y que cada lado tiene 5 piezas fuera del tablero, que se pueden dejar caer.
Objetivo del juego. Condición cuando uno de los jugadores gana o cuando se produce un empate. En Tic-Tac-Toe, la condición de victoria (3 en raya) se define como configuraciones relativas de piezas, utilizando las direcciones n , e , ne y nw de la definición del tablero.
Poco después de su lanzamiento al mercado a finales de 1998, los usuarios de Zillions of Games comenzaron a programar nuevos juegos y acertijos, creando muchos de ellos ellos mismos. Pronto comenzaron a aparecer dos grandes colecciones de Zillions Rules Files (ZRF). Uno estaba en el sitio web de Zillions-of-Games y el otro en el sitio web de Chess Variant Pages . [6] El primero reunió todo tipo de ZRF, mientras que el segundo se centró en los ZRF para variantes de ajedrez . En noviembre de 2017, la interfaz ZILLIONS tenía 2577 ZRF, creadas por 462 autores de ZRF, [7] y la colección Chess Variant Pages tenía 794 ZRF de variantes de ajedrez.
Millones de juegos se pueden utilizar para lo siguiente:
Jugar a cualquiera de los juegos o rompecabezas que vienen con él.
Jugar a cualquiera de los juegos y acertijos gratuitos que los usuarios hayan programado para ello.
Jugar juegos con usuarios remotos a través de Internet o una conexión de acceso telefónico.
Jugar juegos enviando archivos ZSG por correo electrónico de un lado a otro.
Programándolo para jugar nuevos juegos y rompecabezas.
Utilizándolo como herramienta de desarrollo para la creación de nuevos juegos y rompecabezas.
Probar nuevos juegos en busca de empates y otras cualidades haciendo que Zillions los juegue contra sí mismo.
Resolver acertijos o asegurarse de que se puedan resolver los acertijos recién creados.
Crear diagramas que se puedan recortar de capturas de pantalla.
Capacidades
Zillions representa tableros y piezas con imágenes de mapa de bits; estos pueden ser reasignados por el usuario. Los tableros pueden ser gráficos dirigidos arbitrariamente, pero los tableros estándar tipo cuadrícula son más fáciles de producir y tienen soporte incorporado para detectar colinealidad . Las condiciones disponibles de victoria, derrota y empate incluyen jaque mate, punto muerto, repetición, captura de piezas, configuración absoluta, configuración relativa y varios tipos de recuento de piezas. Estos permiten la creación de una variedad de juegos y rompecabezas diferentes.
Además de definir cómo se mueven las piezas, Zillions puede definir cómo se pueden soltar las piezas. Esto es para introducir nuevas piezas en un juego. No es útil para el shogi, que "deja caer" las piezas capturadas almacenadas en los lados del tablero. Es para juegos como Go, Reversi y Tic-Tac-Toe, que habitualmente permiten a los usuarios agregar nuevas piezas al tablero. Al igual que con el movimiento de piezas, esto se define algorítmicamente y puede ser algo tan simple como dejar caer una nueva pieza solo en un espacio vacío o seguir reglas más complejas.
Desde la versión 2.0, Zillions ha tenido la capacidad adicional de aplicar reglas de captura máximas (utilizadas en algunas versiones de Checkers ) y un motor de juego Go con todas las funciones.
Zillions incluye un "jugador aleatorio" que selecciona al azar entre sus movimientos disponibles; Esto se puede utilizar para simular dados en juegos de carreras y relacionados con el Backgammon . [4]
El motor de IA estándar puede, si es necesario, sustituirse por motores creados por el usuario. Luego, estos motores pueden usar libros de apertura u otras funciones que no están disponibles para la IA estándar. [8]
Limitaciones
A pesar de su versatilidad, Zillions of Games tiene una serie de limitaciones no triviales:
Zillions Of Games está diseñado para jugar exclusivamente juegos de información perfecta . Esto lo hace de poca o ninguna utilidad para jugar de manera justa juegos con información imperfecta u oculta contra la IA, como juegos de cartas o juegos de mesa con valores de piezas ocultos como Stratego . En cambio, el programa utilizará automáticamente toda la información disponible, incluidas las cartas de la baraja y las cartas en manos de todos los demás jugadores. Los juegos aún pueden ser jugados por jugadores humanos, aunque no se admite la revelación selectiva de información a un solo jugador. [4]
Su lenguaje de programación carece de soporte para aritmética, funciones y variables más allá de algunos indicadores booleanos. [4]
El motor no tiene soporte integrado para objetivos basados en conexión como en Hex ; por lo tanto, estos objetivos deben implementarse manualmente. [4]
Tampoco se admite tener varias piezas por ubicación o piezas que cubran varias ubicaciones a la vez. Por lo tanto, se requieren soluciones complicadas para los juegos que necesitan estas características, como Mancala , Laska o Quoridor . [4]
Como la mayoría de los programas de juegos de IA, el motor predeterminado funciona mal en juegos con grandes factores de ramificación, como el shogi . [4]
En algunos aspectos vitales, el programa es demasiado restrictivo en lo que permite.
Aunque puede reconocer la repetición, el único tipo que puede reconocer es la repetición triple .
Aunque puede comprobar varias condiciones de victoria, derrota y empate al final de un movimiento, no puede comprobar ninguna de ellas al evaluar posibles movimientos de una pieza. En consecuencia, en shogi, por ejemplo, no se puede programar para hacer cumplir siempre con precisión la regla contra el jaque mate a un rey con una caída de peón.
Muchas variantes de ajedrez para varias personas no se pueden jugar porque el juego se detendrá inmediatamente cuando el primer jugador sufra jaque mate o punto muerto .
En algunos casos, la calidad del juego se ve comprometida debido a que la IA calcula automáticamente los valores de las piezas de manera inexacta y no hay ninguna opción disponible para anularlo manualmente con valores de piezas precisos.
Muchas de estas limitaciones se pueden evitar utilizando extensiones como Axiom Development Kit. [9]
Referencias
^ Generación de contenido procesal basada en búsquedas: una taxonomía y una encuesta , Julian Togelius , Georgios N. Yannakakis , Kenneth O. Stanley, Cameron Browne, IEEE Transactions on Computational Intelligence and AI in Games 3(3):172 - 186 · Octubre de 2011 doi :10.1109/TCIAIG.2011.2148116
^ Asociación Alemana Chu Shogi
^ David NL Levy (2006). Robots ilimitados . AK Peters, Ltd. ISBN1-56881-239-6.
^ abcdefg "¿Puede Zillions respaldar este juego?" Preguntas frecuentes de Zillions Development Corp.
^ La especificación completa del lenguaje de secuencias de comandos de Zillions-of-Games se puede encontrar en Zillions Language Reference , que se puede encontrar en la instalación de Zillions .
^ Millones de juegos: colección de variantes de ajedrez de Chess Variant Pages para Millones de juegos
^ Juegos complementarios gratuitos para Zillions-of-Games
^ Capacidades de millones, capacidades agregadas en la versión 2.0
^ Greg Schmidt (16 de abril de 2016). "Kit de desarrollo de Axiom" . Consultado el 4 de agosto de 2016 .
Enlaces externos
Sitio web oficial
Una reseña de Millones de juegos de Hans Bodlaender