In this chapter all available GB messages and commands will be listed. Currently there are more than one GameBots packages. Some of the commands and messages are not implemented in all packages. The list of packages that support message or command is after message name. Default package for UnrealTournament 2004 is GameBots2004 and default package for UnrealEngine2 Runtime is GameBotsUE2.
Also note the "Connections" - "Bot" means the command or message is supported for bot connections, "Observer" for observer connections and "Server" for control server connection (or shortly control connection). "Observer" connection is not supported in GameBotsUE2 yet.
Message, commands and attribute names are case insensitive. However message and command names are written with upper case letters and attribute names should start with upper case letter.
Asynchronous message. Sent by a server when a game is resumed after it was paused.
Synchronous message. Information about your bot's state.
Unique Id of this self message instance.
Unique Id of this bot.
Human readable bot name.
If we are vehicle just these attr. are sent in SLF: "Id","Vehicle""Rotation", "Location","Velocity ","Name ","Team" ,"Health" "Armor","Adrenaline", "FloorLocation", "FloorNormal".
An absolute location of the bot.
Absolute velocity of the bot as a vector of movement per one game second.
Which direction the bot is facing in absolute terms.
What team the bot is on. 255 is no team. 0-3 are red, blue, green, gold in that order.
Id of the weapon we are holding. This is unique Id of an item in our inventory and is different from the Id of the item we pick up from the ground! We can parse this string to look which weapon we hold. Weapon strings to look for include: "AssaultRifle", "ShieldGun", "FlakCannon", "BioRifle", "ShockRifle", "LinkGun", "SniperRifle", "RocketLauncher", "Minigun", "LightingGun", "Translocator". TODO: Look if this is all.
If the bot is shooting or not.
How much health the bot has left. Starts at 100, ranges from 0 to 200.
How much ammo the bot has left for current weapon primary mode.
How much ammo the bot has left for current weapon secondary mode. Weapon does not have to support sec. fire mode.
How much adrenaline the bot has.
Combined size of high armor and low armor (or small armor). The high and low armor are tracked separately. Low armor is limited to 50 points, while the high armor can have up to 150 points. Both stacks can have a combined size of 150 points as well, so if low armor is already at 50 points, high armor can have 100 points at max.
Also refered to as a "low armor". Ranges from 0 to 50 points.
If we are firing in secondary firing mode.
If we are currently crouched.
If we are currently in walking mode.
Holds current floor location under the bot.
Holds current floor normal under the bot.
Name of the current combo (None if no combo active). Can be xGame.ComboBerserk, xGame.ComboDefensive, xGame.ComboInvis or xGame.ComboSpeed. To trigger combo adrenaline needs to be at 100 (maximum) and no other combo can be active.
Time when the UDamage effect expires. If the number is higher then the current time, it means the bot has UDamage effect active right now.
Name of the current BDI action.
For UE2. Holds left emoticon of the bot, "None" means none set.
For UE2. Holds center emoticon of the bot, "None" means none set.
For UE2. Holds right emoticon of the bot, "None" means none set.
For UE2. Holds the bubble of the emoticon of the bot, "None" means none set.
For UE2. Current played animation of the bot.
Asynchronous message. Sent when the map is changed (we will loose connection to the server for some time).
Name of the new map.
Synchronous message. BombInfo contains all info about the bomb in the BotBombingRun game mode. Is not sent in other game types.
An unique Id for this bomb, assigned by the game.
Current velocity of the bomb. TODO not sure if this actually does smthing
An absolute location of the bomb (Sent if we can actually see the flag).
Id of player/bot holding the bomb. (Sent if we can actually see the bomb and the bomb is being carried, or if the bomb is being carried by us).
The team of the current holder (if any).
True if the bot can see the bomb.
Represents the state the bomb is in. Can be "Held", "Dropped" or "Home".
End of the synchronous batch of MYINV messages - representing the list of items the observed player has.
Asynchronous message. Send when the bot changed weapon. Here we will export the status of the old weapon - of the weapon that was changed. So we can have correct info about weapons in our inventory. This could be a problem without this message because of synchronous batch delay.
Unique Id of the weapon, based on the inventory weapon's name (this is different from the Id of the weapon that can be picked up in the map).
Holding primary ammo of the old weapon (that was changed).
Holding secondary ammo of the old weapon (that was changed)
Class of the weapon in the inventory. Matches InventoryType in the item class (ITC) message.
Asynchronous message. This message represents case, where bot stands at the edge of cliff or somewhere the bot can fall. If the bot has ran, it is already falling. When the bot is walking he can't fall from the cliff, so after receiving this message, he is standing at the edge of the cliff.
Flag for falling, if true, then the bot is already falling.
Current location of the bot.
Synchronous message - sent in synchronous batch (events are cached and then exported in the batch due to performance issues). Maybe another player walking or shooting, maybe a bullet hitting the floor or just a nearby lift going up or down. If the very same sound is exported repeatedly (same sound, same source), it won't be exported more than once per second.
Unique ID of actor making the noise - may be other player or some other object in the game.
What class this actor is - item, projectile, player...
How should bot rotate if it would like to be in the direction of the "noisy" actor.
How far the noise source is.
Start of the player list sent by GameBots (PLR messages).
Info batch message. Starts with SMUT message, ends with EMUT message. Hold information about current mutators active on the server.
Id of the mutator.
Name of the mutator.
Start of list of navigation point neighbours (see INGP message).
Asynchronous message. Sent as a response to ENTER command. Sent if the ENTER command was successfull. Means we are now driving the vehicle. Beware! When in vehicle just command RUNTO with Target specified works for move commands. Any other move commands will cause vehicle to got straight ahead. Also it is not possible to control speed or steering at this moment. Everything is done automaticaly by RUNTO with Target specified.
Id of the vehicle entered.
Type of the vehicle entered. What kind of turret or car.
Location of the vehicle.
Start of the map list - list of all maps available on the server - needed by server control (IMAP messages).
End of list of movers - provides information about the map at the beggining of the communication with the bot.
Start of the path list sent as an response to GETPATH command (IPTH messages).
An Id matching the one sent by client. Allows bot to match answer with right query.
Asynchronous message passing some control message.
Custom type of the message.
Param String 1
Param String 2
Param String 3
Param Integer 1
Param Integer 2
Param Integer 3
Param Double 1
Param Double 2
Param Double 3
Param Boolean 1
Param Boolean 2
Param Boolean 3
Asynchronous message. Sent when the bot lands on the ground after falling. Received also after respawn.
Normal of the plane we have landed on.
Synchronous/asynchronous message. Holds all attributes of item category. There are many item categories in UT2004. This class holds attributes for all of them. When some item category is exported just appropriate attributes are exported with it.
By this class the item is represented in inventory. This is inventory type class.
By this class the item is represented in the map. This is pickup type class.
Category of the item. Can be "Weapon", "Adrenaline", "Ammo", "Armor", "Shield", "Health" or "Other".
For Weapon. True if the weapon is melee weapon (close range).
For Weapon. True if the weapon is sniping weapon (long range).
For Weapon. True if the weapon uses two separate ammos for primary and secondary firing mode.
For Weapon, primary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
For Weapon, primary firing mode. If this mode does splash damage.
For Weapon, primary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
For Weapon, primary firing mode. If the engine recommends to use this splash damage. TODO
For Weapon, primary firing mode. If the this mode is tossing something (projectile) out.
For Weapon, primary firing mode. If this mode can lead the target. TODO
For Weapon, primary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
For Weapon, primary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
For Weapon, primary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
For Weapon, primary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
For Weapon, primary firing mode. Fire rate in seconds. How fast the weapon fires if we are firing continuosly.
For Weapon, primary firing mode. Refire rate for bots in seconds. When we stop firing how long does it take to resume firing again.
For Weapon, primary firing mode. Needed amount of ammo to fire this weapon mode once.
For Weapon, primary firing mode. If the weapon mode has clips, their size. TODO
For Weapon, primary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
For Weapon, primary firing mode. Double, rotator units. No relation to aim error.
For Weapon, primary firing mode. Type of spreading. TODO
For Weapon, primary firing mode. TODO
For Weapon, primary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
For Ammo or for Weapon, primary firing mode. Class of the ammo.
For Ammo or for Weapon, primary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
For Ammo or for Weapon, primary firing mode. Max amount of ammo of this type we can have in our inventory.
For Ammo or for Weapon, primary firing mode. TODO
For Ammo or for Weapon, primary firing mode. Type of the damage. Maybe the same string for all damage.
For Ammo or for Weapon, primary firing mode. If the armor is effective against this damage type.
For Ammo or for Weapon, primary firing mode. If this damage kills instantly.
For Ammo or for Weapon, primary firing mode. If this damage is special. TODO
For Ammo or for Weapon, primary firing mode. If this damage detonates goops. TODO
For Ammo or for Weapon, primary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
For Ammo or for Weapon, primary firing mode. If this damage adds something to Panws momentum. TODO
For Ammo or for Weapon, primary firing mode. Class of the projectile this ammo, weapon spawns.
For Ammo or for Weapon, primary firing mode. How much damage this projectile does.
For Ammo or for Weapon, primary firing mode. How much maximum damage this projectile does.
For Ammo or for Weapon, primary firing mode. How much minimum damage this projectile does.
For Ammo or for Weapon, primary firing mode. Default projectile speed.
For Ammo or for Weapon, primary firing mode. Maximum projectile speed.
For Ammo or for Weapon, primary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
For Ammo or for Weapon, primary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
For Ammo or for Weapon, primary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
For Ammo or for Weapon, primary firing mode. Maximum effective distance. TODO
For Weapon, secondary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
For Weapon, secondary firing mode. If this mode does splash damage.
For Weapon, secondary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
For Weapon, secondary firing mode. If the engine recommends to use this splash damage. TODO
For Weapon, secondary firing mode. If the this mode is tossing something (projectile) out.
For Weapon, secondary firing mode. If this mode can lead the target. TODO
For Weapon, secondary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
For Weapon, secondary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
For Weapon, secondary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
For Weapon, secondary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
For Weapon, secondary firing mode. Fire rate in seconds.
For Weapon, secondary firing mode. Refire rate for bots in seconds. TODO
For Weapon, secondary firing mode. Needed amount of ammo to fire this weapon mode once.
For Weapon, secondary firing mode. If the weapon mode has clips, their size. TODO
For Weapon, secondary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
For Weapon, secondary firing mode. Double, rotator units. No relation to aim error.
For Weapon, secondary firing mode. Type of spreading. TODO
For Weapon, secondary firing mode. TODO
For Weapon, secondary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
For Ammo or for Weapon, secondary firing mode. Class of the ammo.
For Ammo or for Weapon, secondary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
For Ammo or for Weapon, secondary firing mode. Max amount of ammo of this type we can have in our inventory.
For Ammo or for Weapon, secondary firing mode. TODO
For Ammo or for Weapon, secondary firing mode. Type of the damage. Maybe the same string for all damage.
For Ammo or for Weapon, secondary firing mode. If the armor is effective against this damage type.
For Ammo or for Weapon, secondary firing mode. If this damage kills instantly.
For Ammo or for Weapon, secondary firing mode. If this damage is special. TODO
For Ammo or for Weapon, secondary firing mode. If this damage detonates goops. TODO
For Ammo or for Weapon, secondary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
For Ammo or for Weapon, secondary firing mode. If this damage adds something to Pawns momentum. TODO
For Ammo or for Weapon, secondary firing mode. Class of the projectile this ammo, weapon spawns.
For Ammo or for Weapon, secondary firing mode. How much damage this projectile does.
For Ammo or for Weapon, secondary firing mode. How much maximum damage this projectile does.
For Ammo or for Weapon, secondary firing mode. How much minimum damage this projectile does.
For Ammo or for Weapon, secondary firing mode. Default projectile speed.
For Ammo or for Weapon, secondary firing mode. Maximum projectile speed.
For Ammo or for Weapon, secondary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
For Ammo or for Weapon, secondary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
For Ammo or for Weapon, secondary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
For Ammo or for Weapon, secondary firing mode. Maximum effective distance. TODO
If this item is some ammo or health pack, here we can find out how much of the attribute this item will add.
If this item is health. True if super health.
End of list of items - provides informations about items that are present at the map.
Asynchronous message. The bot the observer has been observing left the game. The observer won't get any updates after this message.
Start of mutator list which is sent after NFO message (during so-called handshake).
Asynchronous message. A message sent at the beginning of establishing the connection.
Name of the Unreal Tournament version these GameBots are running on (UT2004, UE2, UDK, UT3...).
Version number of GameBots.
Synchronous message. FlagInfo contains all info about the flag in the CTF game mode. Is not sent in other game types.
An unique Id for this flag, assigned by the game.
An absolute location of the flag (Sent if we can actually see the flag).
Id of player/bot holding the flag. (Sent if we can actually see the flag and the flag is being carried, or if the flag is being carried by us).
The owner team of this flag.
True if the bot can see the flag.
Represents the state the flag is in. Can be "Held", "Dropped" or "Home" (note that the first letter does not have to be in upper case!).
Asynchronous message. When the end of the simulation - ergo game, ergo map - occurs, this message is sent, so agents can disconnect.
Asynchronous message. Sent as a response to ENTER command. Sent if the ENTER command was unsuccessfull because the vehicle is locked for our bot.
Id of the vehicle, which we cannot enter, because it is locked.
Type of the vehicle we wanted to enter. What kind of turret or car.
Location of the vehicle.
End of the player list sent by GameBots (see PLR message).
Start of the synchronous batch of INV message - representing the list of items which is sent at the beginning of the connection to GameBots.
Asynchronous message. You get this every time the bot gets respawned. When the match is not started yet and you connect to the server, there is delay in sending this message, it will be sent when the match will start, although the bot will be spawned in the game for a few seconds at that time.
End of list of navigation point neighbourss (see INGP message).
Asynchronous message. Sent when the observed player picks up usable object.
Name of the picked usable object.
Location of the usable object.
Asynchronous message. Sent after succesfull init command (so usually just once). Holds many attributes of the bots like speed, id starting and max health, etc. Some attributes are not used due to GameBots mechanics.
A unique unreal Id of the new bot.
Bot will always start with this health amount (usually 100).
Full health of the bot (usually 100).
Maximum health of the bot (default 199).
Amount of adrenaline at the start. Usually 0.
Maxium amount of the adrenaline. Usually 100 (this can trigger the combos).
Starting strength of the bot armor (usually 0).
Maximum strength of the bot armor (usually 150).
Maximum amount of succesing jumps. Currently limited to double jump in GB.
Damage scaling for this bot. (he will deal reduced damage depending on the setting).
Groundspeed of the bot (on the ground). Default 440.
Waterspeed of the bot (in the water).
AirSpeed of the bot (in the air).
Ladderspeed of the bot (on the ladder).
Accelartion rate of this bot. How fast he accelerates.
Bot Jump's Z boost.
Not used in GB.
Max fall speed of the bot.
Dodge speed factor.
Dodge jump Z boost of the bot.
How well can be the bot controlled in the air (ranges from 0 to 1).
Asynchronous message. Sent when the observed player starts shooting.
Whether using the alternate firing mode.
Info batch message. A series of pathnodes in response to a GETPATH command from the client. Starts with SPTH, ends with EPTH. Represents some path in the map (sequence of traversable navigation points).
Unique Id of one navigation point in the path (well it should be navigation point - safer is to use location).
Location of one navigation point in the path.
Synchronous message. This message signalizes end of synchronous batch.
Time, when the message was sent - intern UT time.
Sent only if new synchronous batch procotol is used (NewSelfBatchProtocol attribute in INIT message). If true it means this sync. batches contains also visiblity information - PLR, INV, PRJ messages... If false, it means that only SELF message is in this synchronous batch.
Asynchronous message. Sent for bot connection. First message from UT2004, part of handshake.
If it is true, connection will be terminated afterwards.
Name of the Unreal Tournament version these GameBots are running on (UT2004, UE2, UDK, UT3...).
Version number of GameBots.
Synchronous message - sent in synchronous batch (events are cached and then exported in the batch due to performance issues). You hear someone pick up an object from the ground. If the very same sound is exported repeatedly (same sound, same source), it won't be exported more than once per second.
Unique Id of an object picked up.
Class of the picked up actor.
How should bot rotate if it would like to be in the direction of the pickuped actor
How far the noise source is.
Synchronous message. Contains the info about team score.
Message identifier.
Team identifier.
The score of the team (can be some special measurement that differs from game type to game type - number of stolen flags in CTF game, number of team frags in TeamGame, etc.)
Asynchronous message. A boolean result of a checkreach call.
An Id matching the one sent by client. Allows bot to match answer with right querry.
True if the bot can run here directly, false otherwise.
Exact location of bot at time of check.
Synchronous message. Contains the results of automatically casted rays. One ATR message is for one casted ray. New automatically casted rays can be defined by ADDRAY command and removed by REMOVERAY command.
An Id for this ray (should be unique), assigned by the user when adding ray.
Location from which the ray is emitted.
Location to which the ray is sent.
True if it is a fast trace, false if not (fast trace is a bit faster version of UT2004 ray trace - but provides us with less information - just true/false if we hit something on the way or not).
If we should correct ray directions accoring floor normal. Note: Has issue - we can't set set rays up or down when correction is active.
True if it hit something, false if not.
Vector with normal of the plane we have hit (not sent if FastTrace is True).
Vector with location of the collision (not sent if FastTrace is True).
If we traced also actors with this ray (actors – moving things in a game – bots, players, monsters, pickup …) (only if NOT using FastTrace)
Id of the actor we have hit. (Sent if FastTrace is False and TraceActors is True).
Asynchronous message. Some other player died - reporting his death. Additional information about DamageType - DeathString and so are exported just if we can see the dying player.
Unique Id of the dead player.
Unique Id of player that killed if any (the victim might have walked off a ledge).
The UT Pawn that was killed - support for vehicles. If someone destroyes vehicle we will get it here (Id will be none and in KilledPawn we will have destroyed vehicle).
A string describing what kind of damage killed the victim.
String describing this type of death.
Name of the weapon that caused this damage.
If this damage is causing the player to burn. TODO
If this damage was caused by world - falling into lava, or falling down.
If the damage is direct. TODO
If this damage was caused by bullet.
If this damage was caused by vehicle running over us.
Asynchronous message. Comes when we have picked up an item. This does not mean the item will be added to our inventory (for example Adrenaline or Health pickup just raise our stats).
Unique Id of the item. This Id represents just item on the map, not in our inventory.
Unique Id of the item in our inventory - use this Id to do changeweapons etc. Unreal has different Ids for items in map and actual item in bot's inventory. If the item does not go into our inventory nothing will be here (null).
Location of the item.
If this item is some ammo or health pack, here we can find out how much of the attribute this item will add. Works also for weapons - will hold primary ammo amount.
Only sent if this item is a weapon. Holds secondary ammo amount.
Class of the item (e.g. xWeapons.FlakCannonPickup).
Whether it is a regular item or dropped by player or bot.
Asynchronous message. A player joined the game.
Unique Id of the player.
Name of the player.
Asynchronous message. Sent when we get new weapon or ammunition for weapon we do not have yet. Sent just once per weapon type or per new ammunition type (notify new object in our inventory, NOT pickup). The Id of the object (Inventory Id) here is different from the object that is lying on the ground and represents this item in the map (Pickup id). If you want to listen to every item pickup use ItemPickedUp message!
A unique Id for this inventory item, assigned by the game. Unique, but based on a string describing the item type.
A string representing type (inventory type) of the object.
We get this item if we pick up this pickup class in the map.
If the item is a weapon, contains information whether this weapon is good for sniping.
If the item is a weapon, contains information whether this weapon is a melee weapon.
If the item is a weapon, contains information how much primary ammo the weapon initial has.
If the item is a weapon, contains information how much primary ammo the weapon may have.
If the item is a weapon, contains information how much secondary ammo the weapon initial has.
If the item is a weapon, contains information how much secondary ammo the weapon may have.
Tells you that the passed password is OK.
Asynchronous message. Bot hurt another player. Hit them with a shot.
Unique Id of the player hit.
Amount of damage done.
A string describing what kind of damage.
Name of the weapon that caused this damage.
If this damage is causing our bot to burn. TODO
If the damage is direct. TODO
If this damage was caused by bullet.
If this damage was caused by vehicle running over.
Sent during handshake telling you the server is protected by the password and that you have to provide one to be able to communicate with it.
IP:Port who has blocked the server
Asynchronous message. Sent when the game is being restarted by the control server. Two messages arrive. One notifying the restart has been started and second notifying the restart has ended.
Game restart sequence has been started.
Game restart has been finished.
Synchronous message. Movers can be doors, elevators, or any other chunk of architecture that can move. They generally need to be either run into, or activated by shooting or pressing a button. We are working on ways to provide bots with more of the information they need to deal with movers appropriately.
A unique Id of this mover assigned by the game.
Location of the mover.
If the mover is in the field of view of the bot.
True if the mover needs to be shot to be activated.
String class of the mover.
Does the mover move right now?
Velocity vector.
How long the mover moves, when it becomes triggered, before it stops.
How long the mover stands still when it reaches its destination position. After this time, the mover returns back to its initial position.
Base position of the mover.
Base rotation of the mover.
Delay before starting to open (or before lift starts to move).
Name of the state Mover is currently in. Can be used to determine the type of the mover.
Navigation point marking this mover. We can parse this Id to get information about type of the mover. Marker Id contains "lift" string if it is a lift, "door" string if it is a door, etc.
End of list of item categories - provides informations about items that are present at the map.
Asynchronous message. Recieved message from team chat channel.
Unique UnrealId of the sender.
Human readable name of the sender.
True if this message was sent by control server - in that case the id will be id of control server (that has no physical appearance in the game).
A human readable message sent by a team mate in the game on the private team channel.
End of list of mutators - provides information about the map mutators at the beggining of the communication with the bot (after NFO message).
Asynchronous message. Bot changed weapon. Possibly as a result of a command sent by you. Here we will get the new weapon - the weapon the bot has changed to.
Unique Id of new weapon, based on the inventory weapon's name (this is different from the Id of the weapon that can be picked up in the map).
Holding current primary ammo of the new weapon.
Holding current secondary ammo of the new weapon.
A string representing the type of the weapon.
Asynchronous message. Weapon has been thrown out (response to THROW command).
Inventory Id of the weapon thrown out.
Asynchronous message. Message sent when the bot configuration changed - each agent has a lot of parameters affecting his state in the environment. See each property for the details.
Id of this config message. This Id is generated from BotId, string "_CONFCH" is added at the end.
Unique Id of the bot.
True if we have to spawn the bot manually after each death
True if the bot is using auto ray tracing (is provided with synchronous ATR messages). See ATR messages for more details.
The bot's name.
Bots default speed will be multiplied by this number. Ranges from 0.1 to 2 (default, can be set in ini in [GameBots2004.RemoteBot] MaxSpeed).
Bot rotation rate. Default rotation rate is: (Pitch=3072,Yaw=60000,Roll=2048) and may be configured in ini file in [GameBots2004.RemoteBot] DefaultRotationRate. (pitch - up/down, yaw - left/right, roll - equivalent of doing a cartwheel)
If bot is invulnerable (cannot die) or not.
The delay between two self message synchronous batches (can range from 0.01 to 2 seconds). Will be used only if NewSelfBatchProtocol attribute is set to true in INIT message.
The delay between two synchronous batches containing vision updates (can range from 0.1 to 2 seconds). If NewSelfBatchProtocol attribute is set to true in INIT message, more batch messages containing only SELF message will arrive between two vision update batches (containing PLR,PRJ,INV.. messages).
Holds information how many times faster is exported location update message (UPD) compared to sync. batch, e.g. when this multiplier is set to 5 and vision time is 250 ms, UPD message will arrive every 50 ms.
If some additional debug information will be shown in the UT2004 server console window.
If true an actor visualizing the location the bot is actually looking at will appear in the game.
if the GB should draw lines representing the auto ray traces of the bot (for more information see ATR message).
It informs if sending of all GB synchronous messages is enabled or disabled.
It enables/disables automatic pickup of the bot. If true the items can be picked up through PICK command.
Name of current BDI action.
Asynchronous message. Response to USE (FactoryUse) command.
If we have successfully used the factory.
If success is false, the reason why we couldn't use a factory will be here.
Asynchronous message. Bot bumped into another actor.
Unique Id of the actor we have bumped to (actors include other players or bots and other physical objects that can block your path).
Location of thing you've rammed into.
"Synchronous" message. Arrives outside sync. batch. The frequency of this message is configured through locUpdateMultiplier variable in GameBots2004.ini file. It gets exported N times faster than regular sync. batch where N equals locUpdateMultiplier. Holds information about Location, Velocity and Rotation of the bot and should help us to create more robust navigation.
An absolute location of the bot.
Absolute velocity of the bot as a vector of movement per one game second.
Which direction the bot is facing in absolute terms.
Aynchronous message. Response of the CHANGETEAM command.
Sent only for ControlServer connections, so they know which bot changed the team.
If true team change was succesfull (it won't be succesfull if we are changing to a team we already are in).
This is the team we wanted to change to (0 for red,1 for blue, etc..).
Asynchronous message. Sent as a response to STOPREC command. The recording of the demo on the server was stopped.
Synchronous message. Holds vehicles we see. Id for vehicles doesn't work, so this message is without Id. We can join vehicles by ENTER command if we are close enough - ussually 100 ut units or less. Note: Vehicle support is in aplha testing right now.
Unique Id of the vehicle or vehicle part.
Which direction the vehicle is facing in absolute terms.
An absolute location of the vehicle within the map.
Absolute velocity of the vehicle as a vector of movement per one game second.
If the vehicle is in the field of view of the bot.
What team the vehicle is on. 255 is no team. 0-3 are red, blue, green, gold in that order.
How much health the vehicle has left. Ranges from 0 to x, depending on the vehicle type.
How much the vehicle has left. Note: This may be 0 all the time. Maybe the vehicles are not supporting armor.
Unique Id of the driver - if any.
If the vehicle is locked just for its current team.
Class of the vehicle. If it is a car, turret etc.
Info batch message. Start with SNGP, ends with ENGP. Sent for each INAV message at the beginning of the communication. Holds information about NavPoint neighbours. This way the reachability graph can be exported from UT2004. You should interpret this as a DIRECTED EDGE of the navpoint GRAPH that describes the the edge from FromNavPoint to ToNavPoint.
Unique Id of the NavPoint the link is leading to (end of the link). Always identical to ToNavPoint.getStringId().
Holds information about the path from the NavPoint to its neighbour that is represented by this message. TODO: see reachspecs on UnrealWiki.
Maximum collision radius of the path between navigation points. Bot bigger then this cannot use this path.
Maximum collision height of the path between navigation points. Bot bigger then this cannot use this path.
TODO: mystery - we haven't figure it out so far. Can be: a) z-coord of the translocator target b) translocator z-force for the translocator shot
TODO: mystery - we haven't figure it out so far. Can be: where you should appear when successfully translocated or where to aim at
Whether the translocator is the only way how to traverse this navigation edge.
Whether you need to double jump to get to the neighbour navpoint.
TODO: mystery how to interpret
TODO: mystery how to interpret
TODO: mystery how to interpret
TODO: mystery how to interpret
Synchronous message. Alive message are for confirmation, that the connection is still working. They are sent periodically with usual period of one second (this can change depending on the configuration of ControlServer)
Game time when this message was send.
After receiving READY command, GameBots start to export information about the game. These information are enveloped by HandShakeStart and HandShakeEnd messages.
Asynchronous message. Sent when the observed player jumps.
Whether this is a double jump.
Start of mover list which is sent at the beginning of the communication (MOV messages) - provides informations about the map to the bot at the beggining of the connection (during so-called handshake).
Tells you that the passed password is WRONG. The communication is closed after this.
Info batch message. Starts with SMAP message, ends with EMAP message. Hold information about available maps on the server (maps to which we can change the game).
Name of one map in map list on the server.
An object in the observed player's inventory.
Unique Id of the item. This Id represents the item in the inventory.
If this item is a weapon, this holds the amount of primary ammo.
If this item is a weapon, this holds the amount of secondary ammo.
If this item is ammo or armor, this holds the amount of the item the player has.
Class of the item (e.g. xWeapons.FlakCannonPickup).
Synchronous message. Contains information about other players in the game, like their current velocity, position, weapon and reachability. Only reports those players that are visible. (within field of view and not occluded).
Unique Id of the player.
Exported just for control server. Holds jmx address we need to connect to when we want to debug our bot.
Human readable name of the player.
Atomic action this bot is doing (BDI).
If the player is in the field of view of the bot.
Which direction the player is facing in absolute terms.
An absolute location of the player within the map.
Absolute velocity of the player as a vector of movement per one game second.
What team the player is on. 255 is no team. 0-3 are red, blue, green, gold in that order.
Class of the weapon the player is holding. Weapon strings to look for include: "AssaultRifle", "ShieldGun", "FlakCannon", "BioRifle", "ShockRifle", "LinkGun", "SniperRifle", "RocketLauncher", "Minigun", "LightingGun", "Translocator". TODO: Look if this is all.
True if the bot is crouched.
0 means is not firing, 1 - firing in primary mode, 2 - firing in secondary mode (alt firing).
For UE2. Holds left emoticon of the bot, "None" means none set.
For UE2. Holds center emoticon of the bot, "None" means none set.
For UE2. Holds right emoticon of the bot, "None" means none set.
For UE2. Holds the bubble of the emoticon of the bot, "None" means none set.
For UE2. Current played animation of the bot.
Synchronous message. Contains the info about player score.
Unique Id of the player.
Number of player frags (how many times the player killed other players) or number of victory points (player frags + some special measurement that can differ from game type to game type).
Number of players deaths.
Asynchronous message. Bot changed zones. Entire bot now in new zone.
Id of a zone entered.
Synchronous message. Begin message signalizes start of synchronous batch. In the batch are send information about visible navpoints, game status, items and so on.
Timestamp form the GameBots.
Sent only if new synchronous batch procotol is used (NewSelfBatchProtocol attribute in INIT message). If true it means this sync. batches contains also visiblity information - PLR, INV, PRJ messages... If false, it means that only SELF message is in this synchronous batch.
Asynchronous message. We have collided with a wall. Note it is common to get a bunch of these when you try to run through a wall or are pushed into one by gunfire or something.
Id of the wall we have hit (level geometry).
Normal of the wall bot collided with.
Absolute location of bot at the time of impact.
Asynchronous message. The observed player used a combo.
Holds the class name of the desired adrenaline combo (can be xGame.ComboBerserk, xGame.ComboDefensive, xGame.ComboInvis or xGame.ComboSpeed).
Synchronous/asynchronous message. An object on the ground that can be picked up.
Unique Id of the item. This Id represents just item on the map, not in our inventory.
Id of the navpoint where the item is laying. If null - the item was dropped by the bot or another player.
If the item is in the field of view of the bot.
Location of the item.
If this item is some ammo or health pack, here we can find out how much of the attribute this item will add.
Class of the item (e.g. xWeapons.FlakCannonPickup).
Whether it is regular item or one dropped by some bot (usually during dying). Items that are not dropped usually respawns itself (depends on the game settings) while those that are dropped may be taken only once.
Asynchronous message. This bot has been damaged.
Amount of damage taken.
A string describing what kind of damage.
Name of the weapon that caused this damage. Not sent right now.
If this damage is causing our bot to burn. TODO
If this damage was caused by world - falling into lava, or falling down.
If the damage is direct. TODO
If this damage was caused by bullet.
If this damage was caused by vehicle running over us.
Id of the player who is damaging the bot, filled only if instigator is in the field of view of the bot.
Asynchronous message. Response of the FASTTRACE command. Note that trace commands are computationally expensive.
An Id matching the one sent by client. Allows bot to match answer with right query.
Location from which the ray is emitted.
Location to which the ray is sent.
True if it hit something, false if not.
Asynchronous message. Sent as a response to REC command. The recording of the demo on the server was started.
Start of the synchronous batch of ITC messages - representing the list of item categories which is sent at the beginning of the connection to GameBots.
End of list of navigation points - provides information about the map at the beggining of the communication with the bot.
Asynchronous message. Sent when the observed player interacts with usable object.
Name of the usable object.
Location of the usable object.
Code of the action performed.
Name of the action performed.
Asynchronous message. Sent as response to READY command. Information about the game. What type of game is it going to be, number of teams, maximum size of teams etc.
What you are playing (BotDeathMatch, BotTeamGame, BotCTFGame,BotDoubleDomination).
Name of map in game.
If true respawned weapons will stay on the ground after picked up (but bot cannot pickup same weapon twice).
Maximum time game will last (if tied at end may goe to "sudden death overtime" - depends on the game type).
Number of kills needed to win game (BotDeathMatch only).
Number of points a team needs to win the game (BotTeamGame, BotCTFGame, BotDoubleDomination).
Max number of teams. Valid team range will be 0 to (MaxTeams - 1) (BotTeamGame, BotCTFGame, BotDoubleDomination). Usually there will be two teams - 0 and 1.
Max number of players per side (BotTeamGame, BotCTFGame, BotDoubleDomination).
Location of the base spawning the red flag (team 0) (BotCTFGame).
Location of the base spawning the blue flag (team 1) (BotCTFGame).
Location of the first dom point (BotDoubleDomination).
Location of the second dom point (BotDoubleDomination).
If the game is paused - nobody can move.
If the game is paused just for bots - human controlled players can normally move.
Sent only in BotScenario game type. Location of the factory.
Sent only in BotScenario game type. Radius of the factory.
Sent only in BotScenario game type. Location of the goal point where UDamagePack should be taken.
Sent only in BotScenario game type. Radius of the disperser point.
Sent only in BotScenario game type. How much adrenaline we need to activate the factory.
Sent only in BotScenario game type. Pickup class our factory spawns when used properly. Item will be spawned at the bot's location.
Both asynchronous and synchronous message. Incoming projectile that we can see.
Unique Id of the projectile.
Estimated time till impact.
Which direction projectile is heading to -> orientation vector.
Current location of the projectile.
Current velocity vector of the projectile.
Current speed of the projectile.
Possition of the origin, when combined with direction can define the line of fire.
If the projectile has splash damage, how big it is – in ut units.
The class of the projectile (so you know what is flying against you).
The class of the projectile (so you know what is flying against you).
Asynchronous message. Message sent when a player leaves the server.
Unique Id of the player who left.
The name of the player.
Asynchronous message. Whenever we get new adrenaline - by pickup or by killing someone.
Amount of adrenaline gained.
Start of the synchronous batch of MYINV messages - representing the list of items the observed player has.
tAsynchronous message. Recieved message from global chat channel
Unique UnrealId of the sender.
Human readable name of the sender.
True if this message was sent by control server - in that case the id will be id of control server (that has no physical appearance in the game).
A human readable message sent by another player in the game on the global channel.
Asynchronous message. This bot has died.
Unique Id of player that killed our bot if any (may have walked off a ledge).
A string describing what kind of damage killed the bot.
String describing this type of death.
Name of the weapon that caused this damage.
If this damage is causing our bot to burn. TODO
If this damage was caused by world - falling into lava, or falling down.
If the damage is direct. TODO
If this damage was caused by bullet.
If this damage was caused by vehicle running over us.
Asynchronous message. Some part of the bot body changed the zone.
Id of the zone entered.
Zone velocity (?).
Gravity in this zone.
Friction of the floor.
Friction of the fluid.
Terminal velocity (?).
If this zone is a water.
True or false if we get some damage when we stay in this zone.
If this zone kills most of the actors instantly.
Amount of damage we will suffer per second if we stay in this zone.
Type of the damage in this zone.
If the inventory is allowed here.
If this velocity zone should impart velocity to projectiles and effects.
Players can't take damage in this zone.
End of list of maps (see IMAP message).
Asynchronous message. A message sent at the beginning of establishing the control connection.
Name of the Unreal Tournament version these GameBots are running on (UT2004, UE2, UDK, UT3...).
Version number of GameBots.
Response to the PING command.
Timestamp from the GameBots.
Synchronous message - however only NavPoints marking item pickup locations are exported synchronously. Other NavPoints are not exported synchronously at all, even if the bot can actually see them (but note that ALL NavPoints are exported in the handshake between bot and the server). Exporting NavPoints synchronously took a lot of UT server resources with limited information gain (in Pogamut there is now available visibility matrix holding static information which points can be seen from other points). NavPoint carries information about UT navigation point - location, paths and some additional information are stored there (if it is an ambush point, or sniper point, etc.).
A unique Id of this navigation point assigned by the game.
Location of navigation point.
Velocity of the navigation point (if the navigation point is currently moving). Not sent at the moment.
If the point is in the field of view of the bot.
Unique Id of the respawned item (the item respawns at this point). Not sent if point is not an inventory spot. Sent only in HandShake.
Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
True if the item is spawned at the point. Not sent if point is not an inventory spot.
True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
If this is an inventory spot (item is respawned at this point).
If this is a player start (players and/or bots are respawned at this point).
Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
If this point marks a DominationPoint (for BotDoubleDomination game).
Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point.
If this point marks a door mover.
If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
If this point marks a lift exit (used to mark exit point of a lift mover).
If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
If this point marks a jump spot (a special device that causes the bot to jump high or far).
If this point marks a jump pad (a special device that causes the bot to jump high or far).
If this point marks a jump destination - some place that can be reached by some special jump.
If this point marks a teleport.
If the type is AIMarker. The rotation the bot should be facing, when doing the action specified by AIMarker. Sent only in HandShake.
Some ambush point, where is good chance to intercept approaching opponents. Sent only in HandShake.
Point good for sniping. Sent only in HandShake.
Class of the weapon that should be prefered when using this point for AIMarker specified action. Sent only in HandShake.
Asynchronous message. Player selected an object in the environment in PlayerMousing state (by pressing ALT + SHIFT to switch to this state).
Unique Id of the player that this event is for.
Name of the player that this event is for.
Id of the actor the player selected (actors include other players or bots and other physical objects that can block your path and even level geometry actors). Will be "None" if nothing was selected (or actor was deselected).
Location of the actor the player selected. Sent only if some object selected.
Location of the hit point that we have selected this actor through. Sent only if some object selected.
Asynchronous message. Sent when the observed player spawns usable object.
Name of the picked usable object.
Location of the usable object.
End of the path list sent as an response to GETPATH command (IPTH messages).
Start of navigation point list which is sent at the beginning of the communication (NAV messages) - provides informations about the map to the bot at the beggining of the connection (during so-called handshake).
Asynchronous message. Sent by the server when the game is paused - for bots or overall.
Aynchronous message. Response to TRACE command.
An Id matching the one sent by client. Allows bot to match answer with right query.
Location from which the ray is emitted.
Location to which the ray is sent.
True if it hit something, false if not.
Normal vector to the trace ray in the point of hit.
Point of the hit.
Id of the thing we have hit. May be other player or some item or level geometry.
True if we are tracing also actors in the game (players, items). False if we are tracing just level geometry.
Asynchronous message. Sent when the observed player stops shooting.
Whether using the alternate firing mode.
After receiving READY command, GameBots start to export information about the game. These information are enveloped by HandShakeStart and HandShakeEnd messages.
Will spawn an actor in the game specified by Type (holds the class of the actor). Be carefull with what you spawn and where you spawn it. Possible use - for some additional inventory spawns.
Location where the actor will be spawned.
Initial rotation of the actor.
Holds the desired actor class (e.g. xWeapons.FlakCannonPickup).
Will change map to MapName - map must exist on server (won't be tested), will send MAPCHANGE message. When map change occurs all connections to the server will be shutted down.
Name of the new map.
Requests the INAV info batch messages (will be sent as response).
Requests the IINV info batch messages (will be sent as response).
You can run all console command by this.
The actual console command.
Start firing your weapon (until receives STOPSHOOT command, or run out of ammo or die).
Location you want to shoot at.
The unique Id of your target. If you specify a target, and it is visible to you, the server will provide aim correction and target leading for you. If not you just shoot at the location specified.
If you send True to this you will alt fire instead of normal fire. For normal fire you don't need to send this argument at all.
Configures various attributes of the game.
When set to true, the game state will be restarted (all scores reset to 0 and all players and bots will be restarted). This does not affect Unreal native bots! Note that the restart is then announced by GameRestarted message and when finished another GameRestarted message is sent to mark the end.
Message that will be displayed in the middle of the HUD.
Time the displayed message will stay on the HUD.
Add custom ray for automatic ray tracing. If you send Id = Default, all rays will be erased and default set of rays will be loaded (straight ahead (1,0,0) with 250 length, 45 degrees left (1,–1,0) with 200 length, 45 degrees right (1,1,0) with 200 length). This set of rays is also loaded by default. If you want to change existing ray, just support its Id in ADDRAY command along with new parameters. Direction of the rays work as follows. Bot is looking to x axis, that means if I want ray straight ahead I specify some vector on positive x axis (vectors in unreal are specified by (x,y,z) so it would look like this (1,0,0) or this (123,0,0) – numbers doesn't matter, its about direction - vectors will be normalized). If I want ray behind it would be (–1,0,0). 90 degrees right (0,1,0) etc.
User set Id of the ray, so the ray can be identified.
Vector direction of the ray (it will be relative - added to the vector, where the bot is looking, also takes into account angle of the floor the bot is standing on).
Specifies the length of the ray (in UT units).
True if we want to use FastTrace function instead of Trace function (a bit faster but less information provided - just information if we hit something or not).
If we should correct ray directions accoring floor normal. Note: Has issue - we can't set set rays up or down when correction is active.
If we want to trace also actors – bots, monsters, players, items. False if we want to trace just level geometry.
Sets the password for Bot and control connections. If the password is set the initiation of GB communication is changed to this: 1) A ---> GB sends HELLO message 2) B <--- user sends READY 3) C ... if the server is protected by pass: 3.a) C1 ---> GB sends PASSWORD {BlockedByIP="ip adress with port of the blocker (195.113.12.3:3001)"} 3.b) C2 <--- user sends password ( PASSWORD {Password pass}) ... if correct 3.c) C3 ---> GB sends PASSWDOK and info batch messages, user can continue normally .... if the password is wrong 3.d) C4 ---> PASSWDWRONG and connection ends Note: If the user knows that server is passworded he can use PASSWORD {Password pass} command instead of READY, and will be checked and sent info batch messages immediately
Holds the password.
Only command that is able to move vehicles. Turn towards target specified and move directly to its destination. If there is an obstacle between target and current position, you will hit it on your way to target (no obstacle avoidance).
The unique id of a NavPoint, Mover or item (beware, not all of the items have unique id). Recommended is to specify NavPoint Id as it is always unique. Won't work with player IDs.
The bot will start moving towards FirstLocation. After reaching it will continue to SecondLocation (no delay). If no SecondLocation specified, the movement will end at FirstLocation point. You can specify some location or object you will be facing during the movement (if none specified, the bot will start looking towards its destination point). Object is specified by UnrealId. Player Ids will work, all NavPoints Ids and Movers. Respawned items should work too, but not all of the items have unique Id, thus item Ids are not recommended.
The bot will start moving to this location first. If not specified, the bot won't move (even if SecondLocation is specified).
After reaching FirstLocation, the bot will start moving to location specified here. If not specified the movement will quit at FirstLocation point.
Here you can specify UnrealId of the object you want to face during movement (typically enemy player you want to shoot at). Player Ids will work, all NavPoints Ids, Movers and some of the items (with unique Id). This attribute is parsed before FocusLocation attribute and if set FocusLocation attribute will be ignored.
Here you can specify location you want to face during movement. This attribute is parsed after FocusTarget attribute and will be ignored if FocusTarget is set.
Configures various attributes of the observer. You can include several of the parameters. The state of options you don't specify will remain unchanged.
The frequency (in seconds) you will receive updates from the observer.
The frequency (in seconds) you will receive updates from the observer. Same as UpdateTime.
Whether to send game-related messages with every update. Affects the following messages: NFO, PLR.
Whether to send messages about the observed player with every update. Affects the following messages: SLF, MYINV.
Whether to send messages about what the observed player sees with every update. Affects the following messages: PLR, INV, NAV, MOV, PRJ, VEH.
Whether to send messages about special objects on the map with every update. Affects the following messages: FLG, BOM, DOM.
Toggles sending all messages with every update. You can still receive the messages by asking for them using the commands GAME, SELF, SEE, SPECIAL and ALL.
Whether to send asynchronous messages, such as HIT or AIN. Note that if you turn this off you will not be able to receive these messages at all.
Will crouch/uncrouch the bot. If crouched you cannot jump. If killed, this will be reset.
True or false to crouch or unrouch.
Will shutdown the connection and potentialy kill and remove the bot from a game (if sent to bot), the same can be achieved just by closing the connection.
Command for changing the bot team. Responds with TEAMCHANGE message. This command can be issued also by bot on the bot itself (in this case Id attribute is not parsed).
Id of the target bot (won't be parsed if sent to bot connection).
This is the team we want to change to (0 for red, 1 for blue, etc.).
Without any parameters. Will drop your current weapon (if it is possible) and will change to best weapon available. If done successfully, message THROWN will come right away.
Set whether you want to draw blue lines between supported locations in the game. You need to enable this in the HUD by pressing ALT + R. (Works in UnrealRuntime2 for now). The lines are drawn between neighbouring points. First is point 0.
If true will erase previously set points.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Location point.
Command you should send after server HELLO message. The server will send you game NFO message and INAV info batch messages.
Will change the specified attribute of the bot. This command can be issued also by bot on the bot itself (in this case Id attribute is not parsed). Issuing by bot is allowed just when the game has allowed cheating (bAllowCheats = True in GameBots2004.ini file).
Id of the target bot. Not used if sent as a command for the bot.
Sets the bot health. Maximum health level is 199 in UT2004.
Sets the bot adrenaline. From 0 to 100.
Send a message to the world or just your team.
Here we can specify Id of the bot, that will receive this message privately (with "Private:" string at the beginning of the message). Doesn't work for players (but if text bubble enabled, players will see this message above the bot head).
Text to send.
Specifying target team - can be 0 or 1. Works only in team games. If global is set to true then the message will be sent to all nevertheless.
If True it is sent to everyone. Otherwise (or if not specified), just your team.
Enables text bubble. Sets how long the bubble should stay (in seconds, counted ~ 12 + FadeOut seconds - dunno why, some UT mechanics?). If -1 the bubble won't be shown.
Stop firing your weapon.
Show current action the player is performing.
The action that should be shown.
Whether the current action is completed or not.
Get a path to a specified location or a navigation point. An ordered list of path nodes will be returned to you by IPTH messages.
Message Id made up by you and echoed in response so you can match up response with query.
UnrealId of navigation point you want to find path to. Will be parsed BEFORE Location attribute. If supported, Location attribute won't be parsed. If the point does not exists, blank path will be returned.
Location you want to go to.
Will pause/unpause the game. The game can be paused just if bAllowPause = true in GameBots2004.ini (different settings for bots and server possible).
Iif true only bots will be paused – players and spectators will move freely.
Everyone in the game will be paused if set to true. To unpause send PAUSE command with PauseAll set to false.
Tells the GB2004 to destroy the bot inside UT2004 and close the connection which results in the termination of UT2004Bot as well.
Request messages about special objects on the map. The observer will send FLG, BOM and DOM messages.
Message you'll send at the beginning of the communication to create a bot in the game. You must send this message before you can have a character to play in the game.
Desired name.
Preferred team. If illegal or no team provided, one will be provided for you. Normally a team game has team 0 and team 1. In BotDeathMatch, team is meaningless.
Sets if the bot wil have tol be respawned after death manually by RESPAWN command. If false, the bot will respawn automatically.
Enables/disables auto ray tracing feature.
Specify start location, if unspecified, then random.
Specify start rotation, if unspecified, then random.
Sets the bot current skin (e.g. "HumanMaleA.MercMaleA"). Find all packages and skins through unrealEd (Actor browser, search in UT2004/Animations folder). Supported bot skins are Aliens (Aliens.), Bots (Bot.), human males (HumanMaleA.), human females (HumanFemaleA. ), juggernauts (Jugg.). Skaarj skins are not supported at the time being.
Can range from 0 to 7. This sets the bot accuracy. 1 lowest, 7 highest. Shouldn't have any other effect.
When firing slow projectiles (missiles...), if the engine will try to count the impact point for the bot or not (when shooting at moving targets).
It enables/disables automatic pickup of the bot. If true the items can be picked up through PICK command.
If set to true new synchronous batch procotol will be used. Sync. batches will be sent more regularly containing SELF message only (based on SelfUpdateTime value). Visibility information will be still sent in synchronous batches, but not always, but each VisionTime. VisionTime now needs to be multiple of SelfUpdateTime and will be set to nearest multiple if set improperly. BEG and END message will contain new attribute VisUpdate telling if visibility update is sent in this batch or not.
Sets the jmx adress we can use to debug the bot from Java (if we are using Pogamut).
Sets the Unreal Tournament class of the bot that should be used. By default leave it blank. In UnrealRuntime2 it may be used to spawn bots of different class, see CharacterType class in project PogamutEmohawk project.
Will send a ray from specified location to specified destination, responds with TRC message. TRACE uses Trace function - slower then FastTrace function, but provides more information about collision.
Message Id made up by you and echoed in response so you can match up response with query.
Origin point of the ray. If you won't support From attribute, current bot location will be taken as From.
Target point of the ray.
When true it means that all actors will be traced – for example players, bots, monsters, items etc. in a game. With TraceActors false we trace just level geometry.
When automatic pickup is disabled for bot (in ini bDisableAutoPickup=true) or if set by CONF {AutoPickupOff True}, use this command to pickup inventory the bot is currently at. Will fail if the bot can't pickup the item for some reason - weaponstay true and already had it before or etc.
Id of the pickup we want to pick up.
Check to see if you can move directly to a destination without hitting an obstruction, falling in a pit, etc. Responding with RCH message.
Message Id made up by you and echoed in response so you can match up response with query.
The unique Id of a player/object/nav point/whatever.
Location you want to go to. Normal location rules. Only used if no Target is sent.
Send password to the server. For more information see command SETPASS.
The password.
Use this to kill bot and force him to respawn, you can specify start location and rotation. Work also for human players and spectators in the game. This command can be issued also by bot on the bot itself (in this case Id attribute is not parsed).
Id of the bot to be respawned (not used if command sent to bot).
Where bot respawns. If you want to respawn bot at random, don't specify StartLocation.
Initial rotation of the bot.
Request messages about the observed player. The observer will send SLF and MYINV messages.
Works only in BotScenario GameType. Bot tries to use Factory - he needs to be at factory position + he needs to have enough adrenaline to trigger the factory. Game responds with USED (FactoryUsed) message. The item will be spawned at bot's location.
Stop all movement.
Will disable new connections to bot server and or control server - depends on parameters. If last ControlServer instance is leaving. ControlServer lock will be canceled.
If BotConnections should be locked.
If ControlConnections (server connections) should be locked.
Will send a ray from specified location to specified destination, responds with FTR message. FTRACE uses FastTrace function, which is faster then Trace function, but still rather slow.
Message Id made up by you and echoed in response so you can match up response with query.
Origin point of the ray. If you won't support From attribute, current bot location will be taken as From.
Target point of the ray.
Sets the name of the bot.
New name of the bot.
Command for connection detection. Server will return PONG.
Disconnect the observing connection from the currently observed player. You can pick a new player to observe using the INIT command.
Will trigger some of the native animations.
Name of the animation. Possible animations: gesture_beckon, gesture_cheer, gesture_halt, gesture_point, Gesture_Taunt01, PThrust, AssSmack, ThroatCut, Specific_1, Gesture_Taunt02, Idle_Character02, Idle_Character03, Gesture_Taunt03.
When true the animation will be played in loop. Supported un GameBotsUE2.
Message you'll send at the beginning of the communication to start observing a player. You need to supply either name or ID of the player to observe. If you are already observing a player, you will stop observing that player and start observing the player specified by this message.
Name of the player you wannt to observe.
The ID of the player you want to observe.
Will start to export IPLR messages regularly (like synchronous batch). Can be used for continuous visualization of players moving around the map. There are three categories (see below). The default values for all category is true, that means that without attributes all the categories will be exported.
All human players will be exported.
All GameBots bots will be exported.
All UnrealBots will be exported.
Causes bot to perform desired adrenaline combo (only if it has enough adrenaline usually >= 100). Combo cannot be turned off when triggered. Combo will consume bot adrenaline slowly, when it reaches 0 combo stops. Combo can modify bots abilities or appearance. Combos can be xGame.ComboBerserk (bigger damage), xGame.ComboDefensive (every few seconds adds health), xGame.ComboInvis (bot is invisible and is very hard to spot) or xGame.ComboSpeed (bots speed is increased).
Holds the class name of the desired adrenaline combo (can be xGame.ComboBerserk, xGame.ComboDefensive, xGame.ComboInvis or xGame.ComboSpeed).
Will stop recording a demo. Is confirmed by RECEND message.
Switch the bots weapon to another.
Unique Id of weapon to switch to. If you just send "Best" as Id, the server will pick your best weapon that still has ammo for you. Obtain Unique Id's from AIN messages. Be carefull, the weapon Id in bots inventory is different from the Ids of weapons that are lying in the map!
Will send list of all players currently playing on the server. Server will respond with IPLR batch players info message.
Will kick GameBots Bot from the server.
Id of the bot to be kicked.
Use this to kill the bot. The bot may respawn immediately - this depends on current server and bot settings (manual or auto spawning. Works also for native bots and human players. Can be issued only by control server.
Id of the bot to be killed.
Will add original epic bot to a game. May have issues with team balancing.
Optional name of the bot.
Optional start location of the bot.
Optional start rotation of the bot.
Skill of the bot - from 1 to 7 (best).
Desired team of the of the bot (0 red, 1 blue).
The class of the added bot - optional.
Set whether you are walking or running (default is run).
True or false to enable/disable bot walking.
Change name of walking animation. Supported in UE2.
Change name of running animation. Supported in UE2
Will stop exporting of IPLR messages synchronously.
Specify a point, rotation value or object to turn towards.
The unique id of a player/object/nav point/whatever that you want to face. Must be visible.
Absolute rotation you want to spin to. Must be provided as comma delimited ("0,50000,0") and should be in absolute terms and in UT units (2pi = 65535 units). Used only if no target provided. Rotation is parsed: First pitch (up, down), then yaw (left, right), the roll (no effect here, however it is an equivalent of doing a cartwheel).
Location you want to face. Normal rules for location. Only used if no Target or Rotation.
We can add custom inventory for specified bot. This command can be issued also by bot on the bot itself (in this case Id attribute is not parsed). Issuing by bot is allowed just when the game has allowed cheating (bAllowCheats = True in GameBots2004.ini file).
Id of the target bot. Is used just when sending command to the server. If sending command to the bot Id is ignored and ADDINV command is executed on the bot (if bAllowCheats == True).
Class of the item we want to add. Must be pickup class (e.g. xWeapons.FlakCannonPickup).
Will set speed of the game.
Can range from 0.1 to 50. 1 is normal game speed. The reasonable speeding up is around 10. The game engine stops catching up at higher values.
Tries to enter vehicle specified by Id. Note: You have to be in vehicle EntryRadius to enter (default 100 ut units). Response to this command are messages ENTERED and LOCKED. Beware! When in vehicle just command RUNTO with Target specified works for move commands. Any other move commands will cause vehicle to got straight ahead. Also it is not possible to control speed or steering at this moment. Everything is done automaticaly by RUNTO with Target specified.
Id of the vehicle we want to enter.
Causes bot to jump.
If set to True will cause the bot to perform double jump.
After time specified here, the bot performs second jump of a double jump (if DoubleJump is true). Time is in seconds. If not specified and DoubleJump is true, 0.5 seconds will be used.
Force vector specifying how big the jump should be. Can't be set more than bot JumpZ variable for single jump and 2 * JumpZ variable for doube jump. Default value of JumpZ is 340 ut units (for UT2004). If not specified, JumpZ value will be used. If not specified and DoubleJump is true, 2 * JumpZ value will be used. Maximum for JumpZ is 755, which is actually more than human player can do, but it needs to be that high in order to have safe navigation through jumping links.
Request messages about the game. The observer will send NFO and PLR messages.
Request messages about objects the observed player sees. The observer will send PLR, INV, NAV, MOV, PRJ and VEH messages.
The bot will continuously move straight ahead according to his actual rotation. Other move commands will interupt this.
Draws colored staying debug lines in UT2004. Note that these lines may be erased by ALT + G command as well! Drawing works as follows: Two vectors from attribute Vectors are read and line with the specified color is drawn between them, then again two another vectors are read, etc. If there are not enough vectors in the list, line won't be drawn. Color is in RGB format - 0 to 255. ClearAll set to true clears all staying debug lines before drawing (new lines still be drawn if supplied).
Attribute holding the vectors for line drawing. Vectors of line points are sent as string. Vectors delimiter is ";" (without quotes), vector X,Y,Z delimiter is "," (without quotes). Example: {Vectors 1000,1000,0;2500,1000,0;3000,1000,0;4000,1000,0}.
Color in RGB format sent as vector. Ranges from 0 to 255. Default is white.
If set to true all previous staying debug lines will be erased prior to drawing.
Will remove a ray from auto ray trace specified by Id.
Id of the ray to be removed. If Id = "All" all rays will be removedr.
Configures various attributes of the bot. This command can be issued also by bot on the bot itself (in this case Id attribute is not parsed).
Id of the target bot. Not used if sent as a command for the bot.
Enables/disables auto ray tracing feature.
Sets if the bot wil have tol be respawned after death manually by RESPAWN command. If false, the bot will respawn automatically.
You can change the name of the bot in the game.
Sets atomic action for the bot (BDI).
Bots default speed will be multiplied by this number. Ranges from 0.1 to 2 (default, can be set in ini in [GameBots2004.RemoteBot] MaxSpeed).
Sets the bot rotation rate. Default rotation rate is: (Pitch=3072,Yaw=60000,Roll=2048) and may be configured in ini file in [GameBots2004.RemoteBot] DefaultRotationRate. (pitch - up/down, yaw - left/right, roll - equivalent of doing a cartwheel)
Will set godmode for bot on (bot can't be killed). This can be changed just when cheating is enabled on the server. (bAllowCheats = True)
The delay between two self message synchronous batches (can range from 0.01 to 2 seconds). Will be used only if NewSelfBatchProtocol attribute is set to true in INIT message. Setting this can change VisionTime value as well, as VisionTime needs to be set to multiple of this value.
The delay between two synchronous batches containing vision updates (can range from 0.1 to 2 seconds). If NewSelfBatchProtocol attribute is set to true in INIT message then this value can be set only to multiples of SelfUpdateTime - the closest value will be found and VisionTime will be set to this number.
If true some additional debug information will be logged to UT2004 server console window.
If set to true an actor will appear in the game on the location the bot is actually looking at.
If set to true, the rays of automatic ray tracing (ATR messages) will be drawn in the game.
It enables/disables sending of all GB synchronous messages for the bot.
It enables/disables sending of NavPoints in GB synchronous batch for the bot.
It enables/disables automatic pickup of the bot. If true the items can be picked up through PICK command.
Tries to leave vehicle we are currently driving.
Turns the bot by a specified amount.
Amount in UT units to rotate. May be negative to rotate counter clockwise. This rotation is relatively added to bot current rotation, then the shortest turn to achieve this new rotation will be performed (so the maximum turn you can achive is to turn back by supporting value 32767 or -32767).
If provided as "Vertical", rotation will be done to Pitch (up/down). Any other value, or not provided, and rotation will be to Yaw (left/right).
Causes the bot to dodge to supported direction. Only one (successful) dodge per second allowed.
Relative vector, will be normalized. The direction of the dodge will be added to current bot rotation.
Point the bot should focus after dodge command. Note that if not specified, this will be set automatically by dodge command to 1200 ut units in front of the bot at the time when the dodge command is issued.
Attemtps to do a wall dodge. There has to be a wall in the opposite direction of the dodge. If there isn't, nothing will happen! This switch overrides "Double" dodge switch.
If true performs a double dodge in specified direction.
Sets the bot current skin through Skin attribute (e.g. SETSKIN {Skin "HumanMaleA.MercMaleA"}). Find all packages and skins through unrealEd (Actor browser, search in UT2004/Animations folder). Supported bot skins are Aliens (Aliens.), Bots (Bot.), human males (HumanMaleA.), human females (HumanFemaleA. ), juggernauts (Jugg.). Skaarj skins are not supported at the time being. In UnrealRuntime we use different attributes to set up textures of the bots.
Holds the desired skin.
A number representing hair. String type is desired here. Parsed only in UnrealRuntime.
A number representing clothes. String type is desired here. Parsed only in UnrealRuntime.
A number representing skin. String type is desired here. Parsed only in UnrealRuntime.
Request to export item category by ITC message. Will respond with ITC message.
Class of the item we want to export ITC message for. Must be pickup class (e.g. xWeapons.FlakCannonPickup).
Server will start recording demo of current game. Command is confirmed by RECSTART message.
Name of the saved demo file. The file will be located on the server.
Request all the possible status messages from the observer. The observer will send the following messages: Game info: NFO, PLR. The observed player: SLF, MYINV. Objects the player sees: PLR, INV, NAV, MOV, PRJ, VEH. Special objects on the map: FLG, BOM, DOM.
Will request map list from the server. Server will respond with IMAP batch map info messages.
Send a message to the all bots or just one bot. To be used for "protocol within protocol", not perfect, but suffices for now.
True - sends the message to ALL connected bots, False - sends to one bot specified within BotId.
Only valid for SendAll='false', here you can specify Id of the bot that should receive the message.
Custom type of the message.
Param String 1
Param String 2
Param String 3
Param Integer 1
Param Integer 2
Param Integer 3
Param Double 1
Param Double 2
Param Double 3
Param Boolean 1
Param Boolean 2
Param Boolean 3