Blog de los Desarrolladores: Un bot más humano

Por RoamingNumeral

¡Hola a todos!

Os damos la bienvenida a otra entrada del Blog de los Desarrolladores de League of Legends. Esta vez vamos a dar un paso más allá desde el equipo de juego para hablar de los bots, que lo creáis o no, llenan una buena porción del tiempo de juego en League of Legends. Hemos introducido recientemente una serie de cambios centrados en convertirlos en rivales más humanos, y hemos pensado que os interesarían algunas de las historias referentes a la actualización.

Como siempre, vuestros comentarios son más que bienvenidos para mejorar el Blog de los Desarrolladores, mientras tanto, vamos a ver qué implica crear bots mejores y más humanos. Tenemos subiendo al podio al analista de diseño RoamingNumeral, uno de los cerebros detrás de nuestros esfuerzos de actualización de bots. ¡Adelante!

Pwyff

¿Por qué hemos actualizado los bots?

Las partidas de bots consumen una porción de juego bastante importante, incluso entre los jugadores de nivel 30. Son muchas horas las que se pasan con nuestros amigos robóticos y hemos pensado que ese tiempo puede ser más atractivo.

Hemos encuestado a los jugadores de Cooperativo contra IA y a los de PvP también para saber qué piensan de los bots. Uno de los deseos expresados más claramente es que los bots sean más ''humanos'': que sean menos predecibles y que se centren en los mismos elementos de juego que los jugadores, tales como dar el golpe final o bordar los combos. Para nuestra sorpresa, en comparación con lo anterior era menos frecuente el deseo de que los bots fueran "más duros". Según estos datos, nos hemos puesto como objetivo principal para esta actualización el conseguir bots más humanos, especialmente porque esos cambios lograrán que los bots más duros sean más interesantes en el futuro.

Los jugadores también han dicho que creen que los bots no piensan en la fuerza y el peligro del mismo modo que la mayoría de los jugadores. Y parece que estaban en lo cierto.

Mejoras en la evaluación de amenazas

Llamamos evaluación de amenazas a los sistemas que los bots usan para determinar su fuerza y la de sus enemigos. Estos sistemas forman la base de las decisiones de los bots durante la partida.

Nuestros sistemas anteriores usaban un método que es muy común en los juegos, sobre todo en los de disparos en primera persona. El bot examina el daño que se ha recibido recientemente y utiliza el dato para determinar la futura amenaza. En un juego de disparos en primera persona, esto tiene mucho sentido. Si un bot dobla una esquina y recibe un montón de daño, probablemente seguirá recibiendo ese daño si se queda por ahí, así que es mejor que retroceda.

En League of Legends esto funciona de una manera ligeramente distinta. Si Veigar descarga todos sus hechizos sobre un bot y este sobrevive, no es el momento adecuado para que el bot huya. Es el momento de que el bot destruya a ese pequeño y malvado @$!#!. Veigar casi no tiene potencial de daño mientras se enfrían todas sus habilidades así que, ¿por qué no disparar un poco o mucho mientras es vulnerable?

Nuestros nuevos sistemas intentan lidiar con estos escenarios teniendo en cuenta no solo la Vida, sino también la cantidad de hechizos que el bot y cualquier enemigo cercano tienen disponibles. En general, hemos observado mejoras claras en la evaluación de amenazas de los bots (para desconsuelo de Veigar).

Dicho esto, hay que saber que la mejora en la evaluación de amenazas no es una panacea para los bots. League of Legends se creó para que lo jugaran humanos, no bots, y esto genera una serie de problemas. Por ejemplo, el juego no sabe realmente qué va a causar un hechizo antes de que se lance. Cuando se lanzan los Grilletes del Alma de Morgana, comienza a ejecutarse un script que comprueba constantemente si alguien ha roto el vínculo. Cuando el hechizo finaliza, el script dice, ''¡Eh, tú! Estás aturdido y recibes daño'', a todo el que no haya roto el vínculo. Antes de que Morgana lanzara su definitiva, el juego no sabía que los Grilletes del Alma infligían daño y aturdían.

Puede que todo suene obvio, pero solo porque los humanos pueden leer descripciones e imaginar situaciones antes de tiempo. El resultado es que el sistema se puede permitir resolver qué produce un hechizo al ejecutarse. Este, sin embargo, es un enorme problema para los bots porque no pueden leer y no aprenden de la experiencia.

Por esto, la actualización tiene que usar algunas estimaciones aproximadas para la cantidad de daño que pueden infligir los campeones. A veces, los bots seguirán siendo demasiado duros o huirán de una pelea que podrían ganar porque no pueden calcular perfectamente el daño involucrado... como los jugadores :P

¿Y la jungla, saltar muros, etc.?

Aquí todo se reduce a un hecho muy simple: los bots no saben dónde están los muros ni lo que son (es bastante patético ser un bot, ¿no?).

Es esencialmente el mismo reto que con los hechizos: League of Legends se creó para que lo jugaran humanos. Para un humano, la razón por la que un camino se escarpa es obvia, ¡hay un muro! Un bot, por el contrario, solo sigue la ruta para la que se le ha programado. No sabe dónde está exactamente el muro ni su grosor, ni siquiera sabe que el obstáculo es un muro. Podría ser un montón de súbditos. Los bots simplemente siguen la ruta más corta de un punto a otro que les ha proporcionado el sistema de rutas.

