Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Artificial Intelligence
Gamedevelopment

Haciendo la Inteligencia Artificial Divertida: Cuando Suficientemente Bueno es Suficientemente Bueno

by
Length:MediumLanguages:

Spanish (Español) translation by RRGG (you can also view the original English article)

Hacer buena inteligencia artificial para oponentes de computadora es difícil. Programar un juego como borradores no es terriblemente desafiante, añadir inteligencia artificial convincente, sin embargo, podría tomar más tiempo que hacer el juego. ¿Pero qué estamos haciendo cuando hacemos esta inteligencia artificial? Es importante para él examinar cada posible movimiento en el tablero, ¿o podemos hacer trampa y hacer que se mueva de forma aleatoria? ¿Qué necesita hacer una inteligencia artificial, y (más importante) cómo podemos asegurarnos que el juego sea divertido?

Buena Inteligencia Artificial vs Divertida Inteligencia Artificial

El término "Inteligencia Artificial" es un concepto amplio, y el tipo de Inteligencia Artificial o IA depende del juego. Los juegos asimétricos, como Space Invaders, Mario, o Tower Defence, permiten al jugador cortar a través de hileras de enemigos sin esfuerzo. Ya que los "equipos" (jugador vs todo lo demás) están desbalanceados, estos juegos tienden a usar una IA muy tonta. Los juegos simétricos, como Starcraft, Street Fighter o Civilisation, esperan que el jugador le gane a los oponentes en igualdad de condiciones, y por lo tanto requieren un IA más complejo.

Space Invaders on the left Starcraft on the right The player is fighting an alien horde in both in Starcraft however they tend to fight back
Space Invaders a la izquierda, Starcraft a la derecha. El jugador está luchando contra una horda de aliens en ambos; en Starcraft, sin embargo, tienden a pelear de vuelta.

Sin embargo, los juegos tienen que ser divertidos, primero y principal. Los jugadores les gusta un reto, no perder repetidamente. De hecho, algunos juegos tal como Damas han sido "solventados", significando que es posible construir un IA que juegue un juego que no se pueda ganar.

Cuando mi equipo y yo estuvimos trabajando en nuestro juego de computadora/tablero Infected, primero tuvimos que hacer que la IA del primer nivel fuese mala para no asustar a los jugadores. El juego IA fue inicialmente un poco simple, y el computador jugaba híper agresivamente, enfocándose enteramente en jugadas de alto puntaje sin ningún tipo de pensamiento de defensa o presencia en el tablero.

A pesar de que la IA era mala, encontramos que los nuevos jugadores eran derribados y perdían el interés. Revisamos la IA muchas veces, aunque todavía probó ser muy retador para los jugadores. Eventualmente, simplemente eliminamos la IA, para que el juego simplemente hiciera un movimiento aleatorio cada vez. Aunque algunos jugadores todavía pudieron perder, esto mejoró de forma masiva la retención del jugador, permitiéndonos volver a introducir la IA "seria" a niveles más altos.

Infected, un juego más o menos fuertemente basado en un juego de Amiga por el mismo nombre.

El problema de un IA "demasiado bueno" puede ser visto en una variedad de juegos: juegos FPS con bots que tengan una visión de 360 grados, o ganarles con bots con reflejos perfectos. Jugar contra estos IA realmente no le enseña al jugador a jugar el juego bien: los enseña a "jugar" contra los bots, tratar de encontrar una falla en el algoritmo que permita muertes fáciles.

No es fácil de decir que todos los IA deberían ser malos, pero sin embargo que un buen IA tiene múltiples facetas. Comete errores, pero trata de evitar caer en los mismos patrones predecibles. Darle al IA la habilidad de adaptarse - y, por lo tanto, proporcionar variedad en el juego - probablemente proporcionará más entretenimiento para el jugador que el IA que juega el mismo juego perfecto cada vez.

Youre nothing but a pack of cards cries Alice Unrealistic AI might make us call out something similar Youre nothing but a bunch of code
"¡No eres más nada sino un paquete de cartas!" llora Alice. El IA no realista podría hacernos decir algo muy similar: "¡No eres más nada sino un paquete de código!".

Haciéndolos Humanos

Después de hacer Infected, brevemente jugamos con una secuela, Infected 2. Era la misma premisa, pero en una escala más grande, similar al clásico juego de mesa Risk. Porque el juego era más grande, era importante tener un IA drásticamente mejorado: algo que podría mantener al jugador entretenido sobre el curso de un juego mucho más largo, y donde múltiples IAs podrían competir contra el otro.

Enchufamos el viejo IA, y hubo varios problemas con él. El IA era predecible, pero eso era algo que podría ser mejorado con poco trabajo. El problema más grande era sobre la actitud general del IA, y cómo se comportaba.

