MapChecker

Tutorials and discussions about Mapping - Introduce your own ones!
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MapChecker

Post by sektor2111 »

Got it...
I edited previous post for explaining what did I mean with keeping intact assets from client, in hoping that LiftCenters won't get "fixed" as Teleporters which are not a subject for being fixed - neither adding useless events as in map 512k-CostaDelW00t - there I even removed some useless executions from clients...
And I think VisibleTeleporter is a borked class like those projectiles which are doing a mess On-Line... A Teleporter recreated in client might not match original Place/Location affecting client calculations concerning "Touch" and then Server might call a Touch, but client is not sure about that, and the reversal too.
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MapChecker

Post by sektor2111 »

Bump: Let me show you a small little tiny proof in how is getting client screwed up - and perhaps this is not the only way causing buggers in poor clients...

Adding a child class of VisibleTeleporter without adjusting any property but... adding logs:

Code: Select all

class RepVisibleTeleporter expands VisibleTeleporter;

Simulated function PostBeginPlay()
{
	Super.PostBeginPlay();
	Log("Role"@ROLE@"RemoteRole"@RemoteRole$".",Name);
	LogPaths();
}

simulated function LogPaths()
{
	local int i;

	for ( i = 0; i < 16; i++ )
	{
		log("Paths"$i$"="$Paths[i],Name);
		log("upStreamPaths"$i$"="$upStreamPaths[i],Name);
		log("PrunedPaths"$i$"="$PrunedPaths[i],Name);
	}
}
This is in server.log:

Code: Select all

XServerQuery: Port 7778 successfully bound.
RepVisibleTeleporter0: Role 4 RemoteRole 2.
RepVisibleTeleporter0: Paths0=5
RepVisibleTeleporter0: upStreamPaths0=4
RepVisibleTeleporter0: PrunedPaths0=-1
RepVisibleTeleporter0: Paths1=-1
RepVisibleTeleporter0: upStreamPaths1=-1
RepVisibleTeleporter0: PrunedPaths1=-1
....
And this is in client's log aka UnrealTournament.log:

Code: Select all

Log: Possessed PlayerPawn: TFemale1 DM-A_PathTest.TFemale2
LevelNotifier: Client Info >> Level Title >> DM-A_PathTest
LevelNotifier: Getting map-file: DM-A_PathTest
RepVisibleTeleporter1: Role 2 RemoteRole 4.
RepVisibleTeleporter1: Paths0=-1
RepVisibleTeleporter1: upStreamPaths0=-1
RepVisibleTeleporter1: PrunedPaths0=-1
RepVisibleTeleporter1: Paths1=-1
RepVisibleTeleporter1: upStreamPaths1=-1
RepVisibleTeleporter1: PrunedPaths1=-1
Q.E.D. - client has a new Teleporter having nothing to do with paths and navigation chain - good luck with these "dynamics" which should have at least bNoDelete if they are not bStatic and supposed to use some animations...

By any matter if you don't believe On-Line story, then check it yourself...
DM-A_PathTest.7z
(2.48 KiB) Downloaded 20 times
Perhaps it would be nice to find out more data, such as Locations, Rotations, etc. but me one I'm not curious at all - DynamicWater was already showing me some cute things concerning alignment stage from client. To not forget fixes for spawning "statics" concerning client in newer 469. Are these COPIES placed in the same place as original ones ?

Edit: In map CTF-XV-BL00DBATH-V6-0.unr there are PathNodes reported as being placed too low. To be honest, they are placed EXACTLY how I want them when I do FUNCTIONAL paths in my edits... but we don't have reports concerning broken routes unusable... and we have such things...

Code: Select all

ScriptLog: JumpSpot0 need move up on 3.500000
ScriptLog: JumpSpot1 need move up on 3.500000
And then ? Moving them won't have any single purpose.

Code: Select all

WrongPoint: JumpSpot0 doesn't have a private LiftTag string defined, which is pretty wrong.
BorkedStrings: This might not have connections or... it can be connected through walls with Exits if they exist.
WrongPoint: JumpSpot1 doesn't have a private LiftTag string defined, which is pretty wrong.
....
NoIncomingPath: PathNode26 is not having incoming connections.
NoIncomingPath: PathNode27 is not having incoming connections.
UtterlyUseless: JumpSpot0 is not having any path defined.
UtterlyUseless: JumpSpot1 is not having any path defined.
... //etc
By example PathNode890

