Bot pathing

Post all mapping and skinning related content here!
Post Reply
User avatar
EvilGrins
Posts: 2378
Joined: Thu Jun 30, 2011 8:50 pm
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
NoMoreSpam: Silver
Location: Palo Alto, CA
Contact:

Re: Bot pathing

Post by EvilGrins » Wed Feb 11, 2015 2:28 pm

Nelsona wrote:Another issue needs to be mentioned:

Almighty Flag
See ? Exactly this one was the problem, My Blue Bots captured Red Flag and died in Red Base fighting forever. Yo... my friend, get that Flag here right now! Useless, they did nothing.
This was 1 of the complaints I had about 2 CTF maps made in the recent 512k contest over at ut99.org, that bots would capture the flag but never leave the enemy base after they got it.

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Thu Feb 12, 2015 12:50 pm

There I wonder if mapper did a serious test.

In other one Movers were innocent - no link with pathing, they were working by luck (small working distance - BumpOpenTimed - which can be cheated by Bot) I want to check the winner of 512 k and to look over stuff... or probably not now because I have to see olders and to debate Bot Pathing issues - guess what... my daughter seems skilled in discovering these issues, LOL. Yeah, these bugs are detected by a 3 years old girl.

User avatar
Hook
Posts: 3395
Joined: Fri Feb 16, 2007 9:41 am
What is the middle number? (one, TWO, three): 3
extraextraantispam: No
NoMoreSpam: Silver
Location: Minnesota USA (Just West of MPLS - by a pond beneath a tree - Dead & Buried)
Contact:

Re: Bot pathing

Post by Hook » Fri Feb 20, 2015 7:59 am

LOL Nels, leave it to the kids eh?
=Hook= of Hook's UT Place - Hopelessly Addicted to UT99!
Forum: https://hooksutplace.freeforums.net
CROSSBONES Missile Madness {CMM} (GT Top 50)
PRO-Redeemer | PRO-SNIPER-Redeemer | SEEKER-Redeemer
Birth Place of ALL Seeker/Scoped Deemers!
IP: 68.232.181.236:7777
CROSSBONES Monster Hunt {CMH} (Special Edition MH by mars007)
IP: 108.61.238.93:7777

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Fri Feb 20, 2015 12:39 pm

Hook wrote:LOL Nels, leave it to the kids eh?
Yes and no. Kids usually are getting mad very fast. They tends to burn up a messed job.

Next Chapter Excuses: - It's a game, it is just a hobby.. don't take it serious.
Well... that work is a mirror of any guy: rushed, in panic to gain popularity using a garbage, with head in clouds rather than at road, that's why are happening all evil things in world not only in UT - based on 0 arguments ignorance toward work. Even after 4 years is not late to fix things left in bad state.

Step Back!
I'll ruin all garbage from all stock and from all stupid craps posted On-Line. Modifications are going to be shown in Mapvote at MapInfo at once with bugs successfully created clapping hands. Even a retard can see an ugly BSP error and won't accept any, and neither 0 pathing. At least for me these are options, if anyone will request to me such tiny things I'll help it immediately. If I'll get resources to maintain a server On-Line, that one will be OK even for 1 player joined. Higor helped Engine a lot, how about the rest? Politics? I think Loque don't give a sh!t on any political problem, right? At BU seems on fire political chapter rather than fixing bad stuff. UT flew on window? - OK, no problem.

Keep learning Bot Pathing.
Excepting NavigationPoint-s Bot might be encouraged with triggers. A trigger might help to make Bot to perform an action which usually is not happening.
Fire this statue to unlock whatever door - it is doable using 2 things:
- default DM habit to fire decorations;
- also Calling 'Roaming','ShootDecoration' and claiming target - any actor.
Certain thing can be completed with dispatchers turning on/off trigger when doesn't need to work.
Example: a jumper to get a higher placed weapon - is about event fired by weapon, is helpful in turning it off when weapon is missing, etc. This chapter is advanced, yes people, UScript is truly awesome.

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Sat Mar 14, 2015 4:29 pm

Small tunnels