Existían tres problemas principales:

  • Primero, jugar contra el IA no era particularmente divertido.
  • Segundo, ganarle al IA no era particularmente recompensador.
  • Tercero, el IA haría "trampa" al deliberadamente lanzar el juego.

El juego era divertido contra otros jugadores, pero no contra el IA. A pesar de que hubo el mismo nivel de reto, ¿por qué habría de haber una disparidad masiva entre el jugador contra el IA y el jugador contra otra persona, si el juego era el mismo?

Entonces recordamos que los humanos tenemos una cosa que las computadoras no tienen: las emociones.

Parte de jugar el juego es estar emocional; nos encanta una victoria emotiva, odiamos perder devastadoramente. Amamos restregarle nuestra victoria en la cara de nuestros amigos, y nos volvemos mezquinos y vengativos cuando nos traicionan. Los juegos están conectados de forma intrínseca a nuestra emociones, y eso es algo que una IA nunca podrá experimentar... pero es algo que nosotros los desarrolladores podemos emular.

La Chispa Vital

¿Por qué no era divertido jugar contra la IA?

Porque la inteligencia artificial era tan obviamente artificial. Todos los bots jugaban de la misma manera; todos tenían la misma aproximación al juego; todos eran igualmente predecibles en sus patrones de movimiento.

Even in Pac-Man the four ghostsInky Blinky Pinky and Clydehave their own personalities and movement patterns
Incluso en Pac-Man, los cuatro fantasmas - Inky, Blinky, Pinky y Clyde - tienen sus propias personalidades y patrones de movimiento.

Necesitábamos algo para hacerlos resaltar del otro. Así que introdujimos las personalidades; desordenado, defensivo, explorador. El IA le daría peso artificial a ciertas estrategias, y después moverse en esos patrones de ataque.

Incluso en una forma básica, este fue un mejoramiento masivo: no pasaba más que cada juego era el mismo, pero añadía impredecibilidad a los movimientos del enemigo y hacía más difícil formular una estrategia única de "ganar el juego". Si los IAs fuesen aleatorios cuando el juego comenzara, entonces el jugador no sería capaz de predecir cómo el juego se desenvolvería.

Las personalidades en el IA no es una nueva idea. La civilización le da personalidades a sus líderes (Gandhi famosamente ama nukear a las personas), los IAs de Age of Mythology determinan cuán capaces son de usar estrategias como usar un caparazón o apurarse, y los bots de Unreal Tournaments tienen armas favoritas.

Gandhi in Civilisation 5 avoid invoking his wrath
Gandhi en Civilisation 5: evita invocar su ira.

¿Por Qué No Era Satisfactorio Ganarle A La IA?

El problema principal era que la IA jugaba lo que veía como el "mejor movimiento" en cada ronda. Simplemente juzgó el tablero de juego, sin preocuparse por lo diplomático. Si necesitara atacarte, lo haría. Si lo atacaras de vuelta, simplemente no le importaría. Visualizaba el juego como un rompecabezas matemático a solventar, en vez de un juego contra los complejos jugadores humanos. Jugar contra nuestra inteligencia artificial resultó en un juego artificial.

Nuestra solución vino de un juego de Amiga de 1989 llamado Nuclear War. En Nuclear War, peleaste contra varios líderes mundiales y trataste de nukear su país fuera de la existencia. Quien sea que pudo sobrevivir ganaría. Aunque simple, fue sorpresivamente divertido de ver a tus enemigos atrapados en las venganzas personales y lanzarse cabezas de guerra el uno al otro.

Este sistema de "amigos y enemigos" usaba una métrica bastante simple: la felicidad. Cada líder del mundo tenía una variedad de expresiones faciales que te hacía más fácil juzgar su actitud contigo. Sin que sea muy sorprendente, nukear a las personas tendía a volverlos tristes muy rápidamente. En adición, tus enemigos no se pondrían bravos contigo, sino con el otro. Esto significa que un solo misil rebelde podría escalar a una pelea sostenida hasta la muerte.

Una vez más, este sistema ha sido usado en muchos juegos, incluyendo Civilisation. Una nación enemiga con un alto nivel de "felicidad" tiene más probabilidades de aliarse contigo y mandarte regalos, mientras que un enemigo que te odia podría invertir muchos recursos en destrozar tus ciudades.

Al añadir un medidor rudimentario de felicidad en nuestro juego, permitimos que las amistades y rivalidades emerjan. Un juego es más emocionante cuando desarrollas un tipo de justicia, o cuando se forman equipos o alianzas. De repente, el juego se volvió personal, y las acciones se sintieron como si tenían peso. También encontramos que un medidos visible de felicidad era importante, si no el jugador no entendería lo que estaba pasando. Un icono de carita feliz simple inmediatamente habla sobre la idea de que los enemigos se pueden "enfadar", y ver cómo la cara cambia al hacer ciertas acciones lo hizo claro cuales consecuencias estaban teniendo estas acciones.

