Assault: Difference between revisions
TomEdwards (talk | contribs) |
TomEdwards (talk | contribs) (Assaults are actually linear :'() |
||
Line 6: | Line 6: | ||
* [[info_node|info_nodes]] for pathfinding | * [[info_node|info_nodes]] for pathfinding | ||
Its purpose is to | Its purpose is to make an NPC follow a predesigned route. In this regard it is quite similar to [[path_corner]]: the differences revolve around assaults being designed for combat situations and through that their increased flexibility. This article will detail how to use them, but please be aware that AI was previously undocumented so mistakes are inevitable. | ||
==Structure== | ==Structure== | ||
Line 14: | Line 12: | ||
<center>[[Image:Assault_diagram.png]]</center> | <center>[[Image:Assault_diagram.png]]</center> | ||
NPCs follow the | NPCs follow the chain of assault points they are attached to by an AI goal, starting with a rally point. | ||
===ai_goal_assault=== | ===ai_goal_assault=== | ||
Line 36: | Line 34: | ||
===assault_assaultpoint=== | ===assault_assaultpoint=== | ||
The body of an assault chain. Specifies where the assault should go once it has begun. There can be any number of assault_assaultpoints in each | The body of an assault chain. Specifies where the assault should go once it has begun. There can be any number of assault_assaultpoints in each chain. | ||
'''It is important to remember that assaultpoints affect the journey ''to'' them, not ''from'' them.''' | '''It is important to remember that assaultpoints affect the journey ''to'' them, not ''from'' them.''' | ||
Line 53: | Line 51: | ||
==Limitations and bugs== | ==Limitations and bugs== | ||
* When moving to an assaultpoint, | * When moving to an assaultpoint part way through a chain, the NPC will go to the standing posture for a moment before continuing. This looks unnatural. | ||
* NPCs will always arrive at a rally or assault point and turn to face in the direction the entity is set to. This is again unnatural in most cases. | * NPCs will always arrive at a rally or assault point and turn to face in the direction the entity is set to. This is again unnatural in most cases. | ||
* NPCs must stand on | * NPCs must stand directly on an assaultpoint to clear it without timeout if '''Clear on contact with enemies''' is not set and triggered. This can result in illogical backtracking and means that groups of NPCs moving together each need their own assaultpoint to maintain the illusion. | ||
* A rallypoint can only serve one NPC per assault. If multiple NPCs are required to assault at the same time, each needs their own rallypoint. There may be a solution to this (for instance [[Squads]]) but it is not yet documented. | |||
* If enemies are in view of an assaultpoint, they will be seen just before the point is reached and probably calculated using the wrong (previous) settings. To avoid this, try to ensure assaultpoints are always in 'safe' areas. | * If enemies are in view of an assaultpoint, they will be seen just before the point is reached and probably calculated using the wrong (previous) settings. To avoid this, try to ensure assaultpoints are always in 'safe' areas. | ||
* Linking and assaultpoint to a rallypoint crashes the game. | |||
==Example== | ==Example== | ||
Line 73: | Line 75: | ||
[http://www.btinternet.com/~varsity_uk/VDC/Assaults/assault_simple.zip Example (VMF)] | [http://www.btinternet.com/~varsity_uk/VDC/Assaults/assault_simple.zip Example (VMF)] | ||
[[Category:AI]] | [[Category:AI]] |
Revision as of 08:39, 30 June 2005
An assault consists of four component types:
- ai_goal_assault
- assault_rallypoint
- assault_assaultpoint
- info_nodes for pathfinding
Its purpose is to make an NPC follow a predesigned route. In this regard it is quite similar to path_corner: the differences revolve around assaults being designed for combat situations and through that their increased flexibility. This article will detail how to use them, but please be aware that AI was previously undocumented so mistakes are inevitable.
Structure

NPCs follow the chain of assault points they are attached to by an AI goal, starting with a rally point.
ai_goal_assault
This entity specifies what NPCs are to carry out the assault and triggers it when any conditions given are met.
- Actor(s) to affect: Enter the name of the actors that will perform the assault. This field supports wildcards, should they be needed.
- Rally Point Set: The name of the assault_rallypoint at which this assault will begin. This field can also support wildcards, which will be matched with the wildcards in Actor(s) to affect. This means that rebel_1 will go to rally_1, rebel_2 to rally_2, and so on.
- Search Type: It is also possible to specify classes. If your NPCs do not have names, or you want all NPCs of a certain type to join the assault, you can set this to 'Classname' and make the appropriate changes to Actor(s) to affect.
- Assault Cue: The goal can be set immediately after being activated, after it has received an input through the I/O system, or when the entity 'hears' gunfire depending on the setting here.
assault_rallypoint
All assaults begin at a rallypoint. Specific differences are currently unknown.
- Assault Point: The first assault_assaultpoint in the chain.
- Assault Delay: The amount of time to wait here once the assault has begun before moving to the first assault_assaultpoint.
- Rally Sequence: Set a specific animation sequence for NPCs waiting to begin the assault.
- Priority: If an NPC is faced with multiple assault_rallypoints, it will choose the best from it’s knowledge or take the one with the highest priority.
assault_assaultpoint
The body of an assault chain. Specifies where the assault should go once it has begun. There can be any number of assault_assaultpoints in each chain.
It is important to remember that assaultpoints affect the journey to them, not from them.
- Assault Hint Group: Constrain NPCs in the assault to this hint group.
- Assault time out: How long to wait with no activity at this assaultpoint before moving on.
- Clear on contact with enemies: If the assault meets enemies on its way to this point, it will consider it cleared and target the next point in the chain.
- Allow diversion: If the assault comes into contact with hostiles on the way to the point, divert to kill them and resume once the area appears clear.
- If it set to Yes NPCs will chase any hostiles until they are dead or out of sight for the period set in Assault time out.
- If this is set to No assaulting NPCs will run non-stop to the next point, attacking enemies they can see but not chasing them.
- Never Timeout: Force NPCs to try and reach this point forever, with no timeouts.
- Flag: Clear this point on arrival, UNCONDITIONALLY: Move on to the next point once reaching this one regardless of any other influences.
Limitations and bugs
- When moving to an assaultpoint part way through a chain, the NPC will go to the standing posture for a moment before continuing. This looks unnatural.
- NPCs will always arrive at a rally or assault point and turn to face in the direction the entity is set to. This is again unnatural in most cases.
- NPCs must stand directly on an assaultpoint to clear it without timeout if Clear on contact with enemies is not set and triggered. This can result in illogical backtracking and means that groups of NPCs moving together each need their own assaultpoint to maintain the illusion.
- A rallypoint can only serve one NPC per assault. If multiple NPCs are required to assault at the same time, each needs their own rallypoint. There may be a solution to this (for instance Squads) but it is not yet documented.
- If enemies are in view of an assaultpoint, they will be seen just before the point is reached and probably calculated using the wrong (previous) settings. To avoid this, try to ensure assaultpoints are always in 'safe' areas.
- Linking and assaultpoint to a rallypoint crashes the game.
Example
This example map contains a single NPC on a linear chain using all the major options available to designers when moving NPCs from assaultpoint to assaultpoint. There are four points, and each is configured differently:
- Clear on contact with enemies is enabled. When the NPC sees the hostiles, it clears out the assaultpoint and continues to 2.
- Clear this point on arrival, UNCONDITIONALLY is flagged. When the NPC reaches this point it clears it regardless of the fact that there are still hostiles in sight and begins to move towards 3.
- Allow diversion is set to No. The NPC will charge towards the assaultpoint without stopping or giving chase. It will however attack enemies in view.
- Allow diversion is set to Yes. The NPC will divert from moving to this point until there are no hostiles visible.
Note that the Metropolice cannot harm the NPC and will not attack you in this example.