DrawPaths - mutator which draw network paths in game

Search, find and discuss about Mutators!
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

Add support any camera view include preview bots, guided redeemers and so on.
scr_1620309477.png
scr_1620309687.png
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

Buggie wrote: Thu May 06, 2021 8:15 am Red label on path - mean BAD. More 800uu. Nobody able use this path at all. 800uu hardcoded in engine.
I'm afraid that I have to disappoint you here. Plain Editor does paths up to 1000 UU and THESE ARE OPERATIONAL. I also have "CTF paths" having 1100+ up to 1600 UU which are operational (in RAMPS/HILLS) - I detonated these ramp kiddie stories. You can forget some of Polge's fake news - he don't even know 100% what he did - I'm very serious here. Now feel free to start AS-Frigate and go in water. See paths there, also CTF-November. To bad that you don't get these as it should...
Pawn won't join into network if this is too far, but once entered it is capable to navigate really long ranges. There are also a few issues if Pawn is facing a problem, it returns in previous node and retrying, same obstruction make it to quit again and to return - it will never move ahead because of this entry limited at 800, but paths can be easily at 1500-1600 and pawn enter network in the closer spot - NORMAL MAPS and not mixed craps.
You have to see these - and not only you...
CTF-FragIsland_R2021.7z
(1.96 MiB) Downloaded 17 times
It's from last year but I cleaned some data for reducing file-size... Eh, in XC_Engine this works much better than in plain UT...
Last edited by sektor2111 on Thu May 06, 2021 7:14 pm, edited 1 time in total.
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

native(521) final function bool pointReachable(vector aPoint);
native(520) final function bool actorReachable(actor anActor);

First call always return false if 2D distance > 800.0.
(2D distance is size of vector without Z coordinate).
Second call always return false if 2D distance > 800.0 and anActor.isA('Pawn') == false.

So if Anywhere Bot try actorReachable(nextPathNode) when stay on previous PathNode then he get false.
I assume Polge 700 units count from think "800 is max so need some gap for edge cases".

--- EDIT ---

Of course, because exists little thing "and anActor.isA('Pawn') == false." Bot can chase you even if network point away from each on any distance.
But Bot not able pickup Inventory on such Network.

Anyway it is only my assumptions, because I not make any tests (yet).
Last edited by Buggie on Thu May 06, 2021 7:16 pm, edited 2 times in total.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

THAT IS ENTRY not Navigation, please look at map posted and then post stories. Pawn located between 2 nodes at 1000 units has 500 from A and 500 from B. It sorts ONE and navigation starts, it is having routecache mapped and that internal chain is linked at C++ level, so you can quit telling stories, ask Higor for more...
Inventories probably placed at more than 200 Paths (reachSpecs ahead) are not in account... unless pawn goes closer and closer for other items...
Then... Big maps ? Oh, really ? Do they even blink ? I'm not sure about that.

In other hand I left Bots away in some day and I did test on my butt. I was in game seeking Enemy Flag, believe me or not I got RouteCache points for moving... even if network has long range paths. That's not a problem.

Where are problems ? AT Paths a la XCGE25 + 469b having 2000 UU length. If pawn is bugged in the middle (1000 + 1000), if this pawn is far from A and B and if by chance routecache points are gone, good bye paths network. Is this a Bad thing ? No, it's not in 2021. Why ? Because that moron sektor2111 has NoLost actor in these maps - a bit rewritten I have to admit...
Last edited by sektor2111 on Thu May 06, 2021 7:25 pm, edited 1 time in total.
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

My info based on this:
https://github.com/TheBearProject/Unrea ... .cpp#L1590

Code: Select all

	if ( !Other->IsA(APawn::StaticClass) )
	{
		if ( !GIsEditor ) //only look past 800 for pawns
		{
			if (distsq > 640000.0) //non-pawns must be within 800.0
				return 0;
			if (Other->Region.Zone->bPainZone) //FIXME - unless bNoPain
				return 0;
		}
	}
https://github.com/TheBearProject/Unrea ... .cpp#L1657

Code: Select all

	if (!GIsEditor)
	{
		FVector Dir2D = aPoint - Location;
		Dir2D.Z = 0.0;
		if (Dir2D.SizeSquared() > 640000.0) //points must be within 800.0
			return 0;
	}
--- EDIT ---
640000 also present in UnRoute.cpp:
https://github.com/TheBearProject/Unrea ... e.cpp#L139

Code: Select all

