Desarrollo: Prisionero | Desarrollo de IA
Videojuego de corte simple desarrollado para evaluar los resultados de algoritmos de Inteligencia Artificial.
Descripción
Prisionero es el nombre que recibe tanto el este proyecto como el videojuego resultante del mismo. La premisa de este proyecto era la de desarrollar diferentes algoritmos de Inteligencia Artificial y por tanto evaluar los resultados de los mismos en algún entorno apropiado. La forma escogida de crear ese entorno de pruebas fue la de desarrollar un videojuego simple.
Introducción
Este post otorga al lector una visión general del proyecto “Prisionero”, si quieres una versión minuciosamente detallada sobre el desarrollo de este proyecto, te recomiendo ir a la sección de “Informes” y que accedas al contenido que estos ofrecen.
Las dos tecnologías/algoritmos software de IA que se implementaron son un “Trigger System” y un “Dynamic Reputation System Based on Event Knowledge”, epígrafes 2.2 y 8.6 respectivamente del libro AI GAME PROGRAMMING WISDOM.
Se trata de la primera edición (año 2002) de una serie libros en la que varios autores de renombre en “el mundo de los videojuegos” tratan de explicar distintos algoritmos de IA, técnicas, consejos, buenas prácticas, arquitecturas de diseño, etc. Con toda esta información junto con las estructuras de código y seudocódigo que no se proporciona se trató de implementar el sistema y posteriormente integrarlo en el juego.
Resumen del juego
Prisionero es el título que da nombre al videojuego que se ha desarrollado. Se trata de un videojuego de corte simple para un jugador. El jugador maneja al protagonista del juego, un prisionero que ha conseguido escapar de su celda en la última planta de una cárcel de máxima seguridad. Tu misión como protagonista de la historia será la de fugarte de la cárcel descendiendo por las distintas plantas de la cárcel. Cada una de las plantas será un nivel distinto al anterior con diferentes obstáculos, personajes y dificultad.
Aspecto del juego
El cometido fue desarrollar he integrar el sistema de IA desarrollado como parte fundamental de un videojuego. Por ello el aspecto final del juego es minimalista, no muy logrando, tampoco tiene animaciones, etc. Aun con todo este es necesario mostrar en pantalla gráficos lo suficientemente inteligibles para diferenciar los distintos NPCs, obstáculos, objetos y conjunto de elementos del juego. Los juegos en dos dimensiones normalmente se presentan al usuario con una vista superior, lateral o en su defecto vista isométrica. En este caso, como la mayoría de juegos de rol o estrategia, el juego se presenta con una vista superior o cenital. El escenario del juego esa compuesto por tiles diseñados por un tercero.
Objetivo del juego
Como ya se ha comentado el objetivo final del juego y con el que concluye la historia, acontece cuando “nuestro prisionero” escapa de la cárcel, o lo que es lo mismo, completa con éxito el último nivel del juego. Como objetivo para cada nivel/partida será llegar al punto (normalmente unas escaleras) mediante el cual accedemos a una planta inferior a la actual (siguiente nivel). Cuando conseguimos esto, completamos el nivel.
IA empleada
Además de los algoritomos de “Trigger System” y “Dynamic Reputation System Based on Event Knowledge”, epígrafes 2.2 y 8.6 respectivamente del libro AI GAME PROGRAMMING WISDOM. Se ha desarrollado Inteligencia Artificial complementaria para los NPCs. En concreto se han integrado en estos sistemas de percepción básicos como el oído y la vista. Para el movimiento de los mismos se han implementado seguimiento de rutas, y tanto para estos como para el jugador principal se ha implementado el algoritmo de Pathfinding A*.
Informes
Los siguientes informes muestran información minuciosa y detallada sobre el desarrollo del proyecto. Se central principalmente en aspectos sobre la IA (Inteligencia Artificial):
Tecnología usada
A continuación, se numera la lista de tecnología usada en el proyecto:
- SFML: Mostrar ventanas del sistema, mostrar gráficos e interacción con el teclado, etc.
- Tiled Map Editor: Diseño de Niveles.
- Visual Studio: Como IDE para organizar el código, compilar y ejecutar el proyecto.
- C++: Lenguaje de programación empleado.