Difference between revisions of "Navigation Meshes:es"

From Valve Developer Community
Jump to: navigation, search
m (Traducción parcial)
(Editing the navigation mesh)
Line 42: Line 42:
 
:{{note:es|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 <code>nav_analyze</code> y <code>nav_quicksave 0</code>, antes de publicar en la red tu fichero .nav a otros usuarios.}}
 
:{{note:es|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 <code>nav_analyze</code> y <code>nav_quicksave 0</code>, antes de publicar en la red tu fichero .nav a otros usuarios.}}
  
= Editing the navigation mesh =
+
= Editando la malla de navegación =
[[Image:nav_edit.jpg|thumb|300px|right|Enabling the Navigation Mesh editor in de_dust]]The automated Navigation Mesh generator does a reasonable job of constructing a mesh, allowing you to start using Bots and Hostages on custom maps easily.
+
[[Image:nav_edit.jpg|thumb|300px|right|Activando el editor de Malla de Navegación en de_dust]]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.
  
However, careful hand-tuning of the Navigation Mesh can noticeably improve the performance of Bots. In addition, manually decorating the mesh with ''Place Names'' allows the Bots to tell others where events occur, enhances the Counter-Strike radar and includes Place Names in all radio messages.
+
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.
  
== The navigation mesh editor ==
+
== Editor de navegación ==
To enable the editor, type <code>nav_edit 1</code> in the console (type <code>nav_edit 0</code> to disable it).
+
Para activar el editor, introduce el comando <code>nav_edit 1</code> en la consola. Para desactivarlo cambia el '1' por el '0'.
  
* The white cross in the center of your view is the ''cursor''.
+
* La cruz blanca en el centro de tu punto de vista es el ''cursor''.
* The Navigation Area you are pointing at is the ''selected area'' and is shown with a yellow outline.
+
* El área de navegación al que apuntas es el ''área seleccionada'' y se muestra con un borde amarillo.
* Navigation Areas that can be reached from the selected area are shown in red.
+
* Las áreas de navegación próximas al área seleccionada se marcan en rojo.
* The white line in the selected area denotes where the area will be split if the <code>nav_split</code> command is executed.
+
* La línea recta blanca en el área seleccionada denota dónde el área se puede dividir si el comando <code>nav_split</code> es ejecutado.
  
