MapChecker
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
-
- Adept
- Posts: 365
- Joined: Sat Oct 05, 2013 7:20 am
- Personal rank: Easy Target
- Location: "The Butthole of the World"
Re: MapChecker
For some reason my Monster Hunt package was incomplete. I re-installed it and the editor loaded with MapChecker.Buggie wrote: Which package be missed?
25 Anniversary Map Signup
My UT stuff:
CTF-NRMC-Gravitation | CTF-Panamax | Octane Boss Skin | Diesel mkII Boss Skin | Magma NewXan Skin | Skinsect Skjaarj Skin | Gaspack Voicepack
"Also UPDATE YOUR SIGNATURE"
-UnrealGGecko
My UT stuff:
CTF-NRMC-Gravitation | CTF-Panamax | Octane Boss Skin | Diesel mkII Boss Skin | Magma NewXan Skin | Skinsect Skjaarj Skin | Gaspack Voicepack
"Also UPDATE YOUR SIGNATURE"
-UnrealGGecko
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
Added more checks:
Updated in the first post: viewtopic.php?p=131447#p131447
Code: Select all
checkShortcut();
checkUnlockInventory();
checkScriptedPawnMovement();
checkTeamCannons();
checkZoneInfoAmbientBrightness();
checkMonsterHuntAssaultRandomizer();
checkMonsterHuntAssaultBonusPackActors();
checkTeleporterRelevance();
checkCounterCount();
checkTeleporterURL();
checkDispatcherLoop();
checkInventorySpotMarkedItem();
checkLevelInfoCount();
checkDecorationFragments();
checkMonsterHuntTriggerType();
checkPathNodeNotUsed();
checkPathNodeClose();
checkCeilingGunBase();
checkGrBase();
checkMoverScale();
checkTeamCannon();
-
- Godlike
- Posts: 6438
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: MapChecker
With regard to this section
There are stock projectile classes which are not exactly projectiles or useless (zero speed and zero damage), like are having certain Tentacles from "ported" map MH-Gauntlet (those projectiles are only falling down not at enemy direction).
Also here it would be needed checks for Non-Projectiles used as projectiles spamming actors. Some Skaarj in whatever map were firing ASMD - it was just a miserable setup.
Paths
By deleting a PathNode without Paths and not rebuilding Paths will result a screwed up NavigationPointlist. Previous node having deleted node as nextNavigationPoint will break chain. All Nodes from map are chained even if they are in void or not having paths after building paths due some factors (void, far away, too high isolated in the sky, buried in walls or floors, etc.). If some PlayerStart actors are lost from chain, even if these are inactive they can be in account for spawn due to secondary iterator deal, and player might spawn in other disabled area, either way navigation will get screwed up from certain point toward. Path searching is based on NavigationPointlist which needs to be Valid.
Code: Select all
....
foreach LevelInfo.AllActors(class'ScriptedPawn', A) {
if (A.RangedProjectile == class'GuidedWarShell') { // Plasma too?
if (Header != "") {
Log(Header);
Header = "";
}
LogProblem(A);
}
Also here it would be needed checks for Non-Projectiles used as projectiles spamming actors. Some Skaarj in whatever map were firing ASMD - it was just a miserable setup.
Paths
By deleting a PathNode without Paths and not rebuilding Paths will result a screwed up NavigationPointlist. Previous node having deleted node as nextNavigationPoint will break chain. All Nodes from map are chained even if they are in void or not having paths after building paths due some factors (void, far away, too high isolated in the sky, buried in walls or floors, etc.). If some PlayerStart actors are lost from chain, even if these are inactive they can be in account for spawn due to secondary iterator deal, and player might spawn in other disabled area, either way navigation will get screwed up from certain point toward. Path searching is based on NavigationPointlist which needs to be Valid.
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
It is not silver bullet. neither it is not "push for fix" solution.
It is simple checker.
It is mean it is not cover all cases. I try collect some, but obviously can not catch all.
And this tool produce hints. You can decide take it account or no. Possible hint is wrong and must be ignored.
Most auto-fix is fast but dirty. And not fit all possible scenarios. So need use fix (even if use) only after first pass without fixes and read output. And only if you fine for fix some issues in "some" way. Not necessary "proper" way.
Also after apply any fixes and make release better rebuilt paths and lights. But it obvious and must be done almost before any release of map.
Finally v469c rebuild NavigationPoint list on map load. So you can drop PathNodes and this not harm on v469c.
It is simple checker.
It is mean it is not cover all cases. I try collect some, but obviously can not catch all.
And this tool produce hints. You can decide take it account or no. Possible hint is wrong and must be ignored.
Most auto-fix is fast but dirty. And not fit all possible scenarios. So need use fix (even if use) only after first pass without fixes and read output. And only if you fine for fix some issues in "some" way. Not necessary "proper" way.
Also after apply any fixes and make release better rebuilt paths and lights. But it obvious and must be done almost before any release of map.
Finally v469c rebuild NavigationPoint list on map load. So you can drop PathNodes and this not harm on v469c.
-
- Godlike
- Posts: 6438
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: MapChecker
I understand... So for version 469c I have to write a ServerActor for fixing the fix. I don't need InventorySpots from walls and Invalid Nodes relinked in Navigation chain. When map is corrupted this is not an answer at all.
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
As you fish. Possible this can break some stuff which related to fact - any nav node in list. Anyway it is not subject of this topic.
Return to checker- use fix or just check before built paths is bad idea. Checker try detect state paths not rebuilt, but easily can fail with that,
So you place 100 PathNodes, run with fix and all nodes removed, because firstly need rebuilt paths. Only after that apply fix.
Anyway simple run without fix not modify anything so safe for call even if paths not built.
Biggest problem -huge flood in the log.
Return to checker- use fix or just check before built paths is bad idea. Checker try detect state paths not rebuilt, but easily can fail with that,
So you place 100 PathNodes, run with fix and all nodes removed, because firstly need rebuilt paths. Only after that apply fix.
Anyway simple run without fix not modify anything so safe for call even if paths not built.
Biggest problem -huge flood in the log.
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
Added more checks:
Updated in the first post: viewtopic.php?p=131447#p131447
Code: Select all
checkMoverMoveTime();
checkTeleporterGroupDirection();
checkCommander();
checkInventoryCharge();
checkMonsterHuntMonsterEndHidden();
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
Added more checks:
Better detect proper LevelInfo.
Updated in the first post: viewtopic.php?p=131447#p131447[hr][/hr]Add check for missed screenshot.
Code: Select all
checkLevelInfo();
Updated in the first post: viewtopic.php?p=131447#p131447[hr][/hr]
Automatically merged
-
- Godlike
- Posts: 1462
- Joined: Mon Jun 01, 2015 7:08 pm
- Personal rank: Resident Wallaby
- Location: Porto Alegre, Brazil
Re: MapChecker
What if we contributed to make (and collectively curate) a large list of issues in map, and then each of them can have a Detector and Fixer method that we can add to an ultimate automatic map cleanup tool?
Kinda like ShellCheck has its list of common shell script issues, and each has its own suggestions for fixes.
The hyper-trigger Sektor described could be one of the issues.
Hell, just use doc comments and use Doxygen or something to generate the actual documentation/wiki page for the corresponding issue.
Kinda like ShellCheck has its list of common shell script issues, and each has its own suggestions for fixes.
The hyper-trigger Sektor described could be one of the issues.
Hell, just use doc comments and use Doxygen or something to generate the actual documentation/wiki page for the corresponding issue.
"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."
— Weapon of Destruction
— Weapon of Destruction
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
It is simple tool. You can "fork" it for start and write bunch of check and fixes.
But usually fixes good only for very specific cases. Normally need manually review issue,
But usually fixes good only for very specific cases. Normally need manually review issue,
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am
Re: MapChecker
Added more checks:
Updated in the first post: viewtopic.php?f=5&t=14809
Code: Select all
checkNavigationPointInGround();
checkUTJumpPadNoDelete();
-
- Godlike
- Posts: 6438
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: MapChecker
I was tempted to discuss about NavigationPointlist - swJumpPads more exactly added in Mylevel and... NOT SET as static stuff, client game re-creating copies which aren't original, reachspecs from clients referencing NULL nodes from nowhere, On-Line (not always a problem, but logic is NONE here). Static things as Navigation in my opinion should stay. swJumpPad are even pointless calling functions in clients when actually they are not original and not even needed, and all navigation is guided from SERVER.
If a Navigation Point is delegated to have a dynamic activity (such as changing aspect) that one probably is recommended as bNoDelete - this is what I've learned from these assets, or else it will be reconstructed and let me see, a new linker is created, original remaining messed up. Now I'm curious to find out what Garbage Collector does at this point. In my opinion Navigation chain SHOULD STAY untouched - and here if we don't have bStatic = True at least we should stick to bNoDelete = True. Deletion of navigation actors in client has no good purpose.
Question: Which map uses these teleporters ?
PS: I did my goofing here, as long as I did not check them in detail. A future version of MapGarbage will do a check concerning these things...
Resuming: When I'll find a Map having Teleporters whatever set as bNoDelete = False - I'll switch them to TRUE including their default CLASS properties.
Edit:
Either way, Epic did DYNAMIC navigation points themselves - frankly LiftCenter is a plain stock sample about "dynamics" - not much replicated but... original in all stages: Client and Server... nothing touched.
If a Navigation Point is delegated to have a dynamic activity (such as changing aspect) that one probably is recommended as bNoDelete - this is what I've learned from these assets, or else it will be reconstructed and let me see, a new linker is created, original remaining messed up. Now I'm curious to find out what Garbage Collector does at this point. In my opinion Navigation chain SHOULD STAY untouched - and here if we don't have bStatic = True at least we should stick to bNoDelete = True. Deletion of navigation actors in client has no good purpose.
Question: Which map uses these teleporters ?
Code: Select all
if (A.isA('UTJumpPad') && A.bNoDelete != (A.URL != ""))
Resuming: When I'll find a Map having Teleporters whatever set as bNoDelete = False - I'll switch them to TRUE including their default CLASS properties.
Edit:
Either way, Epic did DYNAMIC navigation points themselves - frankly LiftCenter is a plain stock sample about "dynamics" - not much replicated but... original in all stages: Client and Server... nothing touched.
You do not have the required permissions to view the files attached to this post.
Last edited by sektor2111 on Sat Apr 09, 2022 11:37 am, edited 2 times in total.
-
- Godlike
- Posts: 3171
- Joined: Sat Mar 21, 2020 5:32 am