Saltar muros con Destello u otras habilidades es extremadamente difícil para un bot, sin saber el grosor del muro o cómo llegar a un lugar más estrecho, es prácticamente imposible automatizarlo. Habrá que realizar grandes esfuerzos de ingenio con los sistemas de terreno para que estos comportamientos sean posibles en el futuro (muy lejano).

Con la jungla pasa lo mismo. Una de las claves para jugar bien en la jungla es elegir rutas que sean seguras u óptimas por razones más allá de la distancia. Sin realizar cambios adicionales en nuestros sistemas de rutas y terreno, no podemos crear un bot de jungla que valga más que un montón de 300 de Oro servidos en bandeja de plata paseándose por ahí.

De verdad creemos que el salto de muros y la jungla serían comportamientos alucinantes para los bots y en el futuro queremos explorar formas de lograr que los bots los controlen. Por ahora, preferimos centrarnos en otros comportamientos que ayudarían a que los bots fueran más hábiles al combatir contra jugadores.

Esquivar los tiros de habilidad

Una de las diferencias más notables entre los jugadores y los bots anteriores era cómo reaccionaban a los tiros de habilidad que recibían. Los jugadores intentan esquivar los tiros de habilidad en la mayoría de las situaciones; los bots, en cambio, recibían todos los tiros de habilidad en toda la cara sin inmutarse. Como este comportamiento es bastante inhumano, hemos querido enseñar a los bots a esquivar. Sin embargo, nos hemos topado con un desafío bastante importante (¡apuesto a que lo adivináis!), como pasa con el terreno, los bots no pueden ''ver'' los tiros de habilidad.

Así solía ser la Jabalina de Nidalee para el bot de Annie:

Bot de Annie conectado...

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: Sí

Acción: Atacar para alegría de mi corazón mecánico

-------------------

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: NO

Acción: Atacar un poco más

-------------------

Escaneando...

Objetivo: Nidalee

Mis PV: REDUCIDOS

PV del objetivo: Elevados

Q del objetivo disponible: NO

Acción: ¡¡QUÉ ES ESTO!! ¿DÓNDE ESTÁN MIS PV? NIDALEE OP, RITO PLS (Huir)

Por suerte para el bot de Annie, Riot Case tuvo una idea para usar la información que ya tenían disponible los bots para ayudarlos a intentar esquivar los tiros de habilidad. Realizando un seguimiento de la dirección a la que miran los oponentes y de las habilidades que hay en enfriamiento desde hace poco, los bots pueden intentar esquivar los tiros de habilidad en algunos caso.

Este es el aspecto de la Jabalina de Nidalee para el bot de Annie tras la actualización:

Bot de Annie conectado...

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: Sí

Acción: Atacar

-------------------

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: NO

[USO DE HECHIZO DETECTADO]

Es un tiro de habilidad:

Mira el objetivo hacia mí:

Acción: ESQUIVA COMO UN NINJA

-------------------

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: NO

Acción: ¡CORTAD EL QUESO Y EL PAN QUE YO VOY A POR EL JAMÓN! (Atacar)

Con este cambio, los bots pueden intentar esquivar los tiros de habilidad... pero no es perfecto, ni mucho menos. Por ejemplo, el Destello Helado de Anivia no entra en enfriamiento hasta que recorre toda la distancia o se reactiva, así que los bots no saben que se ha lanzado. El Orbe del Engaño de Ahri vuelve, así que los bots pueden esquivarlo de ida pero no de vuelta. Hay otras habilidades que este sistema no maneja bien, ¡pero es mejor esquivar algunos tiros de habilidad que ninguno!

Elección de hechizos y equipamiento de los bots

Aparte de los casos complicados de más arriba, había muchas cosas que podíamos hacer para humanizar a los bots invirtiendo mucho tiempo. Especialmente, actualizando las combinaciones de hechizos y las configuraciones de objetos. Nuestro compañero de control de calidad, Riot Afic, nos ha ayudado enormemente con su conocimiento de nivel Diamante y ahora, los bots actualizados usan combinaciones más contemporáneas y configuran objetos más relevantes.

Esto está relacionado con que ahora el bot de Annie aturde con Destello a Tibbers. Poneos la ropa interior adecuada.

Bots más humanos

No sorprende que los bots que intentan registrar más variables sean bastante más intensos en términos computacionales. Los ingenieros de nuestro equipo, RiotAaronMike y RiotWooTang, han realizado una gran labor optimizando el código para que podamos lanzar la actualización sin que afecte a la carga del servidor.

Una buena oportunidad para que los bots sean mucho más eficientes y más humanos era ralentizar contextualmente la frecuencia de escaneo del entorno y de la reacción. Los bots de nivel Principiante ahora escanean más o menos a un tercio de la frecuencia con la que solían hacerlo, mientras que los bots de nivel Intermedio escanean con una frecuencia entre el 50% y el 100% dependiendo de lo amenazados que estén. No podríamos catalogar de "lentos" a ninguno de estos ajustes, pero no son tan rápidos como solían serlo, lo que permite tomar un poco de ventaja ante esas reacciones sobrehumanas y poco realistas.

Estos cambios, además de los diversos cambios adicionales, han creado lo que creemos que son bots más humanos. No son nivel Diamante (probablemente ni siquiera Plata) pero por ahora no intentábamos lograr eso. Nuestros próximos pasos consistirán en buscar maneras para configurar los nuevos bots y mejorar la experiencia de juego Cooperativo contra IA para las primeras partidas de los jugadores. ¡Busca más información acerca de este nuevo proyecto pronto!

RoamingNumeral


5 years ago

Etiquetado con: 
Blog del Desarrolladorr

Contenido Relacionado