Map's Navigation Network aka Bot Support - basics

Development assistance and tutorials here.
Nelsona
Posts: 1536
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network aka Bot Support - basics

Post by Nelsona »

Another stuff good to be described as a basic thing for DeathMatch mapping it's about PlayerStarts - because these are navigation points after all.
Let's have an image about plain UT sorting PlayerStart actors available:

Code: Select all

function NavigationPoint FindPlayerStart(Pawn Player, optional byte InTeam, optional string incomingName)
{
	local PlayerStart Dest, Candidate[16], Best;
	local float Score[16], BestScore, NextDist;
....
It's about 16 pieces potential candidates... If you have more, they might be USELESS.
However... I think we can have more than 16 spawn locations using something... simple.
We can have a Tag for 16 Such actors and adding other 16 with a similar TAG but set as bEnabled = False. We can complete stage with a "TimedTrigger" using bRepeating = True at whatever interval or a "StochasticTrigger". Each time when Trigger is firing "Event" corresponding to this "Tag" it will switch a PlayerStarts row with the other one and then you can have at random 32 PlayerStarts by toggling firsts 16 Actors with next 16 Actors. Stage can be combined with dispatchers firing more events at different tags and disabling/enabling more that 16 PlayerStart actors, it's all about logic of triggering these...
In XC_Engine based games, these tweaks are not needed because this Engine uses a replacement taking in account a wider range of PlayerStart actors.

The UnderNote: A PlayerStart disabled or enabled will be still a part of navigation chain and if it has paths passing through it's good as a PathNode...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1536
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network aka Bot Support - basics

Post by Nelsona »

Bumping Basic chapter with something concerning CTF mapping and AlternatePaths placement.

When map is a bit confusing in how to check which way is shortest predictable route between the two Flags, we might have some clue (probably not always with COMBOS LE-JS-LE) and we need to examine a Bot session in run-time. We have to add some AlternatePaths actors on routes which are not very used. Which ones are routes unused ?
It looks like we can find out some data right from Editor especially where Special Combos are not used but more normal paths.
Now days we do have a tester builder editor plugin called "PathsDebug" localized here:
https://ut99.org/viewtopic.php?f=5&t=15106
Capable to deliver a couple of results about game stage. We can even use it for other stuff from SP/Coop maps concerning monsters activity with regard to AlarmPoints, PatrolPoints - generic basic navigation.
This is interface of the builder - not used for making brushes, but used for doing a few tests concerning paths.
PathsDebug.PNG
PathsDebug.PNG (14.09 KiB) Viewed 999 times
Operating:
- we have to define an actor (a navigationpoint) which is movement target/goal for a Pawn/Bot/Monster. Or we can select it and then pressing BUILD button. If goal was None it's taken and recorded (can be deleted for future tests);
- after capturing/writing target/goal we can select a PathNode or something like a navigation point from elsewhere and we click again BUILD button.
Response - if builder is reporting a positive result, a red line (or more red lines) will show up linking node by node from this second selected node pointing route to Target/Goal node. If some paths are missing, nothing is found/drawn.
Builder uses 3 scales for testing routes. It's about internal Paths dimensions accepting or not Monsters and Bots or... only Bots (narrow paths in narrow spots).
- SS_HumanBot does a test in Bot format;
- SS_ScoutDefault - does a test in generic format - monsters like Mercenaries/Kralls might use these if results are positive;
- SS_MaxSize - does a test for a maximum size of a Pawn which UE1 is accepting 70×70 - not a deal for Titans and "Big Ones";
- bFromTarget - means a reversal Test (from Goal to another selected Node)
Mainly in a CTF map we are interested about SS_HumanBot report.
How goes with the shortest Path between Flags ?
- We select a FlagBase (RED in this case) - Build Button - said base is now the navigation goal;
- We select the other FlagBase and/or some PlayerStart from BlueBase and hitting BUILD Button.
Let's see a few results using an animated GIF.
NoAltPath.gif
NoAltPath.gif (1.77 MiB) Viewed 999 times
We can see that from Blue FlagBase and 3 PlayerStarts to the Red FlagBase, Bot will use the same Mid route going predictable, never using right side from image. As result we can deploy some AlternatePaths right through the tunnel from the right side of image in order to have a bit of randomization.
After adding AlternatePaths, we can set them as goals and then... checking which way is going Bot if it wants to reach at these AlternatePaths from a Start or with Enemy Flag. If Map is not having any AlternatePath, Enemy Flag Carrier is running with Flag in the same direction as spotted by builder, in simple maps. When map uses AlternatePaths, in run-time Bot carrier has chances to get on an alternate route not always through the same way.
I'm not sure if you are understanding why it's more nice to have a random attack in CTF, but we have a helper tool which can be useful at this point, including to find out if our Skaarj Mercenary Krall will be capable to do some "mission" in our map by doing a basic test. Testing Monsters might be recommended in "SS_MaxSize" for making sure about movement capability calculated by Engine during run-time, in game.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1536
Joined: Sat Sep 30, 2017 5:03 am

Re: Map's Navigation Network aka Bot Support - basics

Post by Nelsona »

Bump to basics.
According to what Polge was recommending and some boys are not aware about what's going on inside an over-crowded paths-net, specifically when we put loads of items and nodes in the same small spot.
DevPath was written for simple format - only for movement and not for dictating movement strategy, A.I. Pawn is just A.I., not a human player. When DevPath will create specific connections (lines between nodes) it might go over Paths capacity which a node can host and from than moment it starts to "forget" updating paths inside internal Node lists (only 16 Out 16 In and 16 Pruned-Shortcuts). During routing calculus Engine will take in account what Network has and not all paths that are drawn in Editor.
An example was MH-MeltTown map where bots were leaving Spawn Spot only during a combat situation or guided by player. Basic image shows even some borked directions... if we want to see Arrows not Plain Lines.
Apparent_Paths.PNG
Apparent_Paths.PNG (330.72 KiB) Viewed 557 times
In a future update for XC_PathsWorker will be a Sub-Option for nullification of paths that are not inside Nodes - just for probing not for using map with null paths. As result we can see only what is being in routing process during game without debris useless data... Here is the show...
Processed_Paths.PNG
Processed_Paths.PNG (326.78 KiB) Viewed 557 times
Here I could not even see anything going out of helicopter, Bot moving away only triggered by monsters...
And this is why we don't need a bunch of nodes in a single small room - that's way no way.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Post Reply