Project Paidia: Personas e Inteligencia Artificial jugando juntos
Hasta ahora, en el mundo de los videojuegos la Inteligencia Artificial (IA) ha sido diseñada para crear personajes no jugadores (PNJs o agentes) que sean capaces de ganar a sus oponentes humanos. Pero, ¿y si pudiéramos enseñar a los PNJs a colaborar con nosotros?
Este es el punto de partida del proyecto Paidia, un trabajo de investigación entre Microsoft Research Cambridge y Ninja Theory en el que hemos participado utilizando Wave Engine para crear un videojuego web que muestra esta tecnología.
AI jugando en equipo
Los PNJs son el alma de muchos videojuegos, y las nuevas técnicas en IA permiten crear personajes que se comporten de manera orgánica y respondan naturalmente a los jugadores.
Utilizando el aprendizaje por refuerzo, la Inteligencia Artificial abre la posibilidad de crear agentes que son capaces de colaborar en equipo con jugadores humanos, tomando diferentes roles y adaptando su forma de jugar conforme cambia la situación en el juego.
Esta técnica de aprendizaje permite entrenar a un agente en un videojuego (entorno) de manera autónoma. El agente va tomando decisiones en el juego y se le va recompensando en función del resultado de sus acciones. Igual que ocurre con el aprendizaje humano, el agente aprende de su propia experiencia a medida que juega, mejorando poco a poco.
Entrenando varios agentes a la vez, estos pueden aprender, mediante la experiencia, cómo trabajar en equipo para conseguir el objetivo (ganar el juego) de la mejor manera posible, tomando decisiones estratégicas y tácticas coordinadas.
Una ventaja interesante de aplicar esta técnica en videojuegos es que los agentes entrenados, al basarse en su propia experiencia, pueden actuar y adaptarse a nuestro juego de maneras muy creativas y quizá poco convencionales desde nuestro punto de vista, pero que pueden resultar muy efectivas. Esto a su vez permitirá a los jugadores humanos mejorar su juego en equipo y aprender nuevas tácticas o mejorar otras.
Como prueba de concepto, el equipo del proyecto Paidia entrenó un agente en un entorno simple donde dos jugadores deben colaborar. En un espacio cuadrado hay tres zonas circulares y el objetivo es activar dos de esas zonas circulares pasando por encima de ellas, pero para poder activarlas, otro jugador debe estar posicionado sobre la tercera.
El videojuego
En Plain Concepts hemos desarrollado un videojuego que utiliza los resultados del proyecto Paidia para mostrar los primeros avances en IA colaborativa en videojuegos.
El juego está diseñado para probar rápidamente la colaboración entre dos jugadores – tú (blanco), y el agente entrenado (azul). El juego se desarrolla en una habitación cerrada en una nave espacial, y para escapar debéis colaborar. Mientras un jugador presiona el interruptor (botón en rojo), el otro debe activar las plataformas amarilla y azul para abrir la puerta y escapar.
Para poder jugar desde un navegador web, en primer lugar tuvimos que optimizar el agente reduciendo información de la red neuronal que sólo se usa en el entrenamiento. De esta manera conseguimos que el modelo se ejecute en tiempo real en cualquier navegador.
Además, tuvimos que crear la lógica del juego de tal manera que se adaptase al entorno en el cual el agente había sido entrenado, y así los agentes pudieran jugar en él. Para ello usamos nuestro motor gáfico Wave Engine, que nos permite crear ejecutables optimizados tanto para PC como para Web utilizando WebAssembly y WebGL. Aunque en Plain Concepts preferimos trabajar con WebGL 2.0, en este videojuego adaptamos la librería gráfica a WebGL 1.0 para dar soporte a dispositivos Apple.
Finalmente, la comunicación entre el videojuego y el PNJ se realiza mediante una API Javascript para la cual hemos utilizado onnxjs. Esta API recibe como entrada el “estado” del juego, ejecuta la IA y responde con la acción que el agente quiere tomar a continuación.