|
|
|
|
|
Please take note! For mod developers working with Unreal Tournament 2003, this documentation is meant to be a starting point for your own explorations into UT2003, not a definitive guide. There will be differences between the documentation here and the product in your hands, and you may have to figure out quite a bit for yourself. Check out the Unreal Tournament 2003 page in the Unreal Powered area for links to community sites if you're having problems. UDN is a licensee support site, and cannot provide technical support or game-specific assistance to end users.
|
|
|
|
AIControllers |
|
|
|
|
|
Licensees can log in.
Interested in the Unreal engine? Check out the licensing page.
Questions about UDN itself? Contact the UDN Staff.
|
|
|
|
|
|
|
|
|
Last updated by Chris Linder(DemiurgeStudios) to update for 2226 and to clarify a few points. Original author was Hugh Macdonald (UdnStaff).
The AI Controller classes define how a pawn, or group of pawns, act. The basic AI Controller will look after pawns, or groups of pawns, which are just allowed to wander, or stand in a level. A ScriptedController is used with a ScriptedSequence, to allow a much more detailed script to be put together, detailing exactly what the pawn should do.
The Level contains a linked-list of all the Controllers in the level, so one Controller can work through to find out what else is there.
Most AIController classes are linked to by AIScript actors. In turn, the AIScript is linked to by a Pawn. When the level starts, each Pawn will check to see if it has anything in AIScriptTag - if it does, then it will find the AIScript with that tag, and link to it. The AIScript will then spawn an AIController for each Pawn that links to it.
Some pawns may already have a ControllerClass associated with it. This can be overridden with with AIScript, though.
NOTE: If you link an AIController from a ScriptedSequence, you are not able to change it's properties. This is because you only link to the AIController class, and there is no instance of the controller until the level begins.
ScriptedController and it's subclasses can be selected as the controller for a Scripted Sequence. They will allow the actions to control the pawn.
This is the controller that is used for enemy bots. They can also be controlled with a ScriptedSequence, but when they are released, they will use all the AI that normal bots have.
Ambient Creatures exist on the server, and are the same on all clients.
A herd is made up of a groups of Ambient Pawns, all with the same tag (in the current base UW build, a 'Flappy' is the only AmbientPawn subclass). When a pawn is linked to, the HerdAnimal controller will go through the list of controllers in the level, and find any others which are controlling pawns with the same Tag.
Each herd will have a certain number of dads, moms and infants. Whenever a new pawn is added to the herd, it looks at the number of dads, moms and infants, and picks what it will be appropriately. Each pawn in the herd is also given another member of the herd to follow (the closest to it's position), and each infant is found a mom (the closest mom).
If, at any point, any member of the herd is damaged, then they will warn all other members of the herd, and the entire herd will stampede. This will mean that they will run away from whatever caused them the damage, and will only stop stampeding after they have been out of sight for a certain length of time. Where they move is a combination of staying close to their neighbour, running away from the enemy, and a bit of randomness.
A stampede can also be caused by triggering one of the members of a herd, or by one of them hearing a sound that was not caused by an AmbientCreature.
When not stampeding, a herd will generally wander around, and graze, while staying relatively close together. Infants will always try to stay with their moms.
Note: TransientAmbientCreatures do not work in 2226 because of change in the way zones are rendered. This can easily be fixed by removing line 125 in AmbientCreatureManager.uc. This line reads:
|| (Level.TimeSeconds - Region.Zone.LastRenderTime > 0.5)
Transient Ambient Creatures only exist on the client machine - they are the creatures which make no difference to any game-play, like birds, and bugs, etc.
Transient Ambient Creatures work slightly differently, in the you don't actualy have to place the pawn itself in the level. They are actually controlled by an AmbientCreatureManager (subclass of Info)
The AmbientCreatureManager has the following options:
MaxCreatures | Speaks for itself - the maximum number of creatures that this manager can create. |
TransientCreatures[8] | An array with 8 different TransientAmbientCreature classes that can be created by this manager. |
SpawnRadius | The radius round the manager that creatures can be spawned in. |
TriggerRadius | When the player is within this distance from the manager, it will start spawning creatures. |
When a creature is spawned, and a PredatorType is defined for that creature, there is a small chance that it's predator will be spawned nearby.
There are also two subclasses of AmbientCreatureManager - these are OpenTerrainAmbientCreature and SwampAmbientCreature.
OpenTerrainAmbientCreature | This just has some presets in it. It will create Migrating, Wandering and Circling birds, and two groups of flying bugs. It also has a much larger radius than the default. |
SwampAmbientCreature | This sets up a default of one group of Wandering Birds, and two groups of Flying Bugs. It also allows you to specify how many bugs you want to escort the player (in BugEscort) |
Each controller has a say over a flock of birds (the numbers of which are specified in the code)
Note: Birds are "Abstract" and can not be created directly; you must use a subclass.
A circling flock of birds is between 0 and 3 birds - they will circle with a radius of approximately 600 units.
In a migrating flock of birds, there will be somewhere between 5 and 20 birds. They will be arranged in a delta formation, and will travel in reasonably straight lines.
A flock of wandering birds will be somewhere between 0 and 2. The birds will follow generally random paths, in the reasonable vicinity of their initial position.
All bugs have a SwarmTightness (this is set in the code). This changes slightly every 2 seconds to vary the size of the swarm.
Note: Bugs are "Abstract" and can not be created directly; you must use a subclass.
This will be a group of bugs crawling round on the ground. They will tend to congregate towards other actors.
These are a group of bugs that will fly around the player.
These are the same bugs that are used as an escort, but they will fly around the area randomly.
This will only work under water. It will create a school of 19 fish. They will move pretty much randomly.
Note: FishSchool is "Abstract" and can not be created directly; you must use a subclass.
This Controller will cause its pawn to wander randomly about the level.
This Controller will pick a random pawn in the level and go where it goes.
ScriptedSequenceTutorial - This is a document about how to use ScriptedSequences which are covered only briefly here.
ScriptedSequenceActions - This document talks about the types of actions ScriptedSequences can do.
AIReferenceDocument - This document talks about the technical side of AI. It goes over Controllers, AIControllers, and ScriptedControllers, as well as AIScripts and ScriptedSequences.
|
|