jueves, 17 de enero de 2019

Tutorial - Waypoints para ZMT-Bots

Versión en ingles AQUÍ
Aquí aprenderás a crear tus propios waypoints para los mapas que más te gusten. No es un proceso sencillo y dependiendo del tamaño del mapa puede que requiera mucho tiempo y pruebas para que quede completamente bien, así que, ¡Ten paciencia!

Los ZMT-Bots utilizan el mismo motor de navegación (obviamente con algunos cambios y errores reparados por mi) que los YaPB, bots descontinuados de los que fueron creados los PodBots. Debido a esto, los ZMT-Bots utilizan el mismo sistema de waypoints. Esto no quiere decir que pueden utilizar los mismos, los ZMT-Bots tienen sus propios waypoints diferentes y debe ser creado un archivo de waypoint especifico para que ellos puedan obtener el comportamiento esperado.

Aclarado el punto anterior, puedes utilizar waypoints creados para los PodBots y editarlos con el editor de los ZMT-Bots, he logrado mantener la compatibilidad con estos waypoints, así que sólo debes editarlos, eliminar los distintos tipos de waypoints que no sean compatibles con los ZMT-Bots y comenzar a utilizar los nuevos waypoints. Todo esto será mucho más sencillo para los usuarios que ya tengan experiencia creando waypoints para los PodBots.

Atención: Existe un límite de waypoints existentes por mapa y un límite de "banderas" que puede tener un waypoint. Si estas restricciones intentan ser excedidas es muy probable que el juego deje de funcionar.

LÍMITE DE WAYPOINTS POR CADA MAPA: 1024
LÍMITE DE BANDERAS POR CADA WAYPOINT: 4



Se puede acceder al menú de edición seleccionando la opción "Edit waypoints", del menú principal de los ZMT-Bots. Estas son las distintas opciones que te ofrece el menú del editor de waypoints:

1- New waypoint
    Crea nuevos waypoints, también puedes elegir que tipo de waypoint quieres crear. Desde aquí deben ser creados también los waypoints que conforman un salto eligiendo la opción "jump".

2- Set flags
   Marca un waypoint con una "bandera" de otro tipo, transformándolo así en un waypoint distinto. Este método es igual al anterior pero sirve para cambiar un waypoint ya existente sin tener que crear uno nuevo.

3- Create paths
    Conecta 2 waypoints; se conecta el waypoint más cercano con el waypoint que se encuentra en la mira del jugador. Las paths (rutas) pueden ser de 4 tipos: entrantes, salientes, bidireccionales (de ambos lados) o saltos. 

En el caso de los saltos, deben ser creados de manera automática con la opción "jump" en "New waypoint" y así, se calcula la velocidad y dirección del salto automáticamente. Sin embargo, si quieres crear un salto pero en la posición de destino no existe suelo, la primera opción no te servirá. En ese caso (y solo en este caso), deberás utilizar la opción "jump" que esta dentro de "Create paths" para crear tu salto de manera "manual". Debes estar apuntando  y saltar hacia el waypoint de destino al momento de utilizar la opción "jump".
Ejemplo de salto manual en zm_dust2, en este caso los bots deben saltar al aire para alcanzar el lugar donde se tele-transportarán a otro lugar del mapa.

La opción "Save/Clear waypoint in memory" permite guardar un waypoint en memoria para unirlo con el waypoint que este más cercano al jugador, sólo después de elegir un tipo de path. Esto es muy útil en mapas donde los bots tendrán que teletransportarse para poder llegar a un lugar aislado, ya que la mayoría de las veces no se podrán unir los waypoint entre si por que están muy lejos o esta bloqueada por un obstáculo.
El destino del tele-transporte anterior en zm_dust2. Esta unión no fuera sido posible sin utilizar la opción "Save/Clear waypoint in memory" ya que esta demasiado lejos y se encuentra bloqueada por una pared.

4- Set radius
    Cambia el radio de alcance para el waypoint más cercano al jugador. El radio es la distancia  requerida para que los bots consideren que ese waypoint ya fue alcanzado y es representado por un circulo azul alrededor del waypoint.

5- Teleport to waypoint
    Tele-transporta el jugador al waypoint que esta apuntando.

6- Delete waypoint
    Borra el waypoint más cercano al jugador.

7- Auto-waypoint mode
    Enciende o apaga el modo automático para colocar waypoints.

8- Set Auto-Path distance
    Elige la distancia a la que se unirán automáticamente los waypoint cada vez que crees uno nuevo.

9- Noclip cheat on/off
    Permite "Volar" para llegar a lugares altos cómodamente.