=== Area types ===
+
=== Tipos de áreas ===
[[Image:nav_jump.jpg|300px|thumb|left|'''Jump areas''' (marked with green X's) tell bots that they must jump to reach the higher connected area, and that this area is not usable as a hiding/sniping spot.]]
+
[[Image:nav_jump.jpg|300px|thumb|left|'''Áreas de salto''' (marcadas con equis verde) indica a los bots que '''deben''' saltar para alcanzar el área superior conectada, y que ese área no se puede utilizar para esconderse o punto de francotirador.]]
[[Image:nav_crouch.jpg|300px|thumb|left|'''Crouch areas''' (marked with a blue diagonal slash) force bots to crouch when moving through this area.]]{{clr}}
+
[[Image:nav_crouch.jpg|300px|thumb|left|'''Áreas de agacharse''' (marcadas con una barra diagonal azul) obliga a los bots a agacharse para desplazarse por el área.]]{{clr}}
  
== Using mesh editing commands ==
+
== Utilizando los comandos de edición ==
Although all of the mesh editing commands can be typed in the console, in practice it is far easier to ''bind'' these commands to keys. For example, <code>bind del nav_delete</code> binds the delete key to the command nav_delete.  After this binding, pressing the delete key will delete the nav area under your cursor (if you are nav editing mode).  
+
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 <code>bind del nav_delete</code>, hace que al apretar la tecla SUPRIMIR ("Delete" o "Supr"), se ejecute el comando <code>nav_delete</code>.
  
You can temporarily bind many commands at once by using a CFG file.  This is useful for bot navigation editing, because there are many commands, and you will probably not want them to be permanently attached to your keys. See [[Editing Bot Navigation CFG File]] for a pre-made file and instructions on its use.
+
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.
  
See [[Counter-Strike: Source Navigation Mesh Console Command Reference|Navigation Mesh Console Command Reference]] for a list of all commands related to bot navigation.
 
  
== Basic mesh editing commands ==
+
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.
=== Save ===
 
Currently, there is no "undo" command in the Navigation Mesh editing system.  Therefore, it is very important to '''save your work often''' via the <code>nav_save</code> command.
 
  
=== Split ===
+
Lee el artículo [[Counter-Strike: Source Navigation Mesh Console Command Reference|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.
To split an area into two adjacent, inter-connected areas, aim your cursor at an area and execute the <code>nav_split</code> command.
 
  
[[Image:nav_edit.jpg|300px|thumb|left|Before split]]
+
== Comandos básicos de edición de mallas ==
[[Image:nav_split.jpg|300px|thumb|left|After split]]{{clr}}
+
=== 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 <code>nav_save</code>.
  
=== Merge ===
+
=== Dividir/partir ===
To merge two adjacent areas:
+
Para partir un área en dos áreas adyacentes conectadas entre sí, apunta con tu cursor al área y ejecuta el comando <code>nav_split</code>.
# Aim your cursor at the first area and execute <code>nav_mark</code>
 
# Aim your cursor at the second area and execute <code>nav_merge</code>
 
  
Note that both areas must be the same size along the edge to be merged.
+
[[Image:nav_edit.jpg|300px|thumb|left|Antes de partir]]
 +
[[Image:nav_split.jpg|300px|thumb|left|Después de partir]]{{clr}}
  
[[Image:nav_mark.jpg|300px|thumb|left|Marked first area]]
+
=== Unir/combinar ===
[[Image:nav_pre_merge.jpg|300px|thumb|left|Aim at second area]]
+
Para unir dos áreas adyacentes:
[[Image:nav_post_merge.jpg|300px|thumb|left|Merged]]{{clr}}
+
# Apunta con tu cursor al primer área y ejecuta el comando <code>nav_mark</code>.
 +
# Apunta con tu cursor al esgundo área y ejecuta el comando <code>nav_merge</code>.
  
The resulting area will retain all of the connections of the original two areas, and inherit properties (i.e: Place Names, etc) from the marked area.
+
{{tip|Ten en cuenta que las dos áreas tienen que tener la misma longitud.
  
=== Splice ===
+
[[Image:nav_mark.jpg|300px|thumb|left|Seleccionada la primera área]]
Splicing creates a new area between two existing areas. Splicing is a powerful tool, and can be used to easily create sloped areas, as shown in the example below.
+
[[Image:nav_pre_merge.jpg|300px|thumb|left|Apuntando la segunda área]]
 +
[[Image:nav_post_merge.jpg|300px|thumb|left|Unidas ambas áreas]]{{clr}}
  
To splice a new area in between two existing areas:
+
El área resultante conservará las conexiones con las otras áreas y heredarán las propiedades/atributos.
# Aim your cursor at the first area and execute <code>nav_mark</code>
 
# Aim your cursor at the second area and execute <code>nav_splice</code>
 
  
[[Image:nav_prep_splice.jpg|300px|thumb|left|Marked first area]]
+
=== Empalmar ===
[[Image:nav_pre_splice.jpg|300px|thumb|left|Aim at second area]]
+
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.
[[Image:nav_post_splice.jpg|300px|thumb|left|New area spliced between]]{{clr}}
 
  
=== Delete ===
+
Para empalmar una nueva área entre dos que ya existan:
To delete an area, aim your cursor at it and execute <code>nav_delete</code>
+
# Apunta con tu cursor a la primera área y ejecuta <code>nav_mark</code>.
 +
# Apunta con tu cursor al segundo área y ejecuta <code>nav_splice</code>.
  
=== Creating a new area ===
 
To manually create a new area:
 
# Place your cursor at where a corner of the new area should be
 
# Execute <code>nav_begin_area</code>
 
# Move your cursor to drag out the area's extent
 
# Execute <code>nav_end_area</code>
 
  
[[Image:nav_begin_area.jpg|300px|thumb|left|Start dragging area at first corner]]
+
[[Image:nav_prep_splice.jpg|300px|thumb|left|Seleccionada la primera área]]
[[Image:nav_drag_area.jpg|300px|thumb|left|Drag area extent]]
+
[[Image:nav_pre_splice.jpg|300px|thumb|left|Apuntando la segunda área]]
[[Image:nav_end_area.jpg|300px|thumb|left|Area created]]{{clr}}
+
[[Image:nav_post_splice.jpg|300px|thumb|left|Nueva área creada]]{{clr}}
 +
 
 +
=== Eliminar ===
 +
Para eliminar un área solo debes apuntar hacia ella y ejecutar <code>nav_delete</code>.
 +
 
 +
=== 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 <code>nav_begin_area</code>.
 +
# Mueve tu cursor y arrástralo hasta donde quieras que termine el área.
 +
# Ejecuta el comando <code>nav_end_area</code>.
 +
 
 +
[[Image:nav_begin_area.jpg|300px|thumb|left|Empieza arrastrando el área desde la primera esquina]]
 +
[[Image:nav_drag_area.jpg|300px|thumb|left|Estira el área hasta el tamaño adecuado]]
 +
[[Image:nav_end_area.jpg|300px|thumb|left|Área creada]]{{clr}}
 +
 
 +
=== 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 '''<span style="color: rgb(0, 51, 153);">conexión unidireccional</span>''' de área A, al área B:
 +
 
 +
# Coloca tu cursor sobre el área A.
 +
# Marca el área A con el comando <code>nav_mark</code>.
 +
# Apunta al área B.
 +
# Ejecuta el comando <code>nav_connect</code>.
 +
 
 +
 
 +
Para crear una  '''<span style="color: rgb(51, 204, 204);">conexión bidireccional</span>''', 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 <code>nav_mark</code>.
 +
# Apunta al área B y ejecuta <code>nav_disconnect</code>.
  
=== Adding and removing connections between areas ===
 
The connections between areas define whether an agent can move from one area to another. Usually these connections are ''bidirectional'', meaning agents can move back and forth between two areas at will.  However, sometimes the connection is ''one way'', as in the case of high ledges that can be jumped down, but not back up.
 
  
To make a '''<span style="color: rgb(0, 51, 153);">one-way connection</span>''' from area A to area B (meaning you can move from A to B):
+
[[Image:nav_jump_down.jpg|300px|thumb|left|'''Las conexiones unidireccionales''' (marcadas con líneas azules oscuras) son normalmente utilizadas para enlazar caminos desde los que se salta hasta el suelo. Esto le dice a los bots que pueden saltar pero no pueden saltar hacia atrás. También puede ser útil para forzar a los bots a dirigirse a un lugar en concreto, como por ejemplo realizar un salto complicado.]]
# Place your cursor on area A
+
[[Image:nav_connections.jpg|300px|thumb|left|'''Las conexiones bidireccionales''' (marcadas con azul clarito en los bordes del área) permiten a los bots moverse libremente entre dos áreas.]]{{clr}}
# Mark area A with <code>nav_mark</code>
 
# Aim your cursor at area B
 
# Execute <code>nav_connect</code>
 
  
To make a '''<span style="color: rgb(51, 204, 204);">bidirectional connection</span>''', repeat the above steps reversing the roles of A and B.
+
== 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'.
  
To remove all connections from areas A and B:
+
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:
# Aim at area A
+
:<code>Fulanito @ '''Desagües''' (RADIO): ¡Afirmativo!</code>
# Mark area A with <code>nav_mark</code>
 
# Aim at area B
 
# Execute <code>nav_disconnect</code>
 
  
[[Image:nav_jump_down.jpg|300px|thumb|left|'''One-way connections''' (marked with dark blue lines) are usually used for "jump-down" links from a high ledge to the ground.  This tells the bots that they can jump down, but they can't jump back up. One-way links can also be useful for forcing bots to travel a specific direction, perhaps to set up for a tricky jump.]]
+
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 <code>nav_edit 1</code> y después escribe <code>nav_toggle_place_mode</code>. 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.
[[Image:nav_connections.jpg|300px|thumb|left|'''Bidirectional (two-way) connections''' (marked with light blue lines at the area edges) allow bots to freely move between the two areas.]]{{clr}}
 
  
== Adding place names ==
+
Para seleccionar qué nombre quieres asignar a un área, escribe <code>nav_use_place "nombre"</code>, por ejemplo <code>nav_use_place "Cocina"</code>. Después apunta con tu cursor al área que quieres etiquetar con ese nombre, y activa el '''modo pintado de nombres''' ejecutando <code>nav_toggle_place_painting</code>. Mientras esté este comando activo, cada área que mires será etiquetada con el nombre que hayas escrito antes y se pondrá verde.
Once you've generated a nav mesh, ''Place Names'' can be assigned to nav areas to label that region of the map. For instance, if there is a prominent house in the map, all of the nav areas in the house can be tagged with the "House" Place Name.
 
  
Place Names are used by the CS Bot chatter system to announce where they are, by the radar to show the current location of the player, and they are appended to the player's name when that player uses text chat or radio commands. For example:
+
Puedes cambiar el nombre del área que estás pintando escribiendo <code>nav_use_place "nombre"</code>. 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 <code>nav_toggle_place_painting</code>.
:<code>ChicagoTed @ '''Apartment''' (RADIO): Fire in the hole!</code>
 
  
To add or change the name of a location, you need to turn on the place name editor.  If you haven't already done so, you'll want to first make sure <code>nav_edit</code> is set to "1", then type <code>nav_toggle_place_mode</code>.  When the place name editor is enabled (assuming no areas have been named) all the nav squares should turn red.
+
Para ver la lista de nombres disponibles ejecuta <code>nav_place_list</code>. O si estás en CSS o CS:GO, puedes encontrar una lista de nombres disponibles en los siguientes artículos: [[Standard Place Names for CSS|Lista de nombres estándar para CSS]], [[Standard Place Names for CS:GO|Lista de nombres estándar para CS:GO]] .
  
To select which ''Place Name'' you want to assign to an area, type <code>nav_use_place (name)</code>, for example <code>nav_use_place Bedroom</code>.  Next, aim your cursor at an area you want to label with that ''Place Name'' and turn on "Place Painting Mode"  by executing <code>nav_toggle_place_painting</code>.  While "place painting" is active, each area you point at will be tagged with the current ''Place Name'' you selected and will turn green in color.  You can change the place name you are painting with by typing <code>nav_use_place (newname)</code>, notice that after changing the place name, all areas already painted with a different name will turn blue and areas painted with the name you just changed to will turn green.  When you are finished using "Place Painting Mode", you can exit by executing <code>nav_toggle_place_painting</code> again.
 
  
For a list of all available Place Names, execute <code>nav_place_list</code>.  Or, if you are working on a CSS, or CS:GO map, you can find a list of available names in the following articles: [[Standard Place Names for CSS]], [[Standard Place Names for CS:GO]] .
+
Existen algunos comandos adicionales que ofrecen herramientas para escoger, drenar, reemplazar, etc. Para ver la lista completa, lee el artículo [[Navigation_Mesh_Commands#Place_name_commands|Comandos de nombres de áreas]]
  
There are several additional commands that provide tools for picking, flood-filling, replacing, and so on. For a complete reference, see [[Navigation_Mesh_Commands#Place_name_commands|Place Name Commands]].
+
== 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.
  
== Common mesh problems and solutions ==
+
=== Barandillas ===
=== Extraneous areas on stairs and ramps ===
+
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.
The automatic generation system tends to build areas that hang off the side of stairs and ramps. These should be removed to force the bots to take the stairs or ramp straight-on.
 
  
=== Railings ===
+
=== Prevenir que los bots salten excesivamente ===
Railings can be a problem for the current bot navigation system, this includes jump-down links that must pass over railings, they should be avoided unless necessary.  The bots will eventually make these jumps, but they are not terribly elegant while doing so.
+
Marca un área donde salten a menudo de forma innecesaria, con el comando <code>nav_mark</code> y utiliza el comando <code>nav_no_jump</code> para marcar el área para que no salten tanto.
  
=== Preventing excessive jumping ===
+
=== Puertas giratorias ===
Mark an area with <code>nav_mark</code> and use the <code>nav_no_jump</code> command to flag the area to discourage jumping.
 
  
=== Dealing with rotating doors ===
+
[[Image:nav_doors.jpg|thumb|100px|right|Ejemplo de una configuración de navegación para puertas]]
[[Image:nav_doors.jpg|thumb|100px|right|Example of a nav configuration for doors]]
+
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.
Clip off the nav area to leave an empty space in the nav mesh to allow for the rotating door. You may have to remake the nav square if deleting part of an existing one doesn't work.
 
  
Bots will sometimes try to walk through the opened door brush from one nav area to another and get stuck. Either removing the adjacent nav area or configuring the areas and connections so the bots have to walk around the opened door should prevent this.
+
Los bots a veces tratarán de atravesar [[Func_door_rotating|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.
  
== Advanced editing techniques ==
+
== Técnicas de edición avanzada ==
=== Adding additional meshes ===
+
=== Añadir mallas adicionales ===
Create a point of generation using nav_mark_walkable in an area without meshes and use the command nav_generate_incremental to generate a new area from that point. Use nav_generate_incremental_range to specify the range of the point generation.
+
Crea un punto de generación utilizando <code>nav_mark_walkable</code> en un área sin mallas y utiliza el comando <code>nav_generate_incremental</code> para generar un área desde ese punto. Utiliza el comando <code>nav_generate_incremental_range NÚMERO</code> para indicar el rango de ese punto de generación.
  
=== Ladders ===
+
=== Escaleras ===
Ladders can be manually built against climbable surfaces. Your editing cursor will turn green when pointing at a climbable surface.
+
Las escaleras se pueden construir frente a superficies escalables. Tu cursor se volverá verde cuando apuntes a una superficie escalable.
  
'''Using <code>nav_build_ladder</code>'''
+
'''Usando <code>nav_build_ladder</code>'''
  
 
The easy way to build a ladder is to simply point at a climbable surface, and execute <code>nav_build_ladder</code>.
 
The easy way to build a ladder is to simply point at a climbable surface, and execute <code>nav_build_ladder</code>.
Line 192: Line 201:
 
[[Image:nav_end_ladder.jpg|300px|thumb|left|Ladder created]]{{clr}}
 
[[Image:nav_end_ladder.jpg|300px|thumb|left|Ladder created]]{{clr}}
  
=== Reversing ladders ===
+
=== Escaleras inversas ===
 
Sometimes a ladder will be created facing the wrong way.  If a ladder is drawn in red, you are looking at it from the back.  The ladder is drawn in green if it is facing you.  To change the orientation of a ladder, simply point at the ladder and use <code>nav_ladder_flip</code>.
 
Sometimes a ladder will be created facing the wrong way.  If a ladder is drawn in red, you are looking at it from the back.  The ladder is drawn in green if it is facing you.  To change the orientation of a ladder, simply point at the ladder and use <code>nav_ladder_flip</code>.
  
Line 198: Line 207:
 
[[Image:nav_ladder_forward.jpg|300px|thumb|left|Ladder facing away from the wall (correct)]]{{clr}}
 
[[Image:nav_ladder_forward.jpg|300px|thumb|left|Ladder facing away from the wall (correct)]]{{clr}}
  
=== Obstacle avoidance and precision movement ===
+
=== Evasión de obstáculo y movimientos de precisión ===
 
Using <code>nav_precise</code>, <code>nav_walk</code>, and <code>nav_stop</code> to disable local obstacle avoidance behaviors and control bot movement.
 
Using <code>nav_precise</code>, <code>nav_walk</code>, and <code>nav_stop</code> to disable local obstacle avoidance behaviors and control bot movement.
  
=== Marking areas to avoid ===
+
=== Marcar áreas a evitar ===
 
Using <code>nav_avoid</code> to tell bots to avoid the area unless the normal route has become too dangerous.
 
Using <code>nav_avoid</code> to tell bots to avoid the area unless the normal route has become too dangerous.
  
=== Controlling where bots Can hide ===
+
=== Controlar dónde se pueden esconder ===
 
Using <code>nav_dont_hide</code> to prevent bots from hiding in that area.
 
Using <code>nav_dont_hide</code> to prevent bots from hiding in that area.
 
This can be used to force the creation of hiding spots during the analysis phase.
 
This can be used to force the creation of hiding spots during the analysis phase.
  
=== Setting up sniper spots ===
+
=== Asignando puestos de francotirador ===
 
Mark an area using <code>nav_walk</code> and execute <code>nav_make_sniper_spots</code>. This will break the area into small sub-areas which are used internally by the navigation mesh to encourage sniping.
 
Mark an area using <code>nav_walk</code> and execute <code>nav_make_sniper_spots</code>. This will break the area into small sub-areas which are used internally by the navigation mesh to encourage sniping.
  

Revision as of 20:54, 29 August 2019

English 日本語

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.

La malla de navegación se almacena en un fichero NAV que corresponde a un archivo de mapa (.bsp) para el cual será utilizado. Por ejemplo, la malla de navegación para cstrike\maps\de_dust.bsp se almacena como cstrike\maps\de_dust.nav.

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.

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 y nav_quicksave 0, antes de publicar en la red tu fichero .nav a otros usuarios.

Editando la malla de navegación

Activando el editor de Malla de Navegación en de_dust
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

Áreas de salto (marcadas con equis verde) indica a los bots que deben saltar para alcanzar el área superior conectada, y que ese área no se puede utilizar para esconderse o punto de francotirador.
Áreas de agacharse (marcadas con una barra diagonal azul) obliga a los bots a agacharse para desplazarse por el área.

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.

Antes de partir
Después de partir

Unir/combinar

Para unir dos áreas adyacentes:

  1. Apunta con tu cursor al primer área y ejecuta el comando nav_mark.
  2. Apunta con tu cursor al esgundo área y ejecuta el comando nav_merge.

{{tip|Ten en cuenta que las dos áreas tienen que tener la misma longitud.

Seleccionada la primera área
Apuntando la segunda área
Unidas ambas áreas

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:

  1. Apunta con tu cursor a la primera área y ejecuta nav_mark.
  2. Apunta con tu cursor al segundo área y ejecuta nav_splice.


Seleccionada la primera área
Apuntando la segunda área
Nueva área creada

Eliminar

Para eliminar un área solo debes apuntar hacia ella y ejecutar nav_delete.

Crear una nueva área

Para crear manualmente una nueva área:

  1. Coloca tu cursor desde la esquina donde el área debería empezar.
  2. Ejecuta el comando nav_begin_area.
  3. Mueve tu cursor y arrástralo hasta donde quieras que termine el área.
  4. Ejecuta el comando nav_end_area.
Empieza arrastrando el área desde la primera esquina
Estira el área hasta el tamaño adecuado
Área creada

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:

  1. Coloca tu cursor sobre el área A.
  2. Marca el área A con el comando nav_mark.
  3. Apunta al área B.
  4. 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:

  1. Apunta al área A y márcala con nav_mark.
  2. Apunta al área B y ejecuta nav_disconnect.


Las conexiones unidireccionales (marcadas con líneas azules oscuras) son normalmente utilizadas para enlazar caminos desde los que se salta hasta el suelo. Esto le dice a los bots que pueden saltar pero no pueden saltar hacia atrás. También puede ser útil para forzar a los bots a dirigirse a un lugar en concreto, como por ejemplo realizar un salto complicado.
Las conexiones bidireccionales (marcadas con azul clarito en los bordes del área) permiten a los bots moverse libremente entre dos áreas.

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

File:Nav doors.jpg
Ejemplo de una configuración de navegación para puertas

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

The easy way to build a ladder is to simply point at a climbable surface, and execute nav_build_ladder.

Point at a climbable surface
Ladder created

Using nav_begin_area and nav_end_area

If nav_build_ladder isn't what you need, you can manually create a ladder:

  1. Place your cursor at where a corner of the new ladder should be
  2. Execute nav_begin_area
  3. Move your cursor to drag out the ladder's extent
  4. Execute nav_end_area

This can be useful to get bots to start going up the ladder, and jump off halfway up, onto the crate:

Start dragging ladder at first corner
Drag ladder extent
Ladder created

Escaleras inversas

Sometimes a ladder will be created facing the wrong way. If a ladder is drawn in red, you are looking at it from the back. The ladder is drawn in green if it is facing you. To change the orientation of a ladder, simply point at the ladder and use nav_ladder_flip.

Ladder facing into the wall (incorrect)
Ladder facing away from the wall (correct)

Evasión de obstáculo y movimientos de precisión

Using nav_precise, nav_walk, and nav_stop to disable local obstacle avoidance behaviors and control bot movement.

Marcar áreas a evitar

Using nav_avoid to tell bots to avoid the area unless the normal route has become too dangerous.

Controlar dónde se pueden esconder

Using nav_dont_hide to prevent bots from hiding in that area. This can be used to force the creation of hiding spots during the analysis phase.

Asignando puestos de francotirador

Mark an area using nav_walk and execute nav_make_sniper_spots. This will break the area into small sub-areas which are used internally by the navigation mesh to encourage sniping.

Lining up tricky jumps and narrow doorways

Arranging nav areas to force specific paths.

  • If the bots are getting hung up on the sides of a door or window, you can carve out a narrow path through the middle of the opening.
  • The highest a bot will try to jump is 58 units. If the top of a jump is 59 or more units above the bottom, bots will give up as soon as they jump. If this happens in a spot that the bots can actually jump up to, use nav_corner_lower to lower the upper nav area slightly.
Highest possible crouchjump

Game Specific SubVersions

Game Known as Subversion Notes
<Garry's Mod> Garry's Mod TheNavMesh 0 Garry's Mod is using the base navigation mesh(It doesn't use it's own implementation unlike Valve games)
<Counter-Strike: Source> Counter-Strike: Source CSNavMesh 1
<Team Fortress 2> Team Fortress 2 CTFNavMesh 2
<Left 4 Dead> Left 4 Dead TerrorNavMesh 13
<Left 4 Dead 2> Left 4 Dead 2 TerrorNavMesh 14
<Counter-Strike: Global Offensive> Counter-Strike: Global Offensive CSNavMesh 1 (Ported from Counter Strike: Source?)

See also

External Links