Blog de los Desarrolladores: Un bot más humano

Por RoamingNumeral

¡Hola a todos!

Bienvenidos a otra entrada más del Blog de Desarrolladores de League of Legends. En esta ocasión vamos a alejarnos un poco del equipo de jugabilidad para hablar de los bots, que aunque no lo crean ocupan una buena porción del tiempo de juego de League of Legends. Recientemente introdujimos una serie de cambios orientados a convertirlos en rivales que parezcan más humanos, y pensamos que probablemente a todos ustedes les interesaría conocer algunas de las historias detrás de dicha actualización.

Como siempre, sus comentarios son más que bienvenidos pues queremos mejorar el Blog de Desarrolladores, pero mientras tanto, veamos a continuación 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!

RiotSaori

¿Por qué actualizamos los bots?

Las partidas de bots ocupan una porción de juego importante, incluso entre los jugadores de nivel 30. Eso constituye muchas horas en compañía de nuestros amigos robóticos y pensamos que ese tiempo podría ser más divertido.

Encuestamos a los jugadores de Cooperativo contra IA y a los de PvP para saber qué piensan de los bots. Uno de los comentarios más comunes pedía que los bots fueran más ''humanos'': que fueran menos predecibles y que se centraran en los mismos elementos de juego que los jugadores, tales como dar el golpe final o hacer combos. Para nuestra sorpresa, eran menos frecuentes las peticiones de que los bots fueran más difíciles. Con base en estos datos, nos pusimos como objetivo para esta actualización el tener bots más humanos, especialmente porque con un cambio de este tipo los bots más difíciles serán mucho más interesantes en un futuro.

Los jugadores también manifestaron que los bots no piensan en la fuerza y el peligro del mismo modo que lo hace la mayoría de los jugadores. Resulta que están 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, especialmente en los de disparos en primera persona. El bot examina el daño recibido recientemente y utiliza este dato para determinar la amenaza futura. En un juego de disparos en primera persona, esto tiene mucho sentido. Si un bot dobla por una esquina y recibe mucho daño, muy 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 malvado pequeño hijo de @$!#!. Veigar casi no tiene potencial de daño mientras se enfrían todas sus habilidades, ¿por qué entonces no dispararle un poco o un mucho mientras es vulnerable?

Nuestros nuevos sistemas intentan encarar estos escenarios teniendo en cuenta no solamente 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 el pesar de Veigar).

De cualquier modo, hay que aclarar que la mejora en la evaluación de amenazas no es el remedio de todos los males para los bots. League of Legends se creó para que lo jugaran seres humanos y no bots, con lo que se genera una serie de problemas. Por ejemplo, el juego no sabe realmente qué va a causar un hechizo antes de que sea lanzado. 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 le dice “¡Oye, 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 iban a infligir daño y a aturdir.

Puede que todo esto suene muy obvio, pero es así porque los humanos pueden leer descripciones e imaginar escenarios antes de tiempo. Como resultado, el sistema se puede permitir resolver qué produce un hechizo al ejecutarse. Esto, sin embargo, es un enorme problema para los bots porque no pueden leer y no aprenden a partir de la experiencia.

Debido a esto, la actualización tiene que usar algunas estimaciones aproximadas sobre la cantidad de daño que pueden infligir los campeones. A veces los bots seguirán lanzándose con dureza y en otras huirán de una pelea que podrían perfectamente haber ganado porque no pueden calcular con exactitud el daño involucrado... algo que sí pueden hacer los jugadores :P

¿Por qué no hicimos jungla ni saltar muros, etc.?

En este caso todo se reduce a un hecho muy simple: los bots no saben dónde están los muros ni lo que son (apesta ser un bot, ¿verdad?).

Esencialmente, se trata del mismo reto que representan los hechizos: League of Legends fue creado para que lo jugaran seres humanos. Para un humano, la razón por la que un camino se curva es bastante obvia: ¡porque hay un muro! Un bot, por el contrario, se limita a seguir la ruta para la que fue programado. No sabe dónde está exactamente el muro ni qué tan grueso es, ni siquiera sabe que el obstáculo es algo llamado muro. Para él podría ser un montón de súbditos, por ejemplo. Los bots simplemente siguen la ruta más corta de un punto a otro de acuerdo a la información proporcionada por un 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. Tendremos que estar realizando una gran cantidad de ajustes en los sistemas de terreno para que estos comportamientos sean posibles en un futuro (muy, 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 que van más allá de la distancia. Sin realizar cambios adicionales en nuestros sistemas de rutas y terreno, nos es imposible crear un bot junglero que no sea otra cosa que pila 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 el momento, preferimos enfocarnos en otros comportamientos que ayudarán a que los bots sean 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 sin siquiera inmutarse. Como este comportamiento es bastante inhumano, quisimos enseñarles a los bots a esquivar este tipo de tiros. No obstante, nos topamos con un desafío importante (¿lo adivinaste?), al igual que con el terreno, los bots simplemente no pueden “ver” los tiros de habilidad.

Para el bot de Annie, esto era Jabalina de Nidalee:


Bot de Annie conectado...

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: Sí

Acción: Atacar para que mi corazón mecánico se sienta contento

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

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:¡¡DEMONIOS!! ¿DÓNDE ESTÁN MIS PV? NIDALEE ESTÁ 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 se han puesto recientemente en enfriamiento, los bots pueden intentar esquivar los tiros de habilidad en algunos casos.

Este es el aspecto de la Jabalina de Nidalee para el bot de Annie después de haber hecho 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: ESQUÍVALO COMO NINJA

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

Escaneando...

Objetivo: Nidalee

Mis PV: Elevados

Q del objetivo disponible: NO

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


Con este cambio, los bots pueden intentar esquivar los tiros de habilidad... pero no es perfecto desde luego. Por ejemplo, el Destello Helado de Anivia no entra en enfriamiento hasta que recorre toda la distancia o es reactivado, así que los bots no saben que ha sido lanzado. El Orbe del Engaño de Ahri regresa, por lo 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, ¿no es cierto?

Actualización de los combos y configuraciones

Aparte de los casos difíciles de más arriba, había muchas otras cosas que sí podíamos hacer para humanizar a los bots invirtiendo una buena cantidad de tiempo; particularmente, actualizando sus combos de hechizos y 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 combos más contemporáneas y configuran objetos más relevantes.

Por cierto, ahora Annie va a lanzar Destello, aturdir y luego a Tibbers, así que vayan poniéndose la ropa interior adecuada.

Bots más humanos

Para nada es sorpresa que los bots que intentan registrar más variables sean más intensos en términos computacionales. Los ingenieros de nuestro equipo, RiotAaronMike y RiotWooTang, hicieron un gran trabajo optimizando el código para que podamos lanzar la actualización sin afectar 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 en que escanean el entorno y su 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 de entre 50% y 100%, dependiendo de qué tan amenazados estén. No podemos decir que estos ajustes los hayan hecho lo que se dice “lentos”, pero no son tan rápidos como lo eran antes, 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 consideramos 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 en el Cooperativo contra IA, para beneficio de las primeras partidas de los jugadores. ¡Pronto habrá más información acerca de este nuevo proyecto!

RoamingNumeral


5 years ago

Etiquetado con: 
Dev Blog

Contenido Relacionado