10- Rebuild ZMT-PathMatrix
    Reconstruye la matriz de waypoints en caso de que modifiques o crees nuevos waypoints y esta no se actualice sola (se puede saber fácilmente si los bots se golpean contra las paredes y no navegan bien, sólo tienes que reconstruir la matriz con esta opción).

11- Delete all flags on the map unknown for ZMT-Bots
    Borra todos los waypoints que no sean compatibles con los ZMT-Bots, por ejemplo los waypoints que pertenecen a los Podbots (en caso de que estés editando un archivo que pertenecía a los Podbots).

12- Save and exit
 Guarda todos los cambios realizados en los waypoints y cierra el menú.





Cada waypoint puede ser marcado con hasta 4 banderas y cada bandera ha sido creada para controlar el comportamiento de los ZMT-Bots en distintas partes del mapa.


A continuación, se explican los distintos tipos de waypoints (o banderas):

Normal (Presencia obligatoria en el mapa):
    Su color es verde y es el aspecto que tomaran todos los waypoints cuando no tengan ninguna bandera asignada. El mapa debe estar cubierto en su mayoría por estos waypoints ya que se utilizan para la navegación normal de los ZMT-Bots.

Falling Risk:
    Su color es amarillo y evita que los bots puedan moverse lateralmente. Debe utilizarse, por ejemplo, en salientes o tejados donde existe el riesgo de que los bots se caigan por intentar una evasión con un jugador. También, puede servir para situaciones donde se requiera que muchos bots entren juntos por un sitio muy estrecho. Realmente, cualquier situación donde se requiera un camino estrictamente hacia adelante y hacia atrás.
Uso de Falling Risk  para que los bots se mantengan
encima del muro y eviten caer.

Obligatory Point:
    Su color es aguamarina y su uso esta destinado solamente para controlar las IA especiales de los Nemesis, Survivors, Snipers y Asesinos. Este waypoints no afecta el comportamiento de humanos o zombies.

    Los bots de las clases especiales mencionadas arriba tienen permitido navegar por la matriz de waypoints mientras están en el aire o están saltando, esto les permite más agilidad y lograr movimientos más naturales e inteligentes. Sin embargo, existen casos en los que es necesario que el bot "toque el suelo"; es decir, que si esta en el aire debe esperar a caer obligatoriamente en el lugar indicado para poder continuar con su navegación, para eso es este waypoint.

    Normalmente es necesario colocarlo antes de un salto importante o cerca de una caída donde los bots vienen siempre con mucha velocidad, para que el bot especial se detenga. Existen muchas situaciones donde sera necesario, sin embargo, su uso excesivo entorpecerá la navegación de los bots especiales.

    Pon especial atención a la navegación de los bots especiales cuando estés probando tus nuevos waypoints, eso te hará saber en donde es necesario colocar uno si aun no tienes experiencia. Con la practica aprenderás donde colocarlos.
Si no se utiliza un Obligatory Point en este lugar, un bot de clase especial podría pasar de largo cuando intente saltar a esta caja. De esta manera, se fuerza al bot a "tocar" la caja para que pueda realizar el segundo salto.

Ladder:
    Su color es naranja y debe ubicarse al principio y al final de cada escalera del mapa para indicar a los Bots que esa ruta es una escalera y deben cambiar su navegación.

Human Camp (Presencia obligatoria en el mapa):
    Es de color azul con cian y es el objetivo inicial de todos los bots humanos al comenzar la ronda. Indica un buen lugar para llegar, un lugar seguro o estratégico para resistir contra los infectados.
 
    También, indica la dirección más importante a la que se debe apuntar cuando un bot este utilizando este waypoint, aunque esta dirección no es obligatoria y el bot tiene la libertad de apuntar a otro lugar por períodos limitados de tiempo (esto para darle realismo). Sin embargo, estableciendo esta dirección te aseguras de que el bot estará periódicamente apuntando hacia allí.

   Siempre debes evitar colocar un Human Camp en medio de un camino, ya que un bot podría detenerse allí y estorbar el paso a otros waypoints. Intenta colocar estos waypoints al final del camino o en laterales, siempre dejando un camino abierto para otros bots con waypoints normales (verdes).
Esta es la disposición adecuada para colocar los Human Camp, 
siempre dejando un camino para el paso de otros bots

