Known Bugs

Issues

  1. Menu interface may crash on clients that have been patched to the Half-Life 1.1.0.8 engine
  2. can_get_item() sensor for weapons is broken
  3. Sometimes, in very long games, the bots die and become "unassigned"
  4. Changing maps with bots in-game loses bots
  5. Removing bots does not free up a client slot
  6. FlexStat Modules do not gather statistical information about human players
  7. Behaviors do not unload when a game is over until Half-Life is exited
  8. NPC destructor is not called in the provided bot behavior workspace

Menu interface may crash on clients that have been patched to the Half-Life 1.1.0.8 engine

On certain clients (not all 1.1.0.8 clients experience this issue), the menu system crashes the game due to a buffer overflow. This appears to be an issue with the new 1.1.0.8 engine as previous versions never seemed to have this issue. Work around this issue by using console commands instead of the menu system (the menu is simply a convenient method for accessing console command functionality).


can_get_item() sensor for weapons is broken

When used to determine whether a bot can pick up a weapon, can_get_item() will always return TRUE for weapons that it already has. The sensor should return TRUE even if the bot already has the weapon but does not have full ammo for that weapon because picking up the weapon will give the bot additional ammo. If the bot has full ammo, the sensor should return FALSE. However, the sensor also returns TRUE if the bot already has the weapon and has full ammo for the weapon.


Sometimes, in very long games, the bots die and become "unassigned"

Occasionally, a bot will assume "unassigned" status. While it is currently unclear why exactly this happens, the result is that the bot will be listed as "Unassigned" in the scoreboard and will stop respawning and stop participating in the game altogether. This is a rare occurrence and usually happens only in very, very long games (multiple days long).


Changing maps with bots in-game loses bots

Changing to a new map while bots are in a game will result in all of the bots being dropped from the game (they will not carry over to the new map like real players do). These bots are not unloaded, which results in a memory leak (albeit a minimal one) and may eventually prevent the user from adding additional bots.


Removing bots does not free up a client slot

Using the "bot remove" command causes the bots to stop participating in the game, but their client spot is not released, meaning that new players or bots cannot join in their place.


FlexStat Modules do not gather statistical information about human players

FlexStat only collects statistical information about bots. In the current release, humans are excluded from this tally. FlexMonitor, on the other hand, does provide information about human players.


Behaviors do not unload when a game is over until Half-Life is exited

When a game ends (e.g. the frag limit is reached), the bots do not unload their behaviors. This means that the behavior DLL will remain loaded until the user exits Half-Life. The most noticeable result of this problem is that the behavior DLL cannot be overwritten until the user leaves Half-Life.

This may be a problem for bot developers who want to modify their behavior based on bot performance and then load the new behavior while the Half-Life is still open. The work-around for this is to prevent the game from ending (no frag limits) and simply load the bots with another behavior, thus forcing the original behavior to be unloaded. The behavior DLL will no longer be loaded and the file can be replaced. The developer can now reload the bots with the new version of the behavior.


NPC destructor is not called in the provided bot behavior workspace

The provided bot behavior workspace does not have the method ~npc() called when a behavior is unloaded. This can be a problem if the behavior has been using new or malloc() to dynamically allocate memory. It can also present problems if the behavior opens a socket and listens on a port -- if the behavior releases the socket in the destructor, the socket may never be released until the user exits Half-Life.