Haciendo AI divertido Cuando lo suficientemente bueno es lo suficientemente bueno

Hacer una buena inteligencia artificial para los oponentes de la computadora es difícil. Programar un juego como drafts no es terriblemente desafiante; Sin embargo, agregar AI convincente puede llevar más tiempo que hacer el juego en sí. Pero, ¿qué estamos haciendo cuando hacemos esta IA? ¿Es importante que examine todos los movimientos posibles en el tablero, o podemos hacer trampa y simplemente hacer que se mueva al azar? ¿Qué debe hacer una IA y, lo que es más importante, cómo podemos asegurarnos de que el juego sea divertido??

Buena IA vs Diversión AI

El término "IA" es un concepto muy amplio, y el tipo de AI depende del juego.. Asimétrico Los juegos, como Space Invaders, Mario o Tower Defense, permiten al jugador atravesar franjas de enemigos sin esfuerzo. Dado que los "equipos" (jugador contra todo lo demás) están desequilibrados, estos juegos tienden a usar la inteligencia artificial.. Simétrico Los juegos, como Starcraft, Street Fighter o Civilization, esperan que el jugador derrote a los oponentes en igualdad de condiciones, por lo que requieren una IA más compleja..

Space Invaders a la izquierda, Starcraft a la derecha. El jugador está luchando contra una horda alienígena en ambos; En Starcraft, sin embargo, tienden a contraatacar..

Sin embargo, los juegos deben ser divertidos, ante todo. Los jugadores disfrutan de un desafío, no perdiendo repetidamente. De hecho, algunos juegos como Damas se han "resuelto", lo que significa que es posible crear una IA que juegue un juego inmejorable..

Cuando mi equipo y yo estábamos trabajando en nuestro juego de computadora / tablero Infectado, tuvimos que hacer que la inteligencia artificial del primer nivel fuera intencionalmente horrible para no asustar a los jugadores. El juego AI inicialmente era bastante simplista, y la computadora jugaba de manera agresiva, enfocándose completamente en jugadas de alto puntaje sin pensar en la defensa o en la presencia del tablero.. 

A pesar de que la IA era pobre, encontramos que los nuevos jugadores serían aplastados y perderían el interés. Revisamos la IA varias veces, aunque aún resultó ser un gran desafío para los jugadores. Finalmente, simplemente eliminamos la IA, por lo que el juego solo haría un movimiento aleatorio cada vez. Aunque algunos jugadores todavía logró perder, esta retención masiva de jugadores mejoró, lo que nos permite reintroducir la IA "seria" en niveles más altos.

Infectado, un juego bastante basado en un juego de Amiga con el mismo nombre.

El problema de la inteligencia artificial "demasiado buena" se puede ver en una variedad de juegos: juegos FPS con bots que tienen una visión de 360 ​​grados, o golpes contra bots con reflejos perfectos. Jugar contra estas IAs no enseña al jugador a jugar bien el juego: les enseña a "jugar" a los bots, a tratar de encontrar una falla en el algoritmo que permita matar fácilmente.

Esto no quiere decir que toda la inteligencia artificial deba ser pobre, sino que la buena inteligencia artificial es multifacética. Comete errores, pero trata de evitar caer en los mismos patrones predecibles. Darle a la IA la capacidad de adaptarse y, por lo tanto, proporcionar una variación en el juego, probablemente proporcionará mucho más entretenimiento para el jugador que una IA que juegue el mismo juego perfecto cada vez.

"¡No eres más que un paquete de cartas!" llora Alice. La IA poco realista podría hacernos decir algo similar: "¡No eres más que un montón de código!".

Haciéndolos humanos

Después de hacer Infected, jugamos brevemente con una secuela, Infected 2. Era la misma premisa, pero a mayor escala, similar al clásico juego de mesa Risk. Debido a que el juego era más grande, era importante haber mejorado drásticamente la IA: algo que pudiera mantener al jugador entretenido en el transcurso de un juego mucho más largo, y donde múltiples AIs pudieran competir entre sí. 

Conectamos la antigua IA, y hubo varios problemas con ella. La IA era predecible, pero eso era algo que podía mejorarse con un poco de trabajo. El problema más grande fue con respecto a la actitud general de la IA, y cómo jugó. 

Hubo tres problemas principales:

  • En primer lugar, jugar contra las IA no fue particularmente divertido.
  • En segundo lugar, vencer a la IA no fue particularmente gratificante.
  • En tercer lugar, la IA "haría trampa" lanzando deliberadamente el juego.

