Inteligencia Artificial de un videojuego

En esta entrega terminamos la parte de desarrollo dedicado a la IA de un videojuego, un tema que, por los correos recibidos, hemos podido comprobar que os interesa mucho. Nos alegramos porque es una parte importante en el proceso de creación

Daniel González (Diseñador de videojuegos)

Inteligencia Artificial de un videojuego

11 octubre 2008

Una de las cosas que más preocupa a la industria es crear entornos reactivos, y lo más interesante es que esto se empieza a aplicar a otros sectores fuera de los videojuegos, como simuladores sociales para formación, reconstrucciones virtuales y simuladores bélicos para los ejércitos. Básicamente, estos entornos reactivos ya existen en muchos juegos, pero se basan en una relación «causa-efecto»; es decir, yo provoco algo y en consecuencia pasa algo (la gente huye, el escenario se derrumba o cambia de forma…).

Juegos como Los Sims son la primera piedra de los nuevos entornos reactivos y evolutivos, que evolucionan solos, tanto porque nosotros provoquemos algo como porque, sencillamente, un personaje decida evolucionar él solo.

El acierto de este «simulador social» es cómo está creado y diseñado su sistema de inteligencia artificial, ya que se reproducen comportamientos y acciones posibles (previamente definidas por el diseñador) y se las asocia a elementos concretos del juego. Esto crea situaciones divertidas al poder interactuar con un objeto de varias maneras, por ejemplo en la forma de comportarse un sim ante los elementos que creamos dentro de la casa, donde las posibilidades son muy variadas.

El juego que está tratando de ir más allá en la evolución de la IA es Spore del diseñador Will Wright. Se trata de un juego que simula la evolución de una especie desde las etapas más primitivas (seres unicelulares) hasta la colonización de la galaxia por parte de ésta. Con esto os queremos decir que no es ciencia ficción de lo que hablamos.

Ahora bien, ¿cómo podemos aprovechar esto en nuestro diseño de videojuego o cómo diseño algo tan evolutivo? Muy fácil, jugando a ser Dios. Aunque a nivel de programación es un mundo complejo y tremendamente largo, se resume en una serie de reglas y factores que tenemos que definir. Lo que hay que crear es nuestro propio espacio evolutivo, con evoluciones predefinidas o aleatorias y un marco donde poder combinar todo esto.

Paso 1

Crea las reglas

Si nos imaginamos que tenemos un simulador social, supongamos que queremos que el resto de jugadores que no controlamos puedan evolucionar y crear situaciones nuevas. Para eso crearemos las reglas de evolución. Lo primero es marcar qué evoluciona; por ejemplo la ropa. Un personaje puede irse creando distinta ropa y aparecer en varias fases con modelos aleatorios.

Otro elemento de evolución es el del carácter: un personaje puede ser amable, terco, estar enfadado, sentir afinidad por unos personajes u odiar a otro grupo. Como veis, en realidad lo que tenemos son tablas de situaciones a las que pueda evolucionar el personaje. Las podemos hacer en Excel y definir simplemente que tal personaje puede evolucionar a X posibilidades.

Paso 2

Define cuándo evolucionan

Esta parte es la más difícil porque es cuando interviene la jugabilidad. Antes sólo hemos enumerado posibilidades de evolución de un personaje, pero imaginemos un simulador social que se juega a través de Internet, donde tenemos personajes controladores por jugadores y NPC (los controlados por la IA del juego) cuya función es crear situaciones, ya que, a lo mejor, las personas no entran en contacto o no crean situaciones de juego.

Bien, pues nuestros NPC tienen la habilidad de «tocar las narices» a los jugadores para obligarles a hacer algo. Lo bonito sería que nadie supiera qué rol está controlado por una persona y cuál por la IA, para lo cual ese personaje tendría que cambiar constantemente.

Para ello, de nuevo nos crearemos unas tablas de Excel donde podemos definir dos tipos: situaciones de evolución creadas por el jugador y las creadas aleatoriamente sin ninguna regla. Éstas últimas deberían ser las más superficiales, como por ejemplo la evolución física del personaje. Pero las primeras han de ser algo que aporte jugabilidad.