This chapter at first sight seems impossible but it depends on how small the tunnel is.
We simply can subclass into out MyLevels classes like "OtherNode" having a default smaller collision radius. Such thin points can be placed successfully in places where usual PathNode cannot be implemented properly. Even if paths generated are RED, they can be used by Bot as long as the Bot is not a Fat guy (it doesn't camp to eat anyway). It will be exactly like here, even having multiple paths:
Customs.JPG
A friend asked me something about a fix for MH so I took a look if map could have Bot Support. My answer: Yes, even having a door button under-water pointed by a Nali, Bot can manage that as long as some triggers are increasing Intelligence properly.
You do not have the required permissions to view the files attached to this post.

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Sun Jun 21, 2015 3:33 am

2015 Research result - or are known already
Rarely (or often) Running at walls - even mentioned in original document.
Let's see what's going on. Designer was placing a HealthVial (very thin) in a spot - a small hole in wall. When Editor is placing InventorySpot granted to vial, it is concerned about reachability and will place it in a desired position (Scout didn't fit) to gain a Navigation node as follows:
InvBad.jpg
Given placement of InventorySpot, Bot can find HealthVial. The problem comes at reaching it directly, Bot has to collide center of Item after coming at InventorySpot which is impossible in rat holes so will try a few times (sometimes is quitting). Also occurs if item is too high.

Due to these "cute ideas" about items I have decided to setup a fix directly in my DM. If Bot reach at InventorySpot, for sure item will be exactly under it as it is in a default plane field - no more trash. Simply Bot will touch Item too when collides with InventorySpot. if Item is not a NavigationPoint it supports a proper relocating.

After setting up Human-Bot stuff I think I figured what's wrong in certain ramps. I go to draw and I'll be back.

Edit: Stuff in ramp.
We have problems here based of how is placing Editor our PathNode in ramp due to their Collision-Cylinder (show in green, YES I think is too big too... 50 x 46 comparing it with Bot).
RampNode.jpg
I was trying to illustrate what's wrong in certain cases, happened in my stuff and that's why I could figure what's wrong. Let's see: In Red case Pawn is unable to collide the center of node and will attempt retry (sometimes forever if nothing bugs it) as long as something is changed at collision while pawn access a ramp (step-height, etc) automatically called by engine.
If ramp has a small length (under 680 UU) I prefer only 2 nodes which not a single time proved that WORKS Perfect - Blue case. Actually we don't need really 300-400 UU in ramps, we need to make sure about Reachable contact with nodes "using current locomotion method".
You do not have the required permissions to view the files attached to this post.

User avatar
Hook
Posts: 3395
Joined: Fri Feb 16, 2007 9:41 am
What is the middle number? (one, TWO, three): 3
extraextraantispam: No
NoMoreSpam: Silver
Location: Minnesota USA (Just West of MPLS - by a pond beneath a tree - Dead & Buried)
Contact:

Re: Bot pathing

Post by Hook » Thu Jun 25, 2015 7:07 am

Yes, now THIS is some good stuff.
This is also what I have preached, but I didn't have good pictures of.
Nelsona says it great. :wink:
=Hook= of Hook's UT Place - Hopelessly Addicted to UT99!
Forum: https://hooksutplace.freeforums.net
CROSSBONES Missile Madness {CMM} (GT Top 50)
PRO-Redeemer | PRO-SNIPER-Redeemer | SEEKER-Redeemer
Birth Place of ALL Seeker/Scoped Deemers!
IP: 68.232.181.236:7777
CROSSBONES Monster Hunt {CMH} (Special Edition MH by mars007)
IP: 108.61.238.93:7777

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Fri Jun 26, 2015 11:16 am

Path finding strategy (I forgot this, my bad).

Given a Path Network for Pawns, engine might grant access for Pawn to enter the Network. This happens usually depending on Locomotion VS PHYSICS. Let's clarify then problems.

Pawn-Actor having PHYS_None won't access any path and won't find paths (spectators, cheaters, idiotic testers, etc.).
Pawn falling also has set a destination not a path, pawn falling won't find the way, because it is simply falling unable to track Navigation Nodes properly. Several PathNodes in some Levels are useless in air where pawn cannot have access - Clueless NOOB mapping. Those are almost unused (heavy combat where pawn need some orientation) - normal Navigation won't run through them (see RememberSpot and ShowPath test commands).
However certain Levels with bad geometry might screw functionality of DevPath which will be unable to find which PHYSICS type is required to travel there = No PATH.

When Inventories are too close under 50 UU also we might have troubles based on a simple amoeba logic: Pawn collides multiple points at once = Spam = Hard deal in computing good path = Bot Skating in place = READ this MR. Cannon (he did not read original doc so no worry about reading this).

It says: Cost to enter into Path Network is very expensive... (Is this a joke ?). Let me see then next chapter - UScript: When Bot reaches to a Node will call "PickDestination" to gain next node (function is pretty big and is a Slow UScripted one), more nodes = a LOT of calls = Engine LOAD due to insane number of calls to "PickDestination" - this is cheap not expensive, right ? Having opportunity to put logs in child Bot classes I could see how are acting in "Original" maps with a crap-ton of Nodes. When pawn is moving between Nodes, it is animating and accelerating simple and might screw direction here and there, is not a big deal. So what is more Expensive in end: C++ faster than lightning or bunches of UScript routines acting as a doggy slow while touches many nodes or multiple nodes ?

Multiple touching
Unfair 2 ammo in place (1 guy load all - opponent enemy loads None) + a PathNode added desperate in purpose to find them - INVENTORY IS PATH - it is not recommended any Node too closer (and we have thousands of dumb maps - no offending just reality).

Stupid Looping
We have water - no good paths + health in water = Wait 3 years a Bot to come up and hunt you... "please try my map and send me feedback" - NO THANKS !!! YOU should check it first - is that simple.

Now a few facts (no names). In one Level with 103 PathNodes I have deleted them and I have customized 25 SmallerPathNodes (more ramps in there). So porting Navigation from 103 to 25 doesn't matter how much you believe this or not, Adept Level Bot was insane, challenging me, moving with accuracy and skill without skating at nodes bad placed. LOL ? YES, why not ? Of course initially from 103 Nodes probably 15-20 were nothings to gain more bytes, relevant at first look.

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Thu Jul 02, 2015 9:55 am

Keep going...

Lifts pathing - yes I repeat Lifts Pathing (some people are doing portable doors) BumpOpenTimed mover is a door not a lift (of course in this case Bot is the only stupid here :? ) Why we need doors to replace lifts is not my problem to debate these trashes.

Back in pathing. Such things need to have 3 (THREE) NavigationPoints which means: LiftExit - LiftCenter - LiftExit (or child classes expandable in Editor). These classes or their child classes are elements to chain a path declaring a LiftTag (even if we don't have a mover involved). Declaring LiftTag we will be chaining them properly, leaving them to "None" will cause invalid links through walls with others marked with "None", again intelligence of Bot is increased since Bot can read properly done Lifts which mappers cannot understand :wink: .
JumpSpot is a child of LiftCenter. A lost JumpSpot unlinked in Network is the mostly useless - only in mapper's dream bot will use that normally, in rare combat situations probably will attempt a translocation (in NSDM3 happens because of new A.I. directives - in default DM almost NONE).

In special conditions we might have declared "MaxZDiffAdd". Why we need it sometimes (is not an usual thing) ? When LiftCenter is Higher than primary LiftExit entrance. Bot is waiting lift to gain a reachable LiftCenter, while is waiting, Lift might be in position but our Bot cannot understand that is higher than normal. In such case we deal with a value telling about Z UU difference between entry LiftExit and LiftCenter. Does it works ? Yes, it's doable for DM-Deck16][ in Flak area near HealthVial-s making Bot more convinced to get Flak and (PulseGun as well) normally not only boosted in ambush or rare situations - so it might be useful outside of Lifts usage.
(A mountain of remakes have 0 fixes - others are probably better). Note: I won't upload any Deck version with textures changed as long as game-play has the same stupid originality in Bot Pathing.

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Tue Jul 21, 2015 12:56 pm

Next thing is probably part of Bot Pathing too as long as they need a management of Level in order to react correctly.

I was trying to figure HOW works and IF works that active support when Bot responds: "Hang in there". It looks functional but is not truly always available.
Player any has to perform "TeamSay Help" message (no quotes) which is not really shown on-screen. Must be done when Player is a bit hurt by some enemy. ONLY with an amount of damage taken player has assigned an ENEMY native in PlayerPawn class. Once enemy set native Bot in range 800 if doesn't have enemy, if is in state "Roaming" or "Hold" will react copying your enemy to itself responding and deciding attack method (retreating if is chicken - attacking if find itself well rated).
Because I could see indeed "Bot Support" I was increasing range of custom MBot to 1600 UU. MBot in this range reacts properly when I'm yelling wounded. I can even step away for a few moments letting them to get mad in attack.
I was configuring User.ini as follows:

Code: Select all

i=speech 4 6 0|Teamsay Help
Why I'm speaking about this in Bot Pathing. In a higher range if Bot has no way to enemy won't react properly, so... I'm using good maps and MBot helping me from 1600 UU away.
Never been more cute...

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Thu Jul 30, 2015 12:25 am

Presuming "new blood" can read a few words.

Usually games which doesn't include Translocator tend to discard all paths passing through such stuff: TranslocStart, TranslocDest and nearby childs. Even the name of these toward a game-type like Assault should make mapper to think at "strategy" - in quote because there is no strategy or there is a strategy which doesn't makes any sense.

Example: a map was called AS-AutoRip or such. In version ported to MH with completely ruined Bot Support by a new Expert posting remarks at Wiki I found such useless stuff.

Idea to have unreachable health trying later to fix that trash is pointless.

I'll happily put back that map ( I have some trains affinity ) because has interesting stuff but MH version ported in 2015 is just to dumb for breathing on Earth. I was showing a Camera for such Assault type Ends but we are busy to act as clowns rather than doing job properly, right ?

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Wed Nov 04, 2015 4:40 pm

After testing stuff more or less hours... I drewed a conclusion about Custom stuff which help a lot MonsterHunt goal being defeating the monstrosity.
I used one of my custom MyLevel stuff (child of PathNode) but a smarty one.
Bot has a purpose in original MH - visit Waypoint - less purpse is fighting, more interested in racing at buttons than hunting properly.

Bot can stop racing and hunting an enemy monster if in that moment a NavigationPoint is totaly rejecting a Seeker having an enemy. It can be added before WayPoint being part of road ( without to get an immediate reachable waypoint ). It might be Mylevel-ed by copying code bellow into a child of Pathnode.

Code: Select all

event PostBeginPlay()
{
	Super.PostBeginPlay();
	bSpecialCost=True;
}

event int SpecialCost(Pawn Seeker)
{
	local Bot B;

	B = Bot(Seeker);
	if ( !Seeker.bIsPlayer ) //Monster Not allowed - but can be as needed
		return 100000000; //Using bIsplayer for speed - for Skaarj there is other hint
	if ( B == None ) //Human support
		return 0;
	if ( B != None )
	{
		if ( B.Enemy == None )
			return 0;
		else
			return 100000000;
	}
	return 100000000;
}
Explanations:
bSpecialCost take in consideration conditions to follow for pawn seeker or for engine denial as needed.
At Collision you might decrease values as at PlayerStart and even "thiner" because Bot is not SkaarjBerserker, a fat ass who needs place. Bot can use a rope if needs.
Returning a very high value path is pretty denied - in default is 0 in order to get a link with the rest of nodes. Such a node is usable before main Waypoints not all map loaded.
Seeker engajed in combat will fallback on inventories, jumping, fighting but not very interested in any default Keypoint aka MonsterWayPoint.
Also this custom node might have a texture (skull) or such in order to be found easier for debugging. It won't be bMovable (check it), won't collide anything, perhaps is not a need to mess with other things. Also it supports directional directives if you know what is about there.

Speech might look as follows:
- Me pawn, Game said Find a Path to Waypoint and move;
- After a few CPU Cycles engine was drawing the road but some point is marked special;
- This special thing will trigger condition of denial or not;
- Engine check Enemy Slot for seeker;
- If Enemy has been found path will not be available;
- Seeker will fight native as closer to default DM;
- Enemy dies and other is not available - Will ask a for a path again;
- If engine find 0 enemy for seeker path is allowed as usable.

Notes for Building paths:
- Open LogWindow typing - Paths Undefine;
- Input obj garbage;
- Save Level - Close Editor;
- Open Editor - Open Level;
- Select a Light or other innocent actor;
- Order Light as Last or First or that NON-Pathing actor;
- All Navigation will get wrapped from 0 to whatever, starting a clean build with InventorySpot0 to X value and having only needed ReachSpecs;
- Then input Paths Define;
- Errors for spots too closer to each-other should be avoided - move stuff away or delete all Health and excessive Ammo letting only one per spot;
- after build purge garbage again - Save Level;
- Now add Ammo + Health in heat points of battle zones and DO NOT REBUILD ANYTHING;
- Save map;
- Do testing. Perhaps works if you are familiarized with Bot Pathing - Pathode Placement.

Ramp problems hint:
Subclass a smaller Pathnode in MyLevel and set defaultproperties 38-40 height and 8-10 Radius. Using this default placement you might gain ramps more accessible (Yeah, Polge, read these well and clear :P ).

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Sun Nov 15, 2015 1:34 pm

As a new thing which was coming in my head, I added BotSupport in a No-Name Map without using NavigationPoints, LOL.

Bots are not happy in MH2 for missing paths but they track well the road to end... Eheh. MyLevel is The King of Kung Fu Navigation. :lol:

User avatar
Nelsona
Posts: 995
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Bot pathing

Post by Nelsona » Fri Feb 12, 2016 10:26 am

Ahem, for 2016 we something a little new (or old for me). We can say that we have Mobile PathNodes, moving around to randomize spots where A.I. make steps. There is not a need for speaking too much.
EG has a map supposed nasty (perhaps it is), for me was good except... paths. Using this opportunity I've fired up an example of mobile nodes using two types.
DM-Redemption_MB.zip
Here we have a couple of open areas very good for testing mobile nodes. Go figure if you are interested. Targets:
- TimedTrigger - firing movement;
- CircleNode - a PathNode which moves and is changing rotation with a random speed when gets triggered;
- MobileNode - a Pathnode moving in certain range - configurable by mapper (square-like) randomly when gets triggered.
You do not have the required permissions to view the files attached to this post.

Post Reply