int FSortedPathList::checkAnchorPath(APawn *Searcher, FVector Dest) 
{
	guard(FSortedPathList::checkAnchorPath);

	ULevel *MyLevel = Searcher->GetLevel();
	FVector RealLocation = Searcher->Location;
	FCheckResult Hit(1.0);
	if ( (Dest - Path[0]->Location).SizeSquared() < 640000.f ) 
	{	
		MyLevel->SingleLineCheck(Hit, Searcher, Dest, Path[0]->Location, TRACE_VisBlocking); 
		if( (Hit.Time == 1.0) && MyLevel->FarMoveActor(Searcher, Path[0]->Location, 1) )
		{
			if ( Searcher->pointReachable(Dest) ) //NOTE- reachable needs to do its own trace here always - to guarantee no error
				return 1;
			MyLevel->FarMoveActor(Searcher, RealLocation, 1, 1);
		}
	}
	numPoints = 1;
	return 0;
	unguard;
}
https://github.com/TheBearProject/Unrea ... te.cpp#L77

Code: Select all

void FSortedPathList::FindVisiblePaths(APawn *Searcher, FVector Dest, FSortedPathList *DestPoints, INT bClearPaths,
							 INT &startanchor, INT &endanchor)
{
[...]
	while (Nav)
	{
		if (bClearPaths)
			Searcher->clearPath(Nav);
		if ( !startanchor )
		{
			dist = (int)(Searcher->Location - Nav->Location).SizeSquared();
			if ( dist < 640000 )
				addPath(Nav, dist);
		}
		if ( !endanchor )
		{
			dist = (int)(Dest - Nav->Location).SizeSquared();
			if ( dist < 640000 )
				DestPoints->addPath(Nav, dist);
		}
		Nav = Nav->nextNavigationPoint;
	}
Last edited by Buggie on Thu May 06, 2021 7:27 pm, edited 1 time in total.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

Download map posted and see what's going on... then we talk. if C++ cannot do more than 800 maybe sektor has an UScript going to 3500 LOL :lol2:
Once again, what you have there is entrance, seeking entry into Paths-Net. If pawn is already there, it's all about reachSpecs and ('Roaming' 'Moving')
Warning, previous maps has paths lockers, Bot might return at a moment going another way due to logic timings switching paths.
Last edited by sektor2111 on Thu May 06, 2021 7:31 pm, edited 1 time in total.
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

No many sense look something for 500 KB map with hundred of path nodes (272 exactly).
Better setup really test cube map and see able bot goes between near 5 PathNodes for Inventory or not.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

Did you see map or not ? Is Bot working or Not ? These are questions which I asked.

Edit: And let me completely ruin all fantasies: First is pathing log

Code: Select all

DistancesListing: ====== Paths lenght report reachSpecs based ======
RangeInterval:  	- Length 50-200 UU    = 50 Paths;
RangeInterval:  	- Length 200-400 UU   = 38 Paths;
RangeInterval:  	- Length 400-600 UU   = 21 Paths;
RangeInterval:  	- Length 600-800 UU   = 37 Paths;
RangeInterval:  	- Length 800-1000 UU  = 33 Paths;
RangeInterval:  	- Length 1000-1250 UU = 60 Paths;
RangeInterval:  	- Length 1250-1500 UU = 37 Paths;
RangeInterval:  	- Length 1500-1750 UU = 30 Paths;
RangeInterval:  	- Length 1750-2000 UU = 11 Paths;
RangeInterval:  	- Length > 2000 UU    = 0 Paths.
Then let me pack the map.
...
CTF-[R3P]-TOXIC-REDUX-[SLV]_rS735.7z
(5.73 MiB) Downloaded 15 times
IsItCarrryingFlagOrNot.png
You can stick with improving Paths Showing mutator and let me deal with paths, seriously...
And... let me introduce a "new" friend - concerning 469b:
- Buggie, this is a paths builder in 2021
PBuilderXC25b.PNG
PBuilderXC25b.PNG (6.47 KiB) Viewed 484 times
- Path Builder, this is Buggie - the man talking about finding a path-network entrance, and not about navigation algorithms when network is entered.
Have fun together... and be nice each-other.

Okay, now let me draw 3... mainly cubes like with 3 - 4 paths having 1400 UU or such, One health Vial and ONE PlayerStart. You will tell me if Bot spectated will move to vial or not. You don't dare to bet that Bot won't move to the Vial.
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

Bots work. on CTF-FragIsland_R2021.7z

Need make tests numbers for current engine, because source by links above can be outdated. Unreal v200 is really old.
--- EDIT ---
sektor2111 wrote: Thu May 06, 2021 7:32 pm Okay, now let me draw 3... mainly cubes like with 3 - 4 paths having 1400 UU or such, One health Vial and ONE PlayerStart. You will tell me if Bot spectated will move to vial or not. You don't dare to bet that Bot won't move to the Vial.
99% for Bot stuck in one place even if able enter to network and navigate over it.
Just because Bot search inventory in limited range. Near 600 if I remember correctly.
So Bot just not know about Vial and not make it MoveTarget.

CTF different story.
Game force MoveTarget to Flag regardless to distance.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

DM-LargeTrueStories.7z
(2.95 KiB) Downloaded 15 times
And after that ? See what ONE bot does here (as spectator)... Using ShieldBelt - but I can modify it with a Vial or whatever, this was more handy...

Note: Editor 436 won't create paths longer than 1000 UU, even if they are working - so to speak, Epic need a tutorial about their own assets...

Next chapter: We can talk about air navigation... That's the challenge, but I've done something basic - a personal idea using real air paths... either way subject it's not related to this mutator...

After air discussion we can switch to talk about navigation without paths, lol... There you'll see the truth about UT Pawn movement/moving story. Movement can be Activated using not only C++ natives but UScript too...
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

I am live in BuggedWorld. There no such things as XC*whatever*. Only plain old UT.

Test show paths can be any length. at least which build as short, but after that PathNode dragged in another place.
In reachspec stored distance between points. IDK make this some influence to navigate in network or not.

If bot enter to net, then he can travel to this dragged pathnodes. Even if they located really war away. More then 64 500 uu.

And yes, paths with distance more 1000 uu can not be created when UnrealEd build paths. So any extended paths built outside plain UT will be destroyed when you try rebuilt paths.

--- EDIT ---

And tests with enter to net shows 800 uu distance to closest pathnode. 799 - find net. 802 - not find.

In any case Inventory need be more close for bot start worried about it. If item placed in close radius but reachable over net, bot can reach it.
But if you place inventory too far, bot not find because search by radius.

Also about enter to net: I belive this things work in both ways - goal must be too close to net not more 800 uu.
So if you want bot follow you, bot must be not more 800 uu far and you too.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

Shht... 227 doesn't have XCGE, but has more native power... There you can do what you want and... it works in UT.

Safety notes:
Stick at Max 1600 UU length. Pawn blocked in the middle won't resume navigation too soon. Pawn blocked closer to initial point resumes navigation from there and facing the blocker again = Loop. It's why the best practice could be at 1200 - 1400 if map it's... bigger. If map is really obstructed - small - I never recommend 1000 UU length for paths, here are generated just too many links which are not needed.

If you need to cover loooong distances, an UScripted tracker can move pawn in network from 2000 UU range without a single issue.
I'll try my best design skill for a normal DM map but having these bad-ass routes, I'll show you that DM will work doesn't matter engine restrictions at 800. Guaranteed I can send Bot into network from 1500-2000 UU distance. These devs are not scaring me, they are easy to manage. Scripting these are having inspiration source in Bot itself.

Part two: Real Long paths in Plain Original UT.
It's called LE-LC(PP)-LE, MyLink, stuff like FV_LinkedPoint, and these can be used in plain fields using <Paths Define> command. Do they work ? Of course they work. Go check them... R_Special it's cute too after all...

Part three:
Finding a flag carrier (pawn) or flag - Already Done in NsCTF3. Carrier can move far away from nodes or sitting unreachable, also flag flying away lost in the wild.
What are we doing here ? Using Engine ? Answer: Never ! Find the closest node to the goal and point Bot there - even if this closest node is at 1100 UU away. If has reached there, switch to flag immediately or RangedAttack at carrier, just like that. You see... I have X reasons for using MY CTF not BotPack's CTF after all my experiments.

Not the last part: I would like to know more about handling 3D space - In Editor - for making a DevPath other way than iterating with RadiusActors. I demanded 610 range and builder linked even nodes at 618 to not talk how were wrapped all these in radius... and I had to sort them - not all of them but essential ones, closer and... a hell of work...
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

I just have some suspicions so I open fresh UnrealEd, load your map CTF-FragIsland_R2021.7z, save MyLevel.u and open in text editor and find bunch of hacks:

Code: Select all

// NoLost.
//=============================================================================
class NoLost expands Actor;

var() float Interval;
var() int RangeRun;
var bool bGoodSet, bReady;

event PostBeginPlay()
{
	if ( Interval > 1.00 )
		bGoodSet=True;
	bHidden=True;
}

function CheckLost()
{
	local Bot aBotyMan;
	local NavigationPoint N, N1;
	local int BestPointDist;

	BestPointDist = RangeRun;
	foreach AllActors (class 'Bot', aBotyMan)
	{
		if ( Mover(aBotyMan.Base) == None && aBotyMan.MoveTarget != None && !aBotyMan.bHidden && aBotyMan.Health > 0
			&& VSize(aBotyMan.velocity) < 80
			&& !FastTrace(aBotyMan.Location,aBotyMan.MoveTarget.Location+vect(0,0,-15)) )
		{
			aBotyMan.BigJump(aBotyMan.MoveTarget);
			aBotyMan.MoveTarget = None;
			aBotyMan.GoToState('Wandering');
		}
		if ( Mover(aBotyMan.Base) != None && VSize(Mover(aBotyMan.Base).velocity) > 0
		&& !aBotyMan.bHidden && aBotyMan.Health > 0)
		{
			aBotyMan.CampTime = 3.000000;
			aBotyMan.GoToState('Roaming','Camp');
		}
		if ( !aBotyMan.bHidden && aBotyMan.Health > 0
		&& aBotyMan.Enemy == None && aBotyMan.Orders != 'Follow'
		&& aBotyMan.MoveTarget == None && aBotyMan.IsInstate('Wandering') )
		{
			if (aBotyMan.Region.Zone.bWaterZone && aBotyMan.Physics != PHYS_Swimming )
				aBotyMan.SetPhysics(PHYS_Swimming);
			
			if ( !NearbyNode(aBotyMan) )
			{
				foreach RadiusActors ( class 'NavigationPoint', N, RangeRun , ABotyMan.Location)
				{
					if (VSize(N.Location-aBotyMan.Location) <= BestPointDist && FastTrace(N.Location,aBotyMan.Location) && N.Paths[0] > -1)
					{
						N1 = N;
						BestPointDist = Vsize(N.Location - aBotyMan.Location);
					}
				}
				if ( N1 != None && aBotyMan.FastTrace(N1.Location,aBotyMan.Location))
				{
					aBotyMan.Target = N1;
					aBotyMan.MoveTarget = N1;
					aBotyMan.bCamping = False;
					aBotyMan.PlayRunning();
					aBotyMan.GotoState('Roaming','SpecialNavig');
				}
			}
		}
	}
}
Pffff. :pfff:
I think we talk about Paths, not about some dirty hacks embedded into map.

Nice try.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: DrawPaths - mutator which draw network paths in game

Post by sektor2111 »

You did not read then what I said before - too bad then...
That one is not navigating is pointing Bot at your 800 limited entry... from a more far distance. And what's the problem with that ?
Buggie wrote: Thu May 06, 2021 11:06 pm not about some dirty hacks embedded into map.

Nice try.
Are you even a bit serious ? ALL IS HACKED here - PATHS ARE USER MADE, can you see paths how long they are - Yeah PATHS, rebuild Paths and see what you get - NoLost actor won't help any more, yeah, do that and see that I'm not talking stories - I told before about that 800 entry how can be bypassed from UScript. This is what I was talking about before.
All I tried is pointing that long paths Are Usable in Navigation and not just a stupid circus, and yes, Engine is executing that thing too not XC and not any Alien.
See other map without that actor - it works too :omfg: .
Nah, I can close discussion because it doesn't make any sense. While story tellers are talking about small paths in ramps, I'll demonstrate in every single edited map that automated paths at 900 UU are working perfectly in ramps done by Editor because we talk about connections and C++ navigation logic not about Godz and Myths. And your RED Text is not exactly a reality - it's your opinion. A map having only 900 UU paths is perfectly functional, all time Pawn can go into network because has points around it. Should I demonstrate once again what I'm saying ? Perhaps not because I demonstrated already what I'm saying. You made those red things saying that nobody can use a path over 800 UU. I demonstrated that entering the network is one thing and navigating is another thing and paths can have 910 1000 1000+ length with ZERO bugs. My Mission is completed now you can make them pink blue green brown, do what you want, my edits and my paths are working exactly as they are, yes, more or less helped by UScript executed by the same Engine.
And if you want something more entertaining, look in forum for map MH-SkaarjTower_Bot or something like that, pathed by Higor... have fun with those paths...
Buggie
Godlike
Posts: 2742
Joined: Sat Mar 21, 2020 5:32 am

Re: DrawPaths - mutator which draw network paths in game

Post by Buggie »

Yep. Red color there not make any sense. Path can be any of length.
And this mutator only show exists paths, so if somehow you get this 100 500 uu path then it fine.
In next version i remove coloring based on 2D distance.

I have another idea - coverage view.
Something like 800 uu radius near each Navigation point. maybe some light, for show locations from which network not reachable.
--- EDIT ---
Something like that:
scr_1620343578.png
--- EDIT ---
Example for coverage feature:
scr_1620344449.png
Area not lit with red placed too far from any NavigationPoint, so from where Bot/Monsters can not reach Navigation Network in most cases.
Post Reply