Strategic Bots
This page is a hub for the techniques and methods used to get bots to do anything other than navigate a map. This includes, Ambushing, Camping, Defending, Sniping, manipulating TriggerSystems, switching GameObjectives, etc.
Ambush
In UT, an AmbushPoint can be set up by matching the ScriptedPawn Tag with the AmbushPoint Tag and setting the ScriptedPawn to Orders='Ambushing'. The ScriptedPawn will travel to any one of the AmbushPoints set this way and wait for a player it sees within the given AmbushPoint.SightRadius to attack. If AmbushPoint.bSniping is set to true, it will stay at the point and snipe.
In UT200x, ambushing & camping can be achieved by using an UnrealScriptedSequence (set to "Freelance") to get the bot to WaitForPlayer, then either Attack and LeaveScript or loop and continue to WaitForPlayer. See also Sniping.
SuperApe: We need an example of this that works, but doesn't cause a bot to get permanently stuck.
Defense
No discussion of having bots defend and snipe would be complete without mentioning the DefensePoint and DistanceViewTrigger actors. Take a look at both of these snippets before moving on.
Now, A DefensePoint actor should be placed at every location you want a bot who has its orders set to "Defend" to go. This includes both sniping points and places where you want the bot to stand to defend a flag base/release switch/assault goal/and possibly control point, although I'm not sure of the specifics for either Assault or Domination.
If you are trying to create a normal defense point, all you have to do is set the team number to the team that is going to defend the point, set a weight if desired, and rotate the DefensePoint to the correct orientation. Bots will automatically go there if their orders are set to "defend".
See also UnrealScriptedSequence.
Sniping
Beyond mere defense, it's possible to make a bot snipe when it sees the enemy.
If it is a sniping spot, set bSniping to true under the AmbushPoint tab contained within the preferences of the DefensePoint actor (the DefensePoint actor inherits the sniping info from it's parent class, the AmbushPoint actor). Also, make sure to rotate the DefensePoint so it points in the direction you want the bot to snipe. It is also a good idea to place DistanceViewTriggers in connection with the sniping point to any spot where you want the bot to snipe. Note that failing to do this in conjuction with sniping points that are far away from the action (ala the sniping lofts in Face), tends to result in bots toting rocket launchers and other weaponry besides the sniper rifle up to the sniping point and standing out in the open making their head a nice sweet target. (Also note that just because the bot doesn't have the sniper rifle out doesn't mean you failed in placing the DVT's, they won't switch to the rifle until the first time a DVT is triggered).
Setting the view direction
A technique when setting the direction of this actor (and other bot sightlines):
- make a Sheet brush on the X or Y axis, and very wide.
- in Top view, set the centre of the sheet brush on top of the DefsnePoint actor
- Rotate the sheet until one end of it is on the thing you want the bot to see (you may need to make the sheet bigger)
- Now select the nav point actor & rotate it so its directional arrow matches the RBB line
Further Discussion
Although I don't like this technique myself, there are some people who swear by placing DefensePoint's in the opponent's base in certain gametypes to make the action more intense, perhaps someone would like to elaborate on this...
SuperApe: This would most likely serve a similar purpose as an AssaultPath placed in the area near a GameObjective, except by using an UnrealScriptedSequence, you'd get bots to stay at that forward attacking position instead of moving on to the GameObjective. And in gametypes without GameObjectives (i.e., Deathmatch), this would be an ideal way to get bots to hold a strategic position in enemy terriory; continually harrassing their team. This could be classified as sniping or ambushing, depending on where in the layout it's placed and what the bots are told to do once they're there.
Related Topics
- Bot Support – Main topic
- Bot Pathing – Concepts and elements of the bot path network
- Basic Bot Pathing – A tutorial on basic bot pathing
- Bot Mind – Understanding the bots
- Testing Botplay – Ensuring robust bot support
- Bot Pathing – Concepts and elements of the bot path network
- DefensePoint
- DistanceViewTrigger
- Creating A Defense Point In UT200x
Discussion
SuperApe: This page should also cover advanced actions like manipulating trigger systems, triggered doors, etc. The Sniping section should really include the SnipingVolume. AIScripts for GameObjectives should be covered here as well.
SuperApe: I'm realizing what this page was originally talking about with regards to UT. To make it relevant to both UT and UT200x, a little more will be added and the UT stuff (like AmbushPoints, AlertPoints, etc.) will be cleaned up.
Category To Do - Fill in the concepts for these situations. Link to relavant Object classes. Specify which is for UT200x and for UT.