¿Piensan nuestros enemigos?: IA de un videojuego

Tal vez es una de las partes que más trabajo nos dé en el desarrollo del juego. Es crucial para la jugabilidad, pues si un videojuego tiene una IA pobre será monótono, al ser fácil acabar con los enemigos o que los demás personajes se comporten de una manera absurda

Daniel González (Diseñador de videojuegos)

¿Piensan nuestros enemigos?: IA de un videojuego

29 junio 2008

Cuando vemos juegos como Call Of Duty 4, donde los enemigos se comportan de mil maneras distintas, o como God of War, donde los jefes finales tienen comportamientos muy trabajados, la experiencia del usuario sube gratamente. No os confundáis, comportamientos con un alto nivel de dificultad en un juego no siempre están relacionados con una inteligencia artificial bien diseñada; simplemente puede ser que, para terminar con un enemigo, haya que dispararle veinte veces en lugar de una.

La palabra clave en esta parte del desarrollo es NPC. Los «jugones» ya sabréis que nos referimos a los No Playable Characters o «personajes no manejables por el jugador» y que, por tanto, están manejados por la IA del motor gráfico.

Por desgracia, no os penséis que la inteligencia artificial es algo parecido al famoso robot Hall9000 que «hacía de las suyas» en 2001: Una Odisea del Espacio, o a la que vemos en otras muchas películas de ciencia ficción. Se trata de algo mucho más básico que se resume en instrucciones de comportamientos. Como su propio nombre indica, son grupos de instrucciones y animaciones que el NPC tiene que aplicar en determinadas circunstancias; por ejemplo, cuando le ataquen, cuando esté patrullando, paseando por la calle, o cuando, a través de nuestro personaje, nos acerquemos y le preguntemos...

Al final, la IA nos creará un entorno reactivo al usuario. Todos los integrantes de nuestro universo reaccionarán a nuestros movimientos y acciones como jugador y dará la sensación de que el mundo está vivo. ¿Os acordáis de las clásicas aventuras gráficas donde los personajes no se movían hiciéramos lo que hiciéramos? Qué tiempos aquellos… y no son tan lejanos.

Paso1

Define los NPC

Lo primero es definir qué tipo de NPC vamos a tener en el proyecto, porque no todos tienen la misma importancia y, por tanto, requieren distintas cantidades de trabajo. Los grupos clásicos son los siguientes:

* Amigos: Aquellos que nos ayudan dándonos información o algún objeto. Un buen ejemplo es el mercader de muchos juegos que, en la mayoría de los casos, no se mueve del sitio o, como mucho, «circula» por una zona muy limitada del escenario.

* Aliados: Este grupo pueden ser los personajes que nos acompañan durante el juego, pelean junto a nosotros e interactúan. Tienen muchas animaciones y, por tanto, comportamientos, ya que tienen que hacer lo mismo que el jugador: desplazarse, atacar, estar en reposo, hablar…

* Neutrales: Personajes que pululan por nuestro mundo, transeúntes principalmente, que como mucho se pueden girar al vernos y soltarnos un improperio si chocamos contra ellos.

* Enemigos: Se trata de los grupos de PNC que nos atacan Aquí, se podría hacer una subdivisión por tipos de enemigos donde podría haber cuatro clases, por ejemplo, los mercenarios, los asesinos, los de la banda del barrio X o los zombies que necesitan siete disparos para terminar con ellos.

* Jefes finales: Quizás el grupo más importante, junto con los aliados. El concepto de jefe final es un poco ambiguo pero básicamente quiere decir que son los enemigos a los que nos enfrentamos para pasar de nivel o misión y que requieren un gran esfuerzo. Un buen juego ha de tener jefes finales que sean atractivos, difíciles de matar y, sobre todo, con muchos comportamientos. Los jefes finales son lo que hacen grandioso a un juego, como God of War o Resident Evil 4.

* Animales: Sí, es cierto que esto puede sonar raro, pero en algunos juegos aparecen animales y, aunque serían muy parecidos a alguno de los otros grupos, los animales jamás se van a comportar como un ser humano. El ejemplo de este grupo serían los perros que nos atacan en Call of Duty 4.

Paso 2

Define grupos de comportamientos

Lo que hay que hacer es pensar qué situaciones de juego se pueden dar para saber cómo han de reaccionar los NPC. Os vamos a dar unos cuantos ejemplos de los más generales; luego, en función de vuestro juego, iréis añadiendo categorías o subdivisiones. En este artículo los vamos a ver por encima y en los próximos nos iremos metiendo en detalle.

* Situación de Ataque: Lo más básico. Tenemos enemigos en pantalla y «los hemos cabreado» tanto que nos atacan. Pues bien, definiríamos cómo nos deben atacar, si por grupos o de forma individual, si nos rodean o nos atacan a distancia…

* Situación de patrulla: Los enemigos defienden una zona del escenario y nosotros tenemos que entrar en ella. Pues bien, esos enemigos patrullarán de una forma concreta y por una zona bien limitada. Algunos pueden pararse a fumar un cigarrillo, otros a hablar o a «echar una meadita»… En fin, se nos pueden ocurrir muchas situaciones divertidas y que le den más vida al juego.

* Situación de alerta: Imaginaos que uno de los enemigos nos ha visto y da la alarma. Quizá el resto no nos ha visto porque no estamos en su campo de visión pero, al sonar las alarmas, han pasado a comportamiento de alerta (buscarme para derribarme). Los movimientos serán más rápidos y ya no habrá animaciones de espera. Lógicamente, habría que definir cómo se pasa de un comportamiento de patrulla a otro de alerta.

* Situación de peligro: Ésta suele ser para los NPC neutrales o aliados. Imaginaos que estáis jugando a GTA San Andreas y hacéis alguna «locura» en la calle. Acordaos de que la gente corría despavorida. En juegos de guerra como Call Of Duty 4, cuando un enemigo tira una granada hacía nosotros, nuestros aliados buscan un refugio para resguardarse de la explosión, con lo que conseguimos un entorno mucho más reactivo. No es lo mismo sacar una pistola en una calle llena de gente, disparar y que no pase nada, a sacar el arma, disparar y que la gente huya y venga la policía a detenernos. Eso hace el juego mucho más divertido y apasionante. Como veis, pequeños detalles en la IA del software hacen que la experiencia del usuario sea más atractiva.

* Situación neutral: Una de las más básicas. La gente se mueve de un lado para otro y, cuando choco contra ellos, protestan. Puedo preguntarles y me contestan algo rápido. Es decir, lo que vemos en una ciudad, por ejemplo.

* Situación obtener recursos: No muchos juegos hacen buen uso de este comportamiento. Supongamos que le quitamos el arma a un enemigo y que por el suelo hay más armas de los caídos. El combate está en desventaja porque yo tengo armas y el enemigo no. ¿No sería lógico que él se lanzara a recoger un arma e igualar el combate? Y no sólo a recoger un arma, también podría recoger munición. Y esta situación no es sólo para los enemigos, también para aliados que combatan con nosotros.

Para terminar, os dejamos con un link muy atractivo, el de la web del motor de IA Kynapse (www.kynogon.com) que tiene unas interesantes demos donde podéis comprobar cómo reacciona una sociedad y entender algunos conceptos de creación de entornos reactivos. Como siempre, dudas, sugerencias y comentarios a [email protected] o bien a través del blog http://crearvideojuegos.blogspot.com.