El dilema del prisionero es bien conocido en el concepto de teoría de juegos, y muchos programadores han pasado mucho tiempo tratando de construir el mejor bot para que compita con el iterado dilema del prisionero. Curiosamente, la estrategia ganadora por muchos años también era la más simple: conocida como tit por tat, simplemente copiaba el movimiento del oponente.

¿Cómo Haría Trampa la IA?

El problema en Infected 2 era muchas veces que la IA simplemente veía la perspectiva a corto plazo. La IA intenta maximizar su puntaje en cada turno: si esto significara hacer un movimiento pobre en general, entonces lo haría de todas maneras.

La manera más fácil de imaginarlo es este escenario:

  • Alice, Bob y Carol están jugando a la guerra.
  • Alice tiene 100 soldados. Bob tiene 75 soldados. Carol tiene 150.
  • Ni Alice ni Bob pueden ganarle a Carol.
  • Sin embargo, Alice y Bob combinados pueden ganarle a Carol.

El problema fue que el IA haría lo que fuera para obtener una mayor cantidad de puntos. En el escenario anterior, eso significaba que Alice atacaría a Bob: a corto plazo, un excelente movimiento, pero a largo plazo, desastroso. No solo Alice está haciendo un movimiento que la condena, está condenando a Bob a que se dirija junto a ella a perder. Bob está comprensiblemente molesto.

Este tipo de situación es difícil de evitar, ya que ver la gran imagen requiere un razonamiento complejo más allá de una simple IA. Tratamos de asegurar la "justicia" al hacer que los jugadores sean atacados con menos probabilidades si estuviesen perdiendo o hayan sido atacados recientemente. Mientras que no todos los juegos pueden aplicar una solución simple, es importante darse cuenta que los jugadores odian ser atacados por ninguna razón aparente.

Mientras que Infected 2 nunca fue más allá de la etapa alfa, nos enseñó algunas lecciones con mucho valor. Mucho más importante, eso no es suficiente para jugar contra los bots enemigos: quieres estar involucrado en el juego, desarrollar rivalidades, y ganarle a todos aquellos que se paren frente a ti.

IA Bien Hecha

Muchos años atrás, un juego fue publicado que parecía mucho más adelantado que la competencia. Aunque es un juego de múltiples jugadores por diseño, los bots fueron lo suficientemente buenos para que fuesen disfrutados por un solo jugador. Y, a pesar de que por los estándar de hoy en día sea pobre, este juego - Unreal Tournament - tenía IA que hacía que los otros juegos se vieran como nada.

Podemos ver a una captura del juego para ver cómo hicieron para hacer ese bot:

Bot 19, aka Tamerlane.

La habilidad fue el factor principal en determinar el comportamiento del bot: los bots novatos eran lentos, tenían que estar quietos para disparar, y eran lentos al voltearse, mientras que los botos de más alto nivel eran más rápidos, podían evadir, tenían un campo visual mucho más grande y podían usar técnicas de combo avanzadas.

Los bots podían ser modificados más adelante con exactitud, vigilancia, campamentos y niveles de descarga. La "personalidad" podría ser determinada por el estilo de combate y el arma favorita, determinando si al bot le gustaba acercarse y hacerlo personal, o tratar de matar con un francotirador desde la distancia. Los bots también perseguirían a los jugadores y buscarían la venganza. Cada uno de los 32 bots podrían ser personalizados individualmente, significando que podrías tener 32 personalidad diferentes. Ciertos bots, tal como Loque, se volvieron célebres entre los jugadores.

Todos esos factores ayudaron a crear bots que se sentían más humanos. Mientras que el juego todavía sería bueno sin esta sofisticación, añade una capa extra y casi imperceptible de diversión.

Conclusión

Al final del día, necesitas preguntar: ¿qué quieres de tu IA? ¿Los enemigos irán a apurar al jugador y llevarlos directo a fosas sin pensarlo, o estás tratando de desarrollar algo más, algo que provea un nivel de interacción más personal con el jugador? Lo que decidas, recuerda tres puntos claves:

  • Si los bots cometen errores, entonces se sienten más humanos, y menos como un "paquete de cartas".
  • Si deliberadamente hacen jugadas basadas en personalidades individuales (o emoción, como la venganza), entonces un juego impredecible y emocionante tiene más probabilidades de emerger.
  • Si los bots tratan de jugar inteligentemente, en vez de con movimientos a corto plazo, tienen más probabilidades de hacer que el juego sea justo a nuestros ojos.

Referencias

  • Imagen de pre visualización: Ghost por Andres Flores del Proyecto Noun.
  • Imagen pre visualizada: Pacman por Andres Flores del Proyecto Noun.
  • Ilustración de Alicia en el País de las Maravillas: Por John Tenniel, en el dominio público
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.