Page 4 of 4

Re: Enslaved for UT

Posted: Thu Sep 28, 2017 8:59 pm
by sektor2111
Dreams or not, paths around first door are not like that (too much Science for nothing special) - there is needed FIRST WayPoint for opening first doors... which need a correction of course and then the rest. Map do seems to require Blockedpath actors as well linked with the rest of doors accordingly, or it won't work by only using PathNodes. Eh, I'm not wasting too much time here, I went busy with another older task...

Re: Enslaved for UT

Posted: Thu Sep 28, 2017 11:16 pm
by Gustavo6046
You're right, maybe I shouldn't busy myself fixing something that is too large to be maintainable.

Re: Enslaved for UT

Posted: Sat Mar 05, 2022 2:24 am
by Gustavo6046
Actually I do want to see this pathed and fixed. Maybe I'll fix my version!

Re: Enslaved for UT

Posted: Sun Mar 06, 2022 8:26 am
by sektor2111
Full control over paths now days is doable, you can prevent Editor from doing its funky routes through decorations and all sort of colliding stuff.
"How To" Hints:
- destroying old Paths-Net using MapGarbage - it will clean useless data as well;
- Saving map file using a temporary name and closing everything;
- Re-Open Editor and Temporary map;
- CleanUp Level using XC_EditorAdds (whatever it does it seems that it's removing some debris data) - it's not advisable after re-wrapping actors, because it will fail;
- Examine Inventories for future placement of InventorySpot actors - MapGarbage can fix locations here in multiple ways;
- MapGarbage can deploy InventorySpots (even all kind of subclasses if needed) for selected Inventories - and these can be all selected with the same MapGarbage;
- MapGarbage can link NavigationPointList after checking/fixing actors locations (recommended);
- XC_PathsWorker can generate by using a basic "PointReachable" test, two or one ReachSpec structures between two selected navigation points and this way entire network can be linked at user's desire doing exactly what user wants dodging from heavy spots with colliding actors (colliding in run-time not in Editor - where lousy paths are always generated);
- spots which are navigable in run-time but Rejected by Tester in Editor can be also generated using User Input, in seconds ( based on template dummy ReachSpec - a mirror of a future Real ReachSpec);
Note - After adding some Paths saving current work is highly recommended...
- using XC_PathsWorker post pathing for fixing and/or defragmenting ReachSpecs (in case that something went wrong during manual work);
- optional deleting junks with MapGarbage - here a random map with paths went smaller than a map without paths if you can imagine how much trash was in that UNR file - including Red Brush Builder can be nullified - nothing uses that thing in run-time;
- saving map using a different name.

Re: Enslaved for UT

Posted: Sun Mar 06, 2022 9:11 am
by Gustavo6046
Re-wrapping actors? You mean like reordering to last?

Also, I think I'd rather just the entire navigation system be rewritten from scratch. Starting to consider scrapping the BSP code too. Stupid Sweeney.

Re: Enslaved for UT

Posted: Sun Mar 06, 2022 9:45 am
by sektor2111
I'm getting used to wrap to last - I do this with a single button without to click anywhere in map. PlayerStarts can be wrapped as first but I'm not sure how much does it help, but definitely it doesn't hurt. Indeed, after ordering Starts as first, they are located in front of other navigation points and... processing target points are in reverse order until Pawn is closer to a potential entry into network - probably all scanning process takes less cycles this way - or I might be wrong here...

Extra
Something which I read a a few time ago...
https://medium.com/omarelgabrys-blog/pa ... 5a8902eb40
Probably useful elsewhere for whoever is capable to write extra native extensions as alternate options that can be configured by a Server Administrator... getting rid of Cycles and using a Timer. If time spent is more than a half of tick, return None else a "monster-machine" can process 10000 Nodes under an eye blink if memory taken during process won't get into nowhere...

Back into UT. This is what I did in 2016 (it was a sudden recall...) perhaps can be helpful here or elsewhere.

Code: Select all

// Another Mobile PathNode getting used to react triggered more or less randomly
// It moves in a square area defined X Y and it successfully uses never used in stock UT "RandRange"
// for moving node around X Y. It resumes another random movement referenced to Original Location when triggered
class MobileNode expands PathNode;

var bool bMoved;
var Vector HomeLocation,NewLocation;
var() int Xdeviation;
var() int Ydeviation;

event PostBeginPlay()
{
	HomeLocation = Location;
	NewLocation = HomeLocation;
}

function Trigger ( Actor Other, Pawn EventInstigator )
{
	if ( Xdeviation > 0 )
		NewLocation.X = RandRange(NewLocation.X-XDeviation,NewLocation.X+XDeviation);
	if ( Ydeviation > 0 )
		NewLocation.Y = RandRange(NewLocation.Y-YDeviation,NewLocation.Y+YDeviation);
	SetLocation(NewLocation);
	NewLocation = HomeLocation;
}
defaultproperties
{
	bStatic=False
	bNoDelete=True
	bMovable=True
}
Used in a home map DM-Streetwar re-titled later as DM-StreetWar_R16 (properties there need a revision).

Re: Enslaved for UT

Posted: Sun Mar 06, 2022 9:53 pm
by Gustavo6046
The A* algorithm was already very well known at the time UT came out.

In any case, since lots of pathnodes tend to be in clusters in the same area, I'd suggest some hierarchical sort of pathfinding algorithm, like this (also see the comments about how the flowfield works!... although that's not what I had in mind.)

I have a feeling the real issue isn't with the pathfinding algorithm, but rather with the data structure in which the path graph is stored.

There's only one way to find out.

....Ahem.... one moment...

Ah! Hello Timmy, it's really cool to see you. kind of a fan. Calling you to see if I can take a quick look at a corner of the source code to Unreal Tournament? The first one, yup. It's for a pathing thing, I would like to check how the data structure–... Oh. Okay. That's fine. Sorry for bothering you this time of the day. No, that's fine! I can call you back another day. Oo, exciting news. I didn't just say "oo", I think your call had a little drop there. Okay, talk to you later!

Damn, he was in a hurry. I wonder what he's up to with all that hurried 'business' he's talking about...

Re: Enslaved for UT

Posted: Thu Mar 10, 2022 10:52 am
by Delacroix
Just to let you know, there's been a huge update for the map, so if discussing the level, it might be prudent to base all feedback, improvement ideas and other nice stuff in Aspide's topic as he's the author for the patch!