Map's Navigation Network - extra-options

Development assistance and tutorials here.
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

ExtraCost discussion from previous image might be a subject for trolling... or not ;) . If exist people which will have doubts about what I'm saying in these explanations then it's time for evidences. I've constructed a demo map which has a goal Testing/Learning and nothing else. What kind of test ? Spectating ONE Bot more exactly.
Map has 4 items and they have connections through two routes, one of them being the shortest one. This shortest path is locked/unlocked from time to time. Node in cause is visible not hidden. By growing ExtraCost to 100000000, path is blocked like with BlockedPath and texture is changed - self explanatory texture. By shrinking Extracost to 0, path is used, and once again texture is changed for figuring when path is unblocked, what the Bot does and how it's navigating. Document inside shows a bit of explanations at once with images from map which can be directly checked in game and/or modified later in Editor. Node is reacting using Event-Tag Triggering system and it's based on a StochasticTrigger from UT's stock.
DM-PtToggler_Sample.zip
DEMO MAP - For figuring ExtraCost effects. Operation: Spectating one Bot.
(2.27 MiB) Downloaded 488 times
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

In previous map case if one of Pathnodes is a Teleporter and routes are passing through there, Bot will get kidnapped by teleporter hijacking his route. We must disconnect an evil teleporter if this one has only one-way and it's not a destination as well. Similar problem is with swJumpPad. Don't get me wrong, teleporters do not have many issues, pathing strategy might mess up here - Editor more exactly. Due to said situation - rare indeed no doubts MapGarbage edition February 2020 will have some features:
- disconnecting paths coming from a one-way teleporter - previous un-released code was not what I wanted;
- mapping jump-sound for a selected kicker (or more selected kickers). Here builder will politely generate a SpecialEvent and an Event for it and adding Tag accordingly.
- like previous version we have that turning a decoration into a blocker but this time decoration won't need to be a "bStatic=True" actor, just selected;
- small code changes at fixing duplicated actors - depending on how much is screwed up, map might be cleaned in the same session, repeating clean-up task if an actor has more than 2 copies and result is not good from first hit. When map doesn't have longer duplicated actors a "good state" tagged message is printed in log. I recommend working with MapGarbage with Log Window open for figuring all action.
I tested removal of duplicated actors in two known maps including a recent one, a "conversion" from DM called CTF-Morbias][ and cleaning was successful. Map had 3 pieces called Light12 actors and 2 pieces called Light13 actors.
- rewrapped pathing related things more closer to the top of options;
- added a characters logger - that's more a developing feature when we want to compile a code with invalid characters but we can use the code "CHR(x)" where x is needed character number in range 0 - 255. This is located at bottom in builder's menu.
Here is Updated
MapGarbage_02_2020
MapGarbage_02_20.7z
(204.8 KiB) Downloaded 517 times
If you want to modify builder and UCC compiler won't be your friend, let me know, I'll setup modifications for you.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

All right, good people.
If things for a newer UT are not seem to move, at least the main Fool from House of Fools will move ahead.

Chapter:
Garbage located in a map unseen by common Editor but still there.

Do those really exist ? Definitely YES, some of these are contributing at Bot Loops, I think even loading internal Pawn's paths list when it's used a PathsToggler and also increment processing cycles for these devs. So... for those more advanced tempted to unload all trash crap outta their maps I might list - as first stage - before releasing next MapGarbage tool, some of these bytes which are not really seen but they exist.

Going to NavigationPoint classes - common assets, actor variables - usually loaded with data and game works properly without them - out of XC_Engine. Tested in plain UT.
- visitedWeight - restored to zero has no impact - allow run-time engine to do something here if it has to;
- nextOrdered - I don't see where is the problem at removing this f@rt;
- previousPath - I could see Bots looping if two of these have similar values - unseen by plain Editor - no critical damage is taken at removing these;
- prevOrdered - my logic it's like in similar cases as before - what if map has only a PlayerStart ? Definitely the most of these are EMPTY and nothing explodes in Engine;
- VisNoReachPaths[0 to 15] - USELESS - unless we want to remap these in run-time as aerial paths... there can be another solution more comfortable;

Describing now other data referencing some reachSpecs UNSEEN and NOT SHOWN in Editor:
- PrunedPaths[0 to 15] - properly completed and some time we don't really want a guess, we allow our pawns to perform a shortcut if they want that by themselves, and computing movement capabilities in Run-Time not in Editor.

In a simple map, by only removing these bytes map goes smaller and I think those looping bugs are... destroyed because we do not have other sort of variables to compute in DevPath, as result it goes to less memory usage.

For chapter Teleporters - when Bot "stakeout" thrown in teleporter and forgetting physics - perhaps due to a poorly coded UT teleporter - we can map a smaller kicker (without kick sound !) making Bot to re-gain physics falling and to be capable of working with DevPath - no physics = no navigation. Here I believe that Teleporter it's supporting some velocity settings and then we have a native deal...

Hang on, MapGarbage it's under a bit of love...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

Yesterday I became aware of what I noticed some time ago. If I look at maps for Unreal made with previous versions of the Editor, these later added and unfinished variables did not exist at that time.
However, even if we have variables added and that are more confusing than helping us, we can do a map edit using two or more editing applications. The controversial incompatible with UT, the so-called U227 can help us in common, simple matters, without completing anything that has extra. Some variables will be ignored if we reopen the map in the UT editor and get rid of the bits added later, UT doesn't use them and doesn't help us at all after we have the final version.
However, why can we use the functions of U227 as well? We have variables that declare new navigation paths, forcibly added, where the Editor does not want to create them, but creatures can follow that direction. Once the paths are connected, we no longer need those specific editing statements and we can get rid of them by filtering the map through UT Editor.
Any variables that are extra and mess up DevPath more than it helps can be removed manually - using modified files for editing - or we will have facilities in MapGarbage that will remove unnecessarily stored data. I have somehow changed the structure of this tool for the Editor and as such I think I will rewrite the explanations about the functions it has in a more detailed way.
Let's see, for example, what the UT Editor says after loading an edited map with U227 but which has no new, foreign classes for UT. UT knows the PathNode class but not knowing the variable involved will ignore this new variable that the new U227 Editor sees.

Code: Select all

Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
Warning: Property ForcedPaths of Class Engine.PathNode not found
Warning: Skipping 2 bytes of type 6
DevAudio: Galaxy SetViewport: U2Viewport0
Log: Collecting garbage
Log: Purging garbage
Log: 0.0ms Unloading: Package Render
Log: Garbage: objects: 42521->42447; refs: 594569
After saving the map - with another name to keep the original - UT removes what it doesn't have. In a next session, UT will load the map it saved without those new variables added. So we make it useful for us a more advanced Editor who lets us control things a bit instead of making crazy predictions that we don't want.
UT also has an extra point because it does not crash when it encounters these foreign bits, as the Render does in case of textures.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

MapGarbage might have too many options, not everyone understands what is doable with that thing but...
We do have implemented at UScript Level some of those Editor whatever commands which I did not see working anywhere... They might not be a must have but I recommend basic checks, and...
Let's say that we can quickly check a map if PlayerStarts are valid and OK for use. Even EPIC did such rammed things... CTF-Coret is evidence which Engine is fixing during run-time so patching a map in run-time is developed by factory itself not by community, they initiated the idea of adjusting their own mapping goofs.
Command Level Validate goes to a bool called bLevelValidate.
- Technically it does a check for an empty Level - is anti-retard check, not sure if has a logic but I dropped it there and I worked a little bit for "porting" it at UScript level in another format because UScript cannot access everything like C++;
- it does a check for PlayerStarts and if are usable - here I did simple tests that confirm borked maps;
- it does a check for title - lol - X MB of maps are Untitled and they do work fine thanks used for years;
- it was doing a check for Actors which I did not do because that is spam-log - I have another feature in MapGarbage reporting everything.
Command Level Links goes to a bool called bLevelLinks:
- it does a report and check for Teleporters which are connected to another server or another so called local teleporter.
Command Level Fix goes under a bool bLevelFix:
- it was checking some SoundRadius values of actors and I think if it would be used multiple times it would do damage instead of helping so I clarified it a bit.
Personal note:
Here I think was the stage when EPIC went drunk and implementation failed so I went ahead to get drunk and putting them back, lol clowns :tease: . And then ? And then Level Validate checking PlayerStarts would be a must-have, we do have A LOT of sh!t maps at this point, they should automatically assign a button with a more complex reporting for PlayerStarts: if active, teamnumber, zone, usable ect... because these are important for not messing up game-play. A Map have no use without PlayerStarts, you geniuses.
Update Package
MapGarbage_04_2020
MapGarbage_April_2020.7z
(212.37 KiB) Downloaded 483 times
The Moron Trivia:
These logs and assets have no use if user it's ignoring every single log which game shows up. MapGarbage does logs, reports which are not for those looking at walls instead of take care what they do, and then such reporting commands are not helping these "content creators" in any way.

Miscellaneous bytes:
I'm using some buttons in what I do from time to time in Editor. All buttons need... Icons accordingly and INI Settings, Editor creates them automatically. All these are declared in UnrealEd.ini file:

Code: Select all

[UserDefinedGroup]
NumButtons=28
Button0=Align Camera on Selected Actor,UDAlignCam, CAMERA ALIGN
Button1=Resets the selected Brush (Location+Pivot+Rotation+Scale),UDResetBrush, ACTOR RESET ALL
Button2=Deletes the selected Brushes/Actors,UDDelete, DELETE
Button3=Duplicate the selected Brushes/Actors,UDDuplicate, DUPLICATE
Button4=Selects all surfaces on the current Brushes,UDSelBrushSurf, POLY SELECT MATCHING BRUSH
Button5=Apply the current texture to all selected surfaces,UDApplyTexture, POLY SETTEXTURE
Button6=Poly Select - Adjacent walls,UDSelAdjWalls, POLY SELECT ADJACENT WALLS
Button7=Poly Select - Adjacent slants,UDSelAdjSlants, POLY SELECT ADJACENT SLANTS
Button8=Selects all actors within the builder brush,UDSelWithinB, ACTOR SELECT INSIDE
Button9=Copy builder brush to selected poly,UDPolyToBrush, MAP BRUSH GET
Button10=Show Pathnodes,UDShowPaths, PATHS SHOW
Button11=Hide Pathnodes,UDHidePaths, PATHS HIDE
Button12=Select All Movers,SelectMover, actor select ofclass class=Mover
Button13=Add Semisolid Brush,AddSemiSolid, brush add flags=32
Button14=Resetting Pivot,BrushResPivot, actor reset pivot
Button15=Shows FPS Statistics,StatFPS, stat fps
Button16=Remove Unused Textures,TexCull, texture cull
Button17=Align This Actor,ActorAligner, actor align
Button18=Actor Properties,UActorProperty, hook actorproperties
Button19=Remove PathNodes,UPathsRemove, PATHS REMOVE
Button20=UnDefine Paths,UPathsUndefine, PATHS UNDEFINE
Button21=Define Paths,UPathsDefine, PATHS DEFINE
Button22=Delete Red Builder Brush,UTempRemove, brush set
Button23=Load XC_Engine,AddXCEngine, obj load file="XC_Engine.u"
Button24=Load Monster Hunt,MHEnd, obj load file="MonsterHunt.u"
Button25=Purge Garbage,UGarbPurge, OBJ GARBAGE
Button26=Show InventorySpots,UShowInv, SHOWINV
Button27=Select Nothing,ActSelectNone, SELECT NONE
You won't see any button without BMP files required in editorres folder from System. You don't have to overwrite your Icons but newer ones can be completed.
editorres.7z
Bmp files for required for Buttons faces.
(59.43 KiB) Downloaded 450 times
That's all for the moment...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

Hmm... Next version will be completed with an ActorFind/Select feature because this is needed when actors have to be copied/removed temporary during working stage. Actor replacement will take more parameters in account and creating static decorations as well. Update from May will have these addressed.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

Options from UGold227 made me to setup a builder for using those features, of course MapGarbage is helpful as well.
When something is missing from a map with regard to navigation, linker from UGold can solve problem without a rebuild - if a map is tricky and can go rammed at rebuild. And then ? And then all new points added must be registered in NavigationPointlist, task doable with MapGarbage.
In both of them I added quick reporting for simple tasks - it's faster than opening LOG all time, but log do helps for details.
ManualLinking.PNG
ManualLinking.PNG (1.04 MiB) Viewed 13695 times
BuildingList.PNG
BuildingList.PNG (1.11 MiB) Viewed 13695 times
You can imagine that we can connect here points where Editor won't connect them, example: default LiftCenter won't connect with other stuff than a LiftExit, but here if we know what we do these connections are doable as we want and we are dictating connection parameters.
The strong rule is: If we add new nodes connected later, UnLinking Path-Net and Re-Linking it back it's a must not optional.

The next point: I'm thinking to add a checker for preventing to create multiple reachSpecs for the same two connected nodes - there is no need for a double connection - some older XC assets were doing this in some rebuild stage in a random map - I don't need to recall name but I recall what happened...
And here it is preventing to add another reachspec for the same two connected nodes...
WrappedABit.PNG
WrappedABit.PNG (1.09 MiB) Viewed 13690 times
I'll look for other missing things which can be added...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

Eventually I figured out what to do when I need to remove a network navigation specification. It is desirable that it no longer has any reference to anything on the map to avoid some inappropriate reactions from the Editor. The remaining specifications are renumbered and arranged accordingly. The best stability is NOT obtained here because playing with objects is not the best thing. However, all the paths we don't need can be removed based on the index given by MapGarbage. That's about the power of an advanced editor. Yes ... the specifications seem to be duplicated at the end of the array after some elements have been removed, but... after restarting the Editor, all that garbage is actually removed.
And then if more or less accidentally the Editor or even the user created unwanted navigation specifications later, they can be removed without making major changes to the network, they can also change with the parameters we want.
What that comment says in U227 is true, a rearrangement needs to be made because the indexes change with Idx Value -1 and all the remaining specifications need to be corrected, a problem that I seem to have managed to solve.

Code: Select all

WARNING: If you remove for example, reachspec #25, all remaining reachspecs after will go -1; #26 becomes #25, #27 becomes #26 etc. It could break
down entire map navigation for AI! */
native(1714) final function bool RemoveReachSpec( int Idx );
And here I did this after each removal...

Code: Select all

function RebuildNavigationSpecs()
{
	local NavigationPoint N;
	local int i;

	foreach MyMap.AllActors(class'NavigationPoint',N)
	{
		for (i = 0; i < 16; i++)
		{
			if ( N.Paths[i] > NSpec )
				N.Paths[i] = N.Paths[i]-1;
			if ( N.upStreamPaths[i] > NSpec )
				N.UpstreamPaths[i] = N.UpstreamPaths[i]-1;
		}
	}
}
Where NSpec is reachSpec number break point causer and then all Next ones are renumbered -1. A recent modified map has been tested and it doesn't show any issue...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

I got a bit busy with something older... Double trouble in stage:
Editor - importing a t3d brush will work properly... If you want to rotate this imported brush 180 degrees and setting up a semisolid, result pasted in Notepad it's not like t3d model :tease: not even in UGold227 from 64.000000 it goes to 63.999798 or something like that. I'm not surprised about some BSPcuts happening later and causing some visual glitches, invisible barriers, non-collision surfaces, invisible surfaces, ect. More brushes = More troubles.
Mapper - probably ignorance as main factor.
He said:
Known bugs : Occasionally the bots get a bit confused.
Mr. Garbage Lord says:

Code: Select all

Found 455 duplicated Actors.
...
CTFReport: --- Reporting AlternatePaths setup: ---
CTFReport: For Team 0 = 0 pieces.
CTFReport: For Team 1 = 0 pieces.
...
MaxNumFound: I found 15237 reachspecs, from 0 to 15236.
WarnDist: 18 reachSpecs have nodes claimed too close.
I do not intend to debate that much DefencePoints from Blue base turned at walls like Bot defender was examining textures or some big Nothing sitting on wall. I'm not surprised about Bots getting a bit confused... poor Engine...
A good looking thing left in a messed up stage - dated 2009.
The only entertaining thing for me was a custom pathing test and improving MapGarbage and PathLinker codes - about map...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1738
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network - extra-options

Post by Nelsona »

Bump: Month = May
MapGarbage is compatible with Unreal Gold 227h and can be used with other powerful pathing tool for Unreal Editor.
For creating paths it's needed rebuilding NavigationPointlist - this is an array containing all PathNodes and other stuff connected in a chain. MapGarbage is helping here...
Okay, we have:
- Actor Finding and Selecting features based on A class name, eg: SpawnPoint - and/or some Tag, eg: "PupaeSpwn" - Useful to count lousy things in MH maps and not only there.
- a basic reach Placement tester - some PathNodes are doing sucks being placed too high, making ground walker Bot to loop. Here is a basic check if exist a ground obstruction between PathNode and some low point in Level. If there is no obstruction in range, Node might be in higher location probably trouble maker - PathNode112 from map CTF-Command is such a sample.

We do have small adjustments at morphing decorations into static things out of animation troubles - code includes Prepivot data for stupid carcasses or such things having that. Also we have various immediate messages if we are using a single operation.
MAPGARBAGE MAY 2020
MapGarbage_05_2020.7z
(216.6 KiB) Downloaded 408 times
I'm open at questions with regard to content used and or HowTo modify this tool - because you can do your own as you want.
The other tool working combined with this one and used in Unreal and helping UT mapping too is here:
viewtopic.php?f=34&t=453#p2966

Current state: Acquiring data for other simple needs preventing a waste of time for manual checks in maps.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Post Reply