Various XC Works Discussions

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

Re: Various XC Works Discussions

Post by sektor2111 » Sun Nov 15, 2020 4:31 pm

For local debugging and examinations I wrote a reachSpec listing tool which is an XC_Engine_Actor usable in XC_Engine.ini. Here is about ALL DATA from a reachSpec structure - I have already posted such a log fragment but I think there might be people interested about resources for such a game-test-tool.
It's simple and dependencies are Core, Engine, XC_Engine U packages and XC_Engine version is v24, works probably with v25 too.

Code: Select all

class XC_ReachSpecs expands XC_Engine_Actor;

event XC_Init()
{
	local ReachSpec R;
	local int RI, i;
	local NavigationPoint N;
	local Actor Start, End;
	local int distance, reachFlags;
	local string MapFile;

	MapFile = string(Outer.Name);
	if ( Instr(MapFile,"UT-Logo-Map") != -1 || Level.NavigationPointList == None )
	{
		log ("The current environment is not suitable for reporting navigation routes.",'NotNeeded');
		return;
	}
	log ("ReachSpecs reporting Actor.",'MapSpecs');
	foreach AllReachSpecs(R,RI)
	{
		i++;
		log (RI@": Start ="@R.Start.Name@"End ="@R.End.Name@"ColRadius ="@R.CollisionRadius@"ColHeight ="@R.CollisionHeight@"ReachFlag ="@R.ReachFlags@"Dist ="@R.distance@"Pruned ="@R.bPruned$".",'ReachSpec');
	}
	log ("Detected"@i@"reachSpecs.",'XC_ReachSpecsDescriptor');
}

defaultproperties
{
	RemoteRole=ROLE_None
	bGameRelevant=True
}
If I missed something, source code is this one:
XC_ReachSpecs.7z
Then it can be set in XC_Engine.ini as follows:

Code: Select all

...
LastVersion=24
XCGE_Actors=XC_ReachSpecs.XC_ReachSpecs
...
Package already compiled is here for people which want it usable directly out of source-code:
XC_ReachSpecs_Actor.7z
If it crashes certain maps... you will need to check them other way not with this actor, lol.
This actor is loaded and executed by XC_Engine BEFORE GameInfo's InitGame, so to speak before everything... future changes in navigation might take place if are applied after this tool, this will report mainly original map's content.
You do not have the required permissions to view the files attached to this post.

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

Re: Various XC Works Discussions

Post by sektor2111 » Tue Feb 23, 2021 9:52 pm

Buzzing around...

I think at least in local games - perhaps in server too - I'll completely get rid of PrunedPaths. Except processing for nothing I don't have any use of these... either way all "stock" reachSpecs 70 × 70 will have 117 × 112, simple as that. Bot won't have issues but maybe a few monsters will be more active...

Code: Select all

	foreach AllReachSpecs(R,RI)
	{
		if ( R.bPruned == 1)
		{
			i++;
			for (j = 0; j < 16; j++)
			{
				if ( NavigationPoint(R.Start).PrunedPaths[j] > -1 )
					NavigationPoint(R.Start).PrunedPaths[j] = -1;
			}
//			DefragPrunedPaths(NavigationPoint(R.Start)); //Nah, it won't be anything for wrapping
			R.Start = None;
			R.End = None;
			R.CollisionRadius = 0;
			R.CollisionHeight = 0;
			R.ReachFlags = 0;
			R.Distance = 0;
			R.bPruned = 0;
			SetReachSpec(R,RI);
			log ( "Nulling pruned path"@RI$".",'PrunedAdjust');
			continue;
		}
		if ( R.Start != None && R.End != None && R.CollisionRadius == 70 && R.CollisionHeight == 70 )
		{
			i++;
			R.Start = R.Start;
			R.End = R.End;
			R.CollisionRadius = 117;
			R.CollisionHeight = 112;
			R.ReachFlags = R.ReachFlags;
			R.Distance = R.Distance;
			R.bPruned = R.bPruned;
			SetReachSpec(R,RI);
			log(RI@":Start ="@R.Start.Name@"End ="@R.End.Name@"CollisionRadius ="@R.CollisionRadius@"CollisionHeight ="@R.CollisionHeight@"reachFlags ="@R.reachFlags@"distance ="@R.distance$".",'EnlargedSpec');
			continue;
		}
...
...
The true fact as base used here is... Teleporter. These are using 150 × 150 mainly all the time, then I'm not sure if changing 70 will do a hazardous damage at all.

Cons: I cannot purge garbage in this stage - it's too fast and garbage is not completely unreferenced - for removing all trash data before initializing game...
By example: A map with 1222 reachSpecs will work in run-time using only 808 specs without any issue - except issues properly added by mapper.

In other hand those UTDM whatever crapped modified pawns will have more interest about hunting in open areas... Another problem has been solved then...