Human Reachable:
    Es de color magenta con rojo y señala un punto al que se puede llegar si hay suficientes infectados cerca como para hacer una "escalera" entre todos y ayudar a los demás a trepar.

    Si cerca de este waypoint se encuentra un humano, ese humano es detectado por los zombies; si hay suficientes zombies cerca como para alcanzarlo, automáticamente los bot zombies adyacentes comenzaran a construir una "escalera zombie", agachándose y saltando uno sobre otro hasta que el humano se aleje de este waypoint, sea infectado o asesinado. Es común marcar un waypoint Human Camp también con Human Reachable; en ese caso el Human Camp perderá su color cian para volverse magenta. La distancia hasta donde influye este waypoint es bastante amplia (250 de radio); puedes colocar un waypoint con el radio a este valor para conocer cuanta distancia representa. Esto significa que no hace falta colocar varios juntos, con colocar uno en el área bastará para causar una escalera zombie. Ten en cuenta, que debe de haber línea de visión entre este waypoint y el humano para que sea válido.
    
    Sin embargo, no siempre es posible utilizarlo, el lugar debe cumplir con una regla importante: No puede haber espacio libre debajo del punto donde se colocará este waypoint.

2 Human Camp, uno de ellos esta marcado como Human Reachable encima de una caja.

Uso de Human Reachable en 2 cajas altas. Esto permita que los zombies se ayuden unos a otros a escalar para alcanzar a los humanos. Un Human Reachable es suficiente por caja.



Lugar incorrecto para colocar un Human Reachable
Hay espacio libre debajo del puente.

Zombie Important:
    Es de color completamente rojo y se utiliza para indicar a los bots zombies que ese lugar debe ser revisado periódicamente por que es un sitio importante para los humanos (donde es muy probable que se encuentren). Aunque su uso no es obligatorio en el mapa, es muy recomendable que todos lo posean ya que ayudan a los zombies a encontrar rápidamente a los humanos.

    Los zombies (al estar sin objetivo) usan el 40% de su tiempo revisando estos waypoints y el 60% restante revisando lugares aleatoriamente. Un mapa sin este tipo de waypoint causara que los zombies se muevan aleatoriamente por todo el mapa y no como lo harían los jugadores reales, que siempre se dirigen en primera instancia, a los principales sitios de resistencia de los humanos.

Only Human/Zombie Pass:
    Es de color blanco con azul o rojo (dependiendo de para que equipo este reservado el paso). Es un waypoint que permite restringir el paso a uno de los equipos, siendo su uso muy variado.

    Puedes crear waypoints marcados con Only Zombie Pass en lugares con púas que matarían a los humanos, pero que los infectados podrían utilizar para llegar hasta ellos; para que sólo los zombies salten de lugares muy altos (caídas que matarían a un humano); para llegar rápidamente a un lugar o utilizar waypoints marcados con Only Human Pass para evitar que los zombies utilicen esa ruta por que es desventajosa para ellos.

    Debes saber que si bloqueas el acceso de un equipo a un área especifica del mapa, tiene que existir alguna otra vía de entrada para ese equipo, si no hay otra entrada (y sólo en ese caso), los bots del equipo que restringiste pueden (intencionalmente) ignorar el bloqueo para poder llegar. No puede existir ningún waypoint en el mapa que sea inaccesible para un bot, independientemente del equipo al que pertenezca.

    No debes colocar más de 2 waypoints consecutivos con esta bandera (uno es suficiente para evitar el paso), si colocas más (tres unidos con paths), puede que el juego deje de funcionar. Es un error que aún no logro reparar.
Uso de un Only Zombie Pass, para crear un salto que sólo utilicen los zombies pues, la caída mataría a un humano.

Zombie No Return:
    Es de color purpura y se utiliza para indicar a un zombie que se encuentra en un área de "espera o cola" y que debe continuar intentando moverse hacia adelante y nunca volver aunque se encuentre otro zombie adelante bloqueándole el paso. Normalmente este waypoint solo se usa en lugares donde se requiere estar agachado, por que la movilidad es muy reducida. En casos donde se puede estar de pie su uso no suele ser necesario.

    Quizás sea el waypoint más difícil de comprender para la mayoría de usuarios. De manera automática los bots zombies intentan evadir a otros infectados para llegar a un humano o devolverse si se encuentran bloqueados por otro zombie, sin embargo este comportamiento cambia si se cumplen 2 condiciones:
- El humano se encuentra en un túnel estrecho (y esta agachado).
- Se encuentra visible al final del túnel (sin paredes entre el zombie y el humano).

    Imagina una situación en donde un humano esta escondido al final de un túnel pequeño y estrecho y todos los zombies intentaran entrar formando una cola, siempre el primer zombie de la cola (el que se encuentra más cerca del humano) recibirá todos los disparos retrasándolo, lo que ocasionaría que los zombies que vienen detrás no puedan continuar avanzando.

    Si los zombies utilizarán el comportamiento básico de navegación, decidirían volver hacia atrás para evitar la congestión. Sin embargo, si las condiciones anteriores se cumplen, los zombies cambian su comportamiento: no intentaran retroceder, manteniéndose en la cola siempre y cuando el humano sea visible y siga vivo. Se mantendrán "empujando" siempre hacia adelante hasta que el humano muera.

    Todo lo que haz leído hasta ahora es completamente automático y no requiere de ningún waypoint para funcionar. Sin embargo, ¿Qué pasa si el túnel no es en línea recta?, ¿Y si el túnel tiene varias curvas antes de llegar a los humanos?. Ya los humanos no son visibles, los zombies saben que hay humanos al final de ese túnel, ¡Pero no los pueden ver!, entonces ¿Cómo podemos activar este comportamiento en este tipo de situaciones?, para eso he creado los Zombie No Return.

   Estos waypoints deben colocarse en túneles o lugares estrechos donde se quiera mantener a los zombies en una "cola zombie", esto les dice a los ZMT-Bots infectados que ese lugar especifico es normal que se encuentre congestionado y no deben retroceder; para poder entrar al refugio humano que esta al final del camino, aunque no puedan verlo. Otra manera de entenderlo es que no permite a los zombies retroceder a este waypoint si ya tienen un objetivo hacia la dirección opuesta de la camino.
En este túnel, los zombies no tienen visión directa con los humanos. 
Gracias al uso de los Zombie No Return los bots zombies harán una "cola" 
aunque el túnel este obstruido por otros zombies, para intentar entrar.




Tips importantes a la hora de hacer nuevos waypoints

Si los bots se devuelven muy seguido en algún salto, borra el waypoint y realiza el salto de nuevo.

El waypoint Falling risk no realiza la misma función que un waypoint con radio en 0. El radio 0 sólo le indica al bot que tiene que llegar exactamente al lugar del waypoint para considerarlo "alcanzado", pero no evita que el bot realice movimientos laterales y evasiones.

Un mismo waypoint no puede ser receptor de un salto y a la vez, ser el que inicio otro salto. Debes crear otro waypoint al lado para iniciar el segundo salto (Revisa los mapas básicos y observa como están colocados los waypoints en las escaleras de zm_jackass2, por ejemplo).

Si un bot infectado se ubica en un waypoint "agachado" pero además con radio 0, la navegación del zombie se vuelve más estricta y tratará siempre de mantenerse junto a los waypoint sin desviarse, aunque el humano se encuentre muy cerca. Esto es útil para espacios muy pequeños donde se necesita que los bots maniobren con mucha precisión para no quedar atascado con alguna pared.

Si un humano se encuentra en algún lugar del mapa en donde no existe ningún waypoint cercano (en un área de 250 sin waypoints aproximadamente) y ademas es detectado por los zombies, los bots infectados intentarán llegar a ese lugar de manera "directa" e incluso realizando una "escalera zombie". Gracias a esto, no tienes que colocar waypoints en lugares donde podría subirse un jugador para escapar, ya que los ZMT-Bots están preparados para intentar alcanzarlo (si hay suficientes zombies).

Siempre es recomendable colocar un waypoint en las entradas de túneles donde los bots tengan que agacharse para entrar. Esto ayuda a que se ubiquen en el lugar correcto a la hora de agacharse y entren más rápido.

Nunca dejes zonas muy amplias sin waypoints cuando sean a nivel del suelo, eso traerá problemas a los bots zombies. Todas las partes más "accesibles" del mapa deben estar cubiertas por waypoints, sobre todo el suelo.




Recuerda, si no entendiste el funcionamiento de alguno de estos waypoints, en los mapas básicos obtienes muchos ejemplos de uso de cada uno de ellos.


¿Tienes dudas o necesitas ayuda?, por favor házmelo saber por los comentarios o escribe a mi correo, estaré encantado de poder ayudarte.

Correo de contacto: luis14ccs@gmail.com

2 comentarios:

  1. Cómo hago para abri el menú para crear el wp

    ResponderEliminar
  2. el comando de consola se llama "zmtbot menu"
    puedes bindearlo escribiendo en consola con cualquier tecla con bind "?" "zmtbot menu"

    ResponderEliminar

ZMT-Bots and Zombie Plague: Apocalypse

Spanish version  HERE Before posting this post, I was always unsatisfied with the behavior of the bots that existed while p...