Editando la malla de navegación
You can help by updating the translation.
Also, please make sure the article tries to comply with the alternate languages guide.Una malla de navegación representa un espacio por donde se puede caminar, correr, saltar o nadar. Esta información es necesaria por los bots y rehenes en Counter-Strike: Source , Counter-Strike: Global Offensive , y todas las entidades NextBot en Left 4 Dead , Left 4 Dead 2 y Team Fortress 2 , permitiéndoles conocer cómo desplazarse en el entorno.
Para dar soporte a los mapas creados por la comunidad, CS:S y CS:GO incluyen un sistema que genera la malla de navegación. La primera vez que ejecutes un mapa personalizado con 'bots' el sistema de generación construirá un fichero .nav
para el mapa. Dependiendo del tamaño y la complejidad de éste, puede tardar desde minutos a horas. La mayoría de mapas necesitan unos cinco minutos para generar automáticamente un fichero .nav. Una vez terminada la generación, el fichero .nav se guardará en tu disco duro para que el mapa soporte bots.
Para juegos que no tengan soporte de generación automática de la malla, se puede generar una utilizando la consola del juego, para cargar el mapa desde la consola, utilizar el comando sv_cheats 1
, seguido de la instrucción nav_generate
. Después puedes subir este archivo .nav al servidor del juego.
Se recomienda a los desarrolladores que creen las mallas de navegación antes de subir el mapa a Internet.
¿Qué se calcula durante la generación?
Estos son los pasos que ocurren durante la generación de una malla de navegación:
- Empezando en el punto de generación del jugador, el espacio "caminable" fluye hacia adelante desde el punto, buscando puntos adyacentes transitables.
- Se construyen las áreas de navegación rectangulares de la información extraída
- Los escondites y posiciones de francotirador se calculan
- Los puntos de encuentro y acercamientos se calculan (toma un buen rato)
- Áreas de encuentro iniciales se calculan
Empezar manualmente el proceso de generación
Para comenzar el proceso de generación manualmente, debes abrir la consola y escribir la instrucción nav_generate
una vez estés en el mapa cargado.
Para ver la malla de navegación y entrar en el editor, escribe nav_edit 1
. Para desactivar el editor de malla, escribe nav_edit 0
. Debes de tener previamente los trucos activados para activar el modo de edición de malla. (Comando sv_cheats 1
).
Marcar manualmente áreas transitables
Algunos mapas tienen escaleras con peldaños muy altos, rampas o colinas que confunden al generador, el resultado es que la malla de navegación no cubre todo. Para solucionarlo tienes que posicionar manualmente 'marcadores transitables', que indican al generador que busque alrededor de ese marcador en la fase de cálculo de navegación.
Para añadir uno o varios marcadores transitables, apunta con la mirilla hacia el lugar transitable y escribe en la consola "nav_mark_walkable
". Una vez hayas puesto los marcadores, escribe después en la consola nav_generate
, para regenerar la malla.
Si te has equivocado al poner un marcador, debes eliminarlos todos de golpe, con el comando nav_clear_walkable_marks
.
Generar rápidamente mallas para hacer pruebas
La fase de análisis del terreno, por parte del generador, toma mucho tiempo. Para saltarte el proceso puedes ejecutar el comando nav_quicksave 1
.
- Nota:Haciendo esto te saltas el proceso de análisis, y la malla de navegación que generes no tendrá información importante necesaria para los sistemas de planificación y atención de los bots y rehenes de Counter Strike. Puede ser útil para probar, editar y ajustar una malla, pero asegúrate de hacer siempre el análisis completo. Utiliza los dos comandos
nav_analyze
ynav_quicksave 0
, antes de publicar en la red tu fichero .nav a otros usuarios.
El generador de naveación hace un buen trabajo a la hora de construir una malla, permitiéndote usar bots y rehenes en mapas personalizados.
Sin embargo, retocar a mano la malla de navegación puede mejorar el rendimiento de los bots. Además, manualmente decorar la malla con nombres, permite a los bots decir dónde suceden eventos, mejora el radar de Counter-Strike y incluye los nombres de localizaciones en cualquier mensaje de radio.
Para activar el editor, introduce el comando nav_edit 1
en la consola. Para desactivarlo cambia el '1' por el '0'.
- La cruz blanca en el centro de tu punto de vista es el cursor.
- El área de navegación al que apuntas es el área seleccionada y se muestra con un borde amarillo.
- Las áreas de navegación próximas al área seleccionada se marcan en rojo.
- La línea recta blanca en el área seleccionada denota dónde el área se puede dividir si el comando
nav_split
es ejecutado.
Tipos de áreas
Utilizando los comandos de edición
Aunque todos los comandos de edición de la malla se pueden escribir en la consola, es más práctico asignar los comandos a las teclas de teclado. Por ejemplo, el comando bind del nav_delete
, hace que al apretar la tecla SUPRIMIR ("Delete" o "Supr"), se ejecute el comando nav_delete
.
Después de enlazar el comando a la tecla, si aprietas la tecla Suprimir se eliminará el área de navegación al que estés apuntando, siempre y cuando estés en el modo edición.
Puedes temporalmente asignar comandos a diferentes teclas utilizando un fichero CFG. Es útil para editar la navegación sin utilizar los comandos, además de que no querrás tener asignados siempre esos comandos a las teclas. Échale un vistazo al artículo Editing Bot Navigation CFG File , para obtener un archivo CFG, hecho previamente con los comandos y teclas ya asignados.
Lee el artículo Comandos de consola para el editor de navegación para leer una lista de todos los comandos relacionados con la navegación de los bots.
Comandos básicos de edición de mallas
Guardar
No existe comando para "deshacer", en el editor de navegación de mallas, así que es muy importante guardar tu trabajo a menudo a través del comando nav_save
.
Dividir/partir
Para partir un área en dos áreas adyacentes conectadas entre sí, apunta con tu cursor al área y ejecuta el comando nav_split
.
Unir/combinar
Para unir dos áreas adyacentes:
- Apunta con tu cursor al primer área y ejecuta el comando
nav_mark
. - Apunta con tu cursor al esgundo área y ejecuta el comando
nav_merge
.
El área resultante conservará las conexiones con las otras áreas y heredarán las propiedades/atributos.
Empalmar
Empalmar te permite crear un nuevo área entre dos áreas existentes. Es una herramienta potente que puede utilizarse para crear áreas inclinadas como en el ejemplo a continuación.
Para empalmar una nueva área entre dos que ya existan:
- Apunta con tu cursor a la primera área y ejecuta
nav_mark
. - Apunta con tu cursor al segundo área y ejecuta
nav_splice
.
Eliminar
Para eliminar un área solo debes apuntar hacia ella y ejecutar nav_delete
.
Crear una nueva área
Para crear manualmente una nueva área:
- Coloca tu cursor desde la esquina donde el área debería empezar.
- Ejecuta el comando
nav_begin_area
. - Mueve tu cursor y arrástralo hasta donde quieras que termine el área.
- Ejecuta el comando
nav_end_area
.
Añadir y eliminar conexiones entre áreas
Las conexiones entre áreas definen si un agente se puede mover de un área a otra. Normalmente estas conexiones son bidireccionales, esto significa que un agente se puede mover entre una y otra a su voluntad. Sin embargo a veces como diseñador, puedes querer que no se pueda volver a un área, como en el caso de que cornisas o bordes muy altos desde los que se pueda saltar, pero no poder volver a subir.
Para crear una conexión unidireccional de área A, al área B:
- Coloca tu cursor sobre el área A.
- Marca el área A con el comando
nav_mark
. - Apunta al área B.
- Ejecuta el comando
nav_connect
.
Para crear una conexión bidireccional, repite el mismo proceso pero invirtiendo el orden.
Para eliminar todas las conexiones del área A y B:
- Apunta al área A y márcala con
nav_mark
. - Apunta al área B y ejecuta
nav_disconnect
.
Poner un nombre a un área
Una vez hayas generado un área de navegación, puedes ponerles nombres para etiquetar una región de un mapa. Por ejemplo, si hay un casa relevante en un mapa, todas las áreas en la casa se pueden etiquetar con el nombre 'Casa'.
Los nombres son utilizados por el sistema de comunicación de los bots de Counter Strike para indicar dónde están, o por el radar para mostrar la ubicación del jugador, o para indicar la posición del jugador al escribir un mensaje de texto en el chat, por ejemplo:
Fulanito @ Desagües (RADIO): ¡Afirmativo!
Para añadir o cambiar el nombre de un lugar, necesitas activar el editor de nombres. Si no lo has hecho ya, entra en el modo de edición de malla con el comando nav_edit 1
y después escribe nav_toggle_place_mode
. Cuando el editor de nombres se active (asumiendo que no hay áreas con nombres ya), todos los cuadrados de navegación se volverán rojos.
Para seleccionar qué nombre quieres asignar a un área, escribe nav_use_place "nombre"
, por ejemplo nav_use_place "Cocina"
. Después apunta con tu cursor al área que quieres etiquetar con ese nombre, y activa el modo pintado de nombres ejecutando nav_toggle_place_painting
. Mientras esté este comando activo, cada área que mires será etiquetada con el nombre que hayas escrito antes y se pondrá verde.
Puedes cambiar el nombre del área que estás pintando escribiendo nav_use_place "nombre"
. Ten en cuenta que después de ejecutar este comando, todas las áreas pintadas con un nombre diferente se volverán azules y las áreas pintadas con el nombre que acabas de cambiar se volverán verdes. Cuando termines de poner los nombres a las áreas, puedes desactivar el pintado con el comando nav_toggle_place_painting
.
Para ver la lista de nombres disponibles ejecuta nav_place_list
. O si estás en CSS o CS:GO, puedes encontrar una lista de nombres disponibles en los siguientes artículos: Lista de nombres estándar para CSS , Lista de nombres estándar para CS:GO .
Existen algunos comandos adicionales que ofrecen herramientas para escoger, drenar, reemplazar, etc. Para ver la lista completa, lee el artículo Comandos de nombres de áreas
Problemas comunes de mallas y sus soluciones
Áreas extrañas en escaleras y rampas
La generación automática tiende a construir áreas que cuelgan de los lados de escaleras y rampas. Deberían ser eliminadas para forzar a los bots a subir las escaleras o rampas de manera recta y ordenada.
Barandillas
Las barandillas pueden ser un problema para el sistema de navegación de bots, esto incluye a las uniones entre áreas que necesitan saltarse, por encima de las barandillas y que se deben evitar a menos que sea necesario. Los bots intentarán saltar, pero no podrán hacerlo correctamente.
Prevenir que los bots salten excesivamente
Marca un área donde salten a menudo de forma innecesaria, con el comando nav_mark
y utiliza el comando nav_no_jump
para marcar el área para que no salten tanto.
Puertas giratorias
Corta el área para dejar un espacio vacío en la malla para permitir paso a las puertas que giren. Puede ser que tengas que rehacer el área de navegación si eliminas parte de un área que no funciona.
Los bots a veces tratarán de atravesar una puerta "brush" de un área a otra, y quedarse atascados. Puedes solucionarlo eliminando al área adyacente o configurando las áreas y conexiones para que los bots caminen cerca de la puerta abierta.
Técnicas de edición avanzada
Añadir mallas adicionales
Crea un punto de generación utilizando nav_mark_walkable
en un área sin mallas y utiliza el comando nav_generate_incremental
para generar un área desde ese punto. Utiliza el comando nav_generate_incremental_range NÚMERO
para indicar el rango de ese punto de generación.
Escaleras
Las escaleras se pueden construir frente a superficies escalables. Tu cursor se volverá verde cuando apuntes a una superficie escalable.
Usando nav_build_ladder
La manera más sencilla de construir una escaleras es simplemente apuntando a una superficie escalable y ejecutando el comando nav_build_ladder
.
Utilizando nav_begin_area
y nav_end_area
Si nav_build_ladder
no te sirve, puedes crear la escalera a mano:
- Sitúa tu cursor en donde comienza la esquina de la escalera.
- Ejecuta el comando
nav_begin_area
- Arrastra el cursor hasta cubrir toda la escalera.
- Termina con
nav_end_area
.
Te puede servir para que los bots empiecene subiendo las escaleras y salten a mitad, para ir a la caja.
Escaleras inversas
Algunas escaleras se pueden crear al revés por error. Si una escalera está dibujada en rojo, quiere decir que la estás viendo por la parte trasera de ella. La escalera en verde es por donde se sube. Para cambiar la orientación de la escalera puedes darle la vuelta con el comando nav_ladder_flip
.
Evasión de obstáculo y movimientos de precisión
Utiliza los comandos nav_precise
, nav_walk
, y nav_stop
para desactivar comportamientos de evasión de obstáculos y control de movimiento del bot.
Marcar áreas a evitar
Utiliza nav_avoid
para advertir a los bots de que eviten el área a no ser que la ruta normal sea peligrosa.
Controlar dónde se pueden esconder
Utiliza el comando nav_dont_hide
para evitar que los bots se escondan en un área concreta.
Esto se puede utilizar para forzar la creación de escondites durante la fase de análisis.
Asignando puestos de francotirador
Marca un área usando el comando nav_walk
y después nav_make_sniper_spots
. Esto romperá el área en distintas subáreas que serán utilizadas internamente por la malla de navegación del juego para animar a los bots a usarlas como lugares de francotirador.
Alineando saltos complicados y marcos de puertas
Organiza las áreas de navegación para forzar caminos específicos.
- Si los bots se quedan pillados por los lados de la puerta o ventana, puedes ahuecar un camino estrecho en medio de él.
- La altura máxima que un bot tratará de salta es 58 unidades Source. Si el tope a saltar es de 59 o más arriba, los bots se rendirán tan pronto como terminen de saltar. Si esto pasa en un sitio donde deberían saltar, utiliza el comando
nav_corner_lower
para rebajar la altura del área alta.
Échale un vistazo
- Navigation Mesh Console Command Reference
- Mallas de navegación (L4D y L4D2)
- L4D Level Design/Nav Meshes
- L4D Level Design/Nav Flow
- L4D Level Design/Advanced Nav Editing
Enlaces externos
- Foros oficiales para el sistema de bots (ya no existe el enlace) - Versión archivada.
- Waypointing para los bots y rehenes de CS:S (Edit Life)