Es/Nav Mesh Editing

Una malla de navegación representa un espacio por donde se puede caminar, correr, saltar o nadar. Esta información es necesaria por los y rehenes en , , y todas las entidades en , y , permitiéndoles conocer cómo desplazarse en el entorno.
== Generación automática de la malla de navegación ==
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.
=== Visualizar la malla de navegación ===
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. 
:
== Editando la malla de navegación ==
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.
=== Editor de navegación ===
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 , para obtener un archivo CFG, hecho previamente con los comandos y teclas ya asignados.
Lee el artículo 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: , .
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 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 ==
* 
* 
* 
* 
* 
== 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)
Category:Spanish