Un buen ejemplo sería un caso en el que un jugador se pasa al «lado oscuro» y el resto de personajes evolucionan hacia una postura contraria o negativa hacía él, incluso puede que hablen mal de ese jugador al resto de jugadores. Para ello marcaríamos en nuestra tabla de Excel que si cometemos determinados actos, los personajes que no controlamos evolucionan hacia ciertas posturas.

Otro ejemplo sería para un juego de naves. ¿Cómo evoluciona el armamento y las características de las naves rivales? Imaginad que subimos de nivel y creamos una nave muy poderosa en ataques a distancia pero que, por el contrario, es muy lenta. El resto de naves controladas por la IA deberían tener la capacidad de decidir en función a las posibilidades de nuestra tabla de Excel cómo evolucionar y convertirse en naves muy rápidas que nos hagan más daño en combate.

¿A que ahora ya vais entendiendo para qué sirve la evolución? Los juegos de estrategia podrían ser increíbles si los ejércitos enemigos atacaran nuestros puntos débiles. Juegos impresionantes como Rome: Total War tienen una buena simulación de combate pero al cabo de X horas veías perfectamente que el ataque de los enemigos sigue una máquina de estados, va pasando por determinados ataques predefinidos hasta que con uno te hace daño; es decir, es muy mecánico.

Al final, los jugadores, que solemos ser muy vagos, nos aprendemos tres tipos de ataques y los usamos hasta el final. Por el contrario, en la vida real el enemigo aprendería de sus errores. Si nosotros definimos posibilidades y momentos de evolución, el ejército enemigo tendría casi infinitas posibilidades de atacarnos y será muy difícil que veamos un mismo combate más de dos veces.

Paso 3

Mi propia evolución

Esta parte cada vez tiene más peso en los videojuegos y aún falta un largo camino para que sea real, pero las bases ya están asentadas. Hasta ahora hemos visto juegos como los de Star Wars en los que nuestros actos nos llevan hacia el lado oscuro de la fuerza o hacia la luz de los Jedis. En otros juegos de rol, como Neverwinter Nights 2, nuestros actos afectan al resto de personajes pero ¿por qué no puede evolucionar mi personaje solo?

Está claro que siempre va a ser marcado por los actos propios, pero si jugamos en un título multijugador on-line ¿por qué no va a afectarnos lo que hagan los demás? Esto tiene relación con la propia línea argumental del videojuego.

Por eso, lo primero que haremos será crear líneas argumentales o misiones que sólo se puedan hacer cuando el jugador evoluciona hacia algo en concreto; eso le dará un abanico de jugabilidad fantástico al jugador, además de una gran profundidad a la historia. En los juegos de rol se hace más interesante, porque podemos equipar al personaje con determinados poderes o con diversas armas, pero ¿por qué no se vuelve más arrogante si tiene más poder?

Sería sencillo definir un tipo concreto de animaciones de andar más chulescas y unas contestaciones y forma de hablar más duras. Pero también deberíamos definir que si abusamos de determinadas magias, el jugador sufra por su uso, por ejemplo evolucionando a perder velocidad o puntería en las armas de larga distancia.

Paso 4

Concluimos con la IA

Lo que hemos visto quizá os pueda parecer demasiado teórico pero es interesante hacer pruebas y estudiar estos caminos porque el mercado de los videojuegos evoluciona, y nunca mejor dicho, hacia ese lado.

Técnicamente en cuanto a calidad gráfica estamos empezando a llegar a un techo, es como cuando sólo había escenarios 2D que eran render fijos de modelos 3D. Cuando ya eran fotorrealistas y no impresionaban más, saltamos a tener escenarios 3D en tiempo real.

Pues con la IA pasa lo mismo. Si la industria se vuelca hacia juegos en red no lineales, lo importante es la evolución de todos los personajes, con lo que empezar desde ya a meter pequeñas partes de evolución en cualquier desarrollo es trabajo ganado para el futuro.

El mes que viene veremos los ítems de un videojuego. Desde los básicos como la vida o munición hasta los que nos permiten evolucionar el personaje o subir de nivel. Aprenderemos a cómo hacer un buen uso de estos recursos, tanto en guión como en jugabilidad. Como siempre, dudas, sugerencias y comentarios a través del blog http://crearvideojuegos.blogspot.com o por correo electrónico a [email protected].