Talk:Nav Mesh Editing

From Valve Developer Community
Jump to navigation Jump to search

Should nav_save_selected and nav_merge_mesh be mentioned?

These two commands are handy for forcing creation of nav areas and connections that would otherwise be impossible to make normally. This is because nav_save_selected stores the information for a selected set in a file, that can be edited, and then added through nav_merge_mesh.

The two commands in theory would be particularly handy for dealing with area portals in the nav mesh. I think they should be mentiond on this page, but I am uncertain how to describe them in an understandable way. - Amicdict (talk) 14:38, 26 August 2021 (PDT)

Well, I never heard about them, but I guess you can just go ahead and try to write everything you found out so far in a new subsection, probably under the Advanced editing techniques. As soon as you have written something, there will be the chance that others investigate about that topic, too. --Popcorn (talk) 15:55, 26 August 2021 (PDT)
Yeah that works, those commwnds are typically not useful for an average navigation editing session until advanced nav editing work is required (except Left 4 Dead 2, since you have full access to nav attributes with VScript). - Orin (talk) 22:47, 26 August 2021 (PDT)
I mentioned the two commands, but not the syntax and structure of the Keyvalues file used by them; Unless if someone else wants to, I'll document them later. - Amicdict (talk) 16:50, 31 August 2021 (PDT)

Select areas by attribute? / Transient areas

Is there no nav command to select all areas with a certain attribute in Counter-Strike: Source or I am blind ??!? --Nescius (talk) 15:15, 2 May 2025 (PDT)

The former, I presume. Unless there's VScript ways by now, but I just tested it. There is a CNavMesh instance but its methods don't seem to work because they access some null instance. Unfortunate. --popcorn (talk) 20:15, 2 May 2025 (PDT)
May be overcomplicated, but you can nav_save_selected all areas to a text file and find all areas with an "Attributes" int that has the bit flag you want and edit them if desired. If it's just about adding/removing some flag from the entire mesh, you can nav_select_radius 999999; nav_(mark|clear)_attribute (NO_JUMP|STAND|JUMP);. --popcorn (talk) 20:42, 2 May 2025 (PDT)
alias nextmap 1;
alias 1 "alias nextmap 2; dostuff; map cs_assault"
alias 2 "alias nextmap 3; dostuff; map cs_compound"
alias 3 "alias nextmap 4; dostuff; map cs_havana"
alias 4 "alias nextmap 5; dostuff; map cs_italy"
alias 5 "alias nextmap 6; dostuff; map cs_militia"
alias 6 "alias nextmap 7; dostuff; map cs_office"
alias 7 "alias nextmap 8; dostuff; map de_aztec"
alias 8 "alias nextmap 9; dostuff; map de_cbble"
alias 9 "alias nextmap 10; dostuff; map de_chateau"
alias 10 "alias nextmap 11; dostuff; map de_dust"
alias 11 "alias nextmap 12; dostuff; map de_dust2"
alias 12 "alias nextmap 13; dostuff; map de_inferno"
alias 13 "alias nextmap 14; dostuff; map de_nuke"
alias 14 "alias nextmap 15; dostuff; map de_piranesi"
alias 15 "alias nextmap 16; dostuff; map de_port"
alias 16 "alias nextmap 17; dostuff; map de_prodigy"
alias 17 "alias nextmap 18; dostuff; map de_tides"
alias 18 "alias nextmap 19; dostuff; map de_train"
alias 19 "alias nextmap; dostuff;"

nav_edit 1;

alias t "nav_toggle_selected_set; wait 2"

alias c1 "t;nav_clear_attribute CROUCH"
alias c2 "t;nav_clear_attribute JUMP"
alias c3 "t;nav_clear_attribute PRECISE"
alias c4 "t;nav_clear_attribute NO_JUMP"
alias c5 "t;nav_clear_attribute STOP"
alias c6 "t;nav_clear_attribute RUN"
alias c7 "t;nav_clear_attribute WALK"
alias c8 "t;nav_clear_attribute AVOID"
//alias c9 "t;nav_clear_attribute TRANSIENT"
alias c10 "t;nav_clear_attribute DONT_HIDE"
alias c11 "t;nav_clear_attribute STAND"
alias c12 "t;nav_clear_attribute NO_HOSTAGES"
alias c13 "t;nav_clear_attribute STAIRS"
alias c14 "t;nav_clear_attribute NO_MERGE"
alias c15 "t;nav_clear_attribute OBSTACLE_TOP"
alias c16 "t;nav_clear_attribute CLIFF"

alias dostuff "clear_non_transient; t; nav_save_selected; wait 30;"

alias clear_non_transient "c1;c2;c3;c4;c5;c6;c7;c8;c9;c10;c11;c12;c13;c14;c15;c16;"
Oh I was too pissed off such a basic command is missing to even start thinking of alternatives and just abandoned all efforts lol. But knowing vscript's CNavMesh doesn't work is quite disappointing. I suppose nav_save_selected will work for what I want after I remove all undesired attributes and then save so I can ctrl+f the one I want. What I wanted to do was check if there is any official map using the TRANSIENT attribute --Nescius (talk) 00:13, 3 May 2025 (PDT)
Did some cfg script for automation and found some TRANSIENT attributes in cs_havana. Though they don't seem to do anything. At first I thought it's related to areas being blocked automatically at start of the round but it had the same behavior without transient.
--Nescius (talk) 02:59, 3 May 2025 (PDT)
Yeah, the transient areas are actually used right at those critical spots. Then apparently the transient attribute is unimplemented. For a moment I thought that func_nav_blockers or trigger_hurts do the job of blocking, but there aren't any. I'm wondering how the blocked state is toggled then.
Btw, in case you may find it interesting, I just remember that for csgo I wrote a program to convert the exported nav text file to squirrel source code such that you can find (and view) areas in-game (however not to edit them, obviously). --popcorn (talk) 11:49, 3 May 2025 (PDT)
I was hoping that was the case for transient areas but the blocking happens even if you remove transient areas. I tried spawning func_brush in that map via ent_create func_brush model *41 in the middle of random nav squares and they get blocked when the round resets too. I have too little motivation to check Counter-Strike: Global Offensive as it was pretty much replaced by Counter-Strike 2. So Counter-Strike: Global Offensive also doesn't have a command to select areas with attributes ? I find that so ridiculous. How someone programs a command like "nav_select_stairs" instead of spending 5 more minutes creating "nav_select_with_attributes" lmao --Nescius (talk) 11:58, 3 May 2025 (PDT)
(Oh, funny, you answered faster than I could correct myself due to having overlooked your previous last two sentences. Sorry.)
Yeah, I feel the pain with that missing command.
Well, the program for the squirrel code generation I mentioned isn't specific to csgo. I just wanted to mention that it may be a thing that you "just" have to rearrange the exported nav areas text file to get data you can process in squirrel and thus in-game. --popcorn (talk) 12:28, 3 May 2025 (PDT)