El juego fue divertido contra otros jugadores, pero no contra la IA. Aunque todavía existía el mismo nivel de desafío, ¿por qué existía una disparidad tan enorme entre jugadores contra la IA y jugar contra otra persona, si la jugabilidad era la misma??

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

Parte de jugar un juego es emocionarse; Amamos una victoria emocionante, odiamos una derrota aplastante. Nos encanta frotar nuestras victorias en la cara de nuestros amigos, y nos volvemos mezquinos y vengativos cuando nos traicionan. Los juegos están intrínsecamente vinculados a nuestras emociones, y es algo que una IA nunca puede experimentar ... pero es algo que los desarrolladores pueden emular.

La chispa vital

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

Porque la inteligencia artificial era tan obvia. artificial. Todos los bots jugaron de la misma manera; todos tenían los mismos enfoques para el juego; Todos eran igualmente predecibles en sus patrones de movimiento..

Incluso en Pac-Man, los cuatro fantasmas (Inky, Blinky, Pinky y Clyde) tienen sus propias personalidades y patrones de movimiento..

Necesitábamos algo para que se destacaran unos de otros. Así que introducimos personalidades: imprudente, defensiva, exploradora. La IA le daría un peso artificial a ciertas estrategias y luego se movería en esos patrones de ataque..

Incluso en una forma básica, esto fue una mejora masiva: ya no era lo mismo en todos los juegos, pero agregaba imprevisibilidad a los movimientos enemigos y hacía más difícil formular una única estrategia "ganadora de juegos". Si las IAs fueran aleatorias cuando comenzó el juego, entonces el jugador no podría predecir cómo se desarrollaría el juego.

Personalidades en la IA no es una idea nueva. La civilización otorga personalidades a sus líderes (Gandhi, famoso por ser famoso con las armas nucleares), los AI de Age of Mythology determinan la probabilidad de que utilicen estrategias como el turtling o la prisa, y los robots de Unreal Tournament tienen sus armas favoritas..

Gandhi en Civilization 5: evita invocar su ira.

¿Por qué no venció a la recompensa de inteligencia artificial??

El problema principal fue que la IA jugó lo que consideraba una "mejor jugada" en cada ronda. Simplemente evaluó el tablero de juego, sin tener en cuenta la diplomacia. Si tuviera que atacarte lo haría. Si lo atacabas de vuelta, simplemente no le importaba. Veía el juego como un rompecabezas matemático a resolver, en lugar de un juego contra jugadores humanos complejos. Jugar contra nuestra inteligencia artificial resultó en un juego artificial..

Nuestra solución vino de un juego de Amiga de 1989 llamado Guerra Nuclear. En la Guerra Nuclear, luchaste contra varios líderes mundiales e intentaste sacar a su país de la existencia. Quien lograra sobrevivir ganaría. Aunque simplista, fue sorprendentemente divertido ver a tus enemigos atrapados en vendettas personales y lanzarse ojivas..

Este sistema de "amigos y enemigos" usaba una métrica muy simple: la felicidad. Cada líder mundial tenía una variedad de expresiones faciales que hacían que fuera fácil juzgar su actitud hacia ti. Como era de esperar, las personas molestas tendían a hacerlas infelices muy rápidamente. Además, tus enemigos no solo se enojarán contigo, sino con los demás. Esto significaba que un solo misil descarriado podría convertirse en una lucha sostenida hasta la muerte..

Una vez más, este sistema se ha utilizado en muchos juegos, incluyendo Civilization. Una nación enemiga con un alto nivel de "felicidad" es más probable que se alíe contigo y te envíe regalos, mientras que un enemigo que odia a ti puede invertir muchos recursos en destruir tus ciudades.

Al agregar un medidor de felicidad rudimentario a nuestro juego, permitimos que se formaran amistades y rivalidades. Un juego es más emocionante cuando desarrollas una némesis o cuando se forman equipos y alianzas. De repente, el juego se volvió personal y las acciones se sintieron como si tuvieran peso. También encontramos que un medidor de felicidad visible era importante, de lo contrario el jugador no entendería lo que estaba sucediendo. Un simple icono de cara feliz transmite inmediatamente la idea de que los enemigos pueden "disgustarse", y ver el cambio de cara al tomar ciertas acciones aclaró qué consecuencias estaban teniendo estas acciones..

El dilema del prisionero es un concepto bien conocido de la teoría de juegos, y muchos programadores han pasado tiempo tratando de construir el bot definitivo para competir en el dilema del prisionero iterado. Curiosamente, la estrategia ganadora durante muchos años también fue la más simple: conocida como tit-for-tat, simplemente copió el movimiento del oponente..

¿Cómo la trampa de la IA?

El problema en Infected 2 era a menudo que la IA simplemente estaba mirando la perspectiva a corto plazo. La IA apunta a maximizar su puntaje en cada turno: si esto significara hacer un movimiento pobre en general, entonces lo haría de todos modos..

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

  • Alice, Bob y Carol juegan a la guerra..
  • Alice tiene 100 soldados. Bob tiene 75 soldados. Carol tiene 150.
  • Ni Alice ni Bob pueden vencer a Carol.
  • Sin embargo, Alice y Bob combinados pueden vencer a Carol.

El problema era que la IA haría lo que fuera que obtuviera la mayor cantidad de puntos. En el escenario anterior, eso significaba que Alice atacaría a Bob: a corto plazo, un movimiento excelente, pero a largo plazo, desastroso. Alice no solo está haciendo un movimiento que se condena a sí misma, sino que también condena a Bob a una derrota segura. Bob está comprensiblemente molesto.

Este tipo de situación es difícil de evitar, ya que ver el panorama completo requiere un razonamiento complejo más allá de la IA más simple. Tratamos de garantizar la "imparcialidad" haciendo que los jugadores tengan menos probabilidades de ser atacados si perdían o si habían sido atacados recientemente. Si bien no todos los juegos pueden aplicar una solución simple, es importante darse cuenta de que los jugadores odian ser atacados sin ninguna razón aparente..

Si bien Infected 2 nunca superó la fase alfa, nos enseñó algunas lecciones valiosas. Lo más importante es que no es suficiente jugar contra los robots enemigos: quieres participar en el juego, desarrollar rivalidades y aplastar a todos los que se oponen a ti..

AI hecho bien

Hace muchos años, se publicó un juego que parecía a pasos agigantados antes de la competencia. Aunque era un juego multijugador por diseño, los bots eran lo suficientemente buenos como para ser disfrutados por un solo jugador. Y, aunque para los estándares de hoy en día es pobre, este juego, Unreal Tournament, tenía una IA que hizo explotar otros juegos..

Podemos ver una captura de pantalla en el juego para ver qué se utilizó para crear un bot:

Bot 19, también conocido como Tamerlane.

La habilidad era el factor principal para determinar el comportamiento de los bots: los bots novatos eran lentos, tenían que quedarse quietos para disparar y eran lentos para girar, mientras que los bots de nivel superior eran más rápidos, podían esquivar, tenían un campo de visión más grande y podían usar avanzado técnicas de combinación de armas.

Los bots podrían modificarse posteriormente con precisión, estado de alerta, acampada y niveles de reclutamiento. La "Personalidad" estaría determinada por el estilo de combate y el arma favorita, y determinaría si al robot le gustaba acercarse más a lo personal, o intentar dispararle a distancia. Bots también se burlaría del jugador y buscaría venganza. Cada uno de los 32 bots podría personalizarse individualmente, lo que significa que podría tener 32 personalidades distintas. Ciertos bots, como Loque, se hicieron notorios entre los jugadores..

Todos estos factores ayudaron a crear bots que se sentían más humano. Si bien el juego aún sería bueno sin esta sofisticación, agrega una capa de diversión extra, casi imperceptible..

Conclusión

Al final del día, debes preguntar: ¿qué quieres de tu IA? ¿Los enemigos se apresuran a apresurar al jugador y caminan de cabeza a pits, o intentas desarrollar algo más, algo que ofrezca un nivel más personal de interacción con el jugador? Decida lo que decida, recuerde tres puntos clave:

  • Si los bots cometen errores, se sienten más humanos y menos como un "paquete de cartas".
  • Si deliberadamente hacen juegos basados ​​en la personalidad individual (o emoción, como la venganza), entonces es más probable que surja un juego impredecible y emocionante..
  • Si los bots intentan jugar inteligentemente, en lugar de ser cortos de vista, es más probable que hagan el juego justo para nuestros ojos..

Referencias

  • Imagen de previsualización: Fantasma de Andres Flores del Proyecto Noun
  • Imagen de vista previa: 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