Code: Select all

ScriptLog: PathNode890 need move up on 6.336792
doesn't need anything. This is not a MonsterHunt map and even if it would be a MonsterHunt map, a monster has no problems there (except titans and all those having always issues with 70 × 70). Nodes from ramps are even in stock documents recommended to be adjusted for helping Pawn to reach at them correctly...
S.Polge wrote: Bots will have problems if the NavigationPoints are too high off the ground. Make sure that the NavigationPoint is no more than 1.5x the bot's collisionheight off the ground. This will normally be the case automatically, but in a few situations (such as very steep ramps), the level designer may need to manually adjust the Z position of the NavigationPoint.
User avatar
Neon_Knight
Adept
Posts: 326
Joined: Wed Apr 27, 2011 1:31 pm
Location: Junín (BA - Argentina)
Contact:

Re: MapChecker

Post by Neon_Knight »

Don't know if I replied to this one, but this is indeed a very useful tool. Thank you!
OldUnreal U1v227/UTv469 Localization Project coordinator/spanish language maintainer - Unreal Wiki
ProTip 1: anybody using the phrase "I'm a True Fan and You're Not!" is an obnoxious, self-centered, egotistical, elitist, narcissist douchebag.
ProTip 2: anybody who uses the "Royal We" when making a demand wants to pass their own opinion as everyone else's.
ProTip 3: Only the people that do nothing but criticize don't make mistakes. Do things. Make mistakes. Learn from them. And screw those who do nothing but throw poison and criticize.
ProTip 4: If the Duke Nukem Forever fiasco wasn't enough of a lesson, perfectionism leads to nothing positive. Don't be afraid of releasing a buggy product. Even the most polished product has its flaws.
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Added more checks:

Code: Select all

	checkFortStandardMHFallBackFort();
fix checkAttachTag
Updated in first post: viewtopic.php?f=5&t=14809
Last edited by Buggie on Mon May 16, 2022 11:52 am, edited 1 time in total.
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Fix few checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Fix few checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Added more checks:

Code: Select all

	checkXVehiclesMutators();
	checkXVehiclesFactoriesInGround();
	checkInventoryInGround();
	checkFlagBaseInAir();
	checkBrushNoModel();
	checkBrushSameModel();
Fix few checks.
Updated in first post: viewtopic.php?f=5&t=14809

Automatically merged

Fix few checks, thanks to Barbie.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkFactorySpawnPointsCount();
- Fix few checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkNavigationPointInAirOnSlope();
Updated in first post: viewtopic.php?f=5&t=14809
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MapChecker

Post by sektor2111 »

Code: Select all

function checkNavigationPointInAirOnSlope() {
....
			HitLocation.Z -= A.Location.Z + (1 - HitNormal.Z)*(A.CollisionRadius - class'PlayerPawn'.default.CollisionRadius);
....
PlayerPawn_Actor.PNG
PlayerPawn_Actor.PNG (8.06 KiB) Viewed 1279 times
I don't get the point of PlayerPawn - is the same as ACTOR class... Isn't it more simple "A.CollisionRadius - 17" ?

Code: Select all

function checkInventoryMyMarker() {
	local string Header;
	local Inventory A;
	local int i;

	Header = "Inventory without MyMarker:";

It is NOT mandatory markers for all Inventories - this is mainly DM stuff, in other cases this is for helping only a closer combat, map's goal can be different than collecting items. Sometimes game goes improved if Bot is not lured by these and can be damaging in overcrowded spots. The trivia: Higor has an InventorySpot that can be used for 10 items in the same place because it's dynamic..
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkCTFLocationNames();
- Fix some checks.

Updated in first post: viewtopic.php?f=5&t=14809

Automatically merged

- Added more checks:

Code: Select all

	checkXVehiclesFactoriesRespawnTime();
	checkXVehiclesFactoriesTeamNum();
	checkCTFAlternatePaths();
- Fix some checks.

Updated in first post: viewtopic.php?f=5&t=14809

Automatically merged

- Fix some checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkFlagBaseSkin();
	checkCTFPlayerStartTeam();
- Fix/improve some checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkVisibleTeleporterDrawScale();
- Fix/improve some checks.

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkNavigationPointsCount();
Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2741
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

- Added more checks:

Code: Select all

	checkNavigationPointsReachSpec();
- Fix/improve some checks.

Updated in first post: viewtopic.php?f=5&t=14809
Post Reply