Rho-Bot SourceForge Logo by Eric Bieschke  
News Archives Download SourceCode FAQ Credits Links
  Problems

Why does Rho-Bot crash or freeze up?

There are two known problems for Rho-Bot behaving in an unstable manner. One known source is that you are incorrectly using the botcycle.txt or .bot files (correct usage is described below). The second known source of problems is D3D. Rho-Bot seems to have conflicts with certain D3D setups, so if you switch your video mode from D3D to OpenGL or software you'll be fine.



Why aren't any maps listed when i try to create a game? (Version 1013 or lower)

Since Rho-Bot is officially considered an independent mod by Valve's UI code, the maps are not displayed. However, Rho-Bot still knows how to use all of the maps that you already have installed normally. You can select which maps are cycled through when playing with Rho-Bot by editing your mapcycle.txt file in your rhobot/ directory. The very first map that is loaded upon starting a game with Rho-Bot is determined by the 'Initial Map' paramater defined with the rhobot.cfg file in the rhobot/ directory (again edit using notepad or similar text editor). If you are determined to have the maps displayed in the create game menu, you can copy all of your maps into the rhobot/maps/ directory and then you'll see them in the menu, but it's only an aesthetic change it doesn't actually affect how Rho-Bot chooses/changes maps. You will not have to make this change for 1104 or higher.



Why can't I see Rho-Bot in the Custom Game menu?

You're not running version the current version of Half-Life. Use the Auto-Updater included with your Half-Life installation to upgrade to the current version.



Why does Half-Life keep telling me maxplayers is set to 4 when i know it's not? (Version 1013 or lower)

This is a safety feature built into Half-Life that optimizes stability on machines with a small heap. Adding "-heapsize 30000" to the command line that you use to run the executable will fix this problem by overriding this feature. For instance, if you're using a shortcut to run Half-Life (or Rho-Bot) you can just right click on the shortcut, select properties, and change the 'Target:' field from 'C:\SIERRA\Half-Life\hl.exe' (or whatever it is on your system) to 'C:\SIERRA\Half-Life\hl.exe -heapsize 30000'. Thanks to Rho-Bot user Steve Fryc for letting me know about the solution to this problem. This is not a problem for version 1104 or higher.



Why are my .nav files only zero bytes?

Rho-Bot does not record its learned navigational history until after an automatic changelevel completes. For example, if you're playing on Datacore, the datacore.nav file is not written until Rho-Bot succefully rotates you to the next map (BootCamp for instance).



  Customization

How do I set Rho-Bot's default parameters?

The rhobot.cfg file in your /rhobot/ directory contains the Rho-Bot's default settings. If you want to alter the default settings, simply open rhobot.cfg in your favorite text editor (e.g. NotePad, WordPad, etc.) and change the values. DO NOT alter the format (order and number of lines), ONLY alter the values.



How do I configure bot personalities?

The /rhobot/bots/ directory contains .bot files. A .bot file specifies the specific characteristics for your unique bot. You may create or edit as many .bot files as you want, so long as every .bot file matches the format of the example.bot file (included in the install) EXACTLY. I recommend you make copies of the example.bot file, change the name to ThisBotsName.bot and just fill in your own data (again using your favorite text editor) when creating your customized Rho-Bots.



How do I change which bot personalities join my game?

The botcycle.txt file in your /rhobot/ directory functions just as mapcycle.txt does, except you specify which Rho-Bots are added to the game, as opposed to maps. For instance, suppose I just created a Thresh.bot file which I placed in the /rhobot/bots/ directory. The name of the bot is 'Thresh', so if I want Thresh to be the very first bot added into the game I simply add the words 'Thresh' to the top of botcycle.txt and walaa-alakazaam, Thresh will be the first Rho-Bot to join your game.



  Mods

Can I use the Rho-Bot in mod X?

Not that I've yet heard of. As of now the Rho-Bot natively plays Deathmatch and Teamplay Deathmatch. I have released Rho-Bot's source code so that any mod author who wants to integrate the Rho-Bot into their mod is more than welcome to do so. So if you'd like to play the Rho-Bot in a mod, contact that mod's author and let them know you'd like to see Rho-Bot in their mod.



  Source Code

When will the source code be made available?

The source code for version 1013 is already available. You can download it here. The source code for version 1104 or higher will be ready soon.



Who are the people behind the development of the Rho-Bot?

Head on over to the Rho-Bot Credits page for a complete answer to this question.



How is Rho-Bot's navigational system implemented?

WorldGraph.NavigationArray is a symbolic representation of a map (hence the 3 dimensions). each X,Y,Z coordinate in the Half-Life universe corresponds to a specific index in NavigationArray. Every frame, Rho-Bot cycles through each player: if the player is a bot then it runs the AI routines, and if it's a human it increments the appropriate index in NavigationArray that reflects the location of the human player. During the bot AI Routines, if the bot realizes it is stuck, it decrements the appropriate index in NavigationArray. Over time, this creates the equivalent of "navigational fields" where high-value NavigationArray indices indicate physical Half-Life world locations that are often populated by human players, and areas with low NavigationArray values are rarely populated by humans OR cause the Rho-Bot to suffer movement difficulties.

Whenever the Rho-Bot is deciding where to move to (ie. calls CBaseBot::SteerSafeWander), it chooses a desired direction based upon the distribution of adjacent NavigationArray indices (using CBaseBot::ActionChooseDirection) - meaning that the Rho-Bot learns to mimic the movements of the humans it plays against by mirroring the location densities of humans.

Item of note: I never got around to integrating CBaseBot::ActionChooseDirection into any of the Steer functions besides SteerWander. Ideally, CBaseBot::ActionChooseDirection should be consulted for the majority of Steer functions (which would consequently increase the observable navigational learning significantly). If anyone is interested in integrating CBaseBot::ActionChooseDirection into all of the Steer functions I would gladly make a new release of the Rho-Bot and SourceCode with these additions, as I believe the benefit would be enormous.


What if I have a question about the source that's not already answered here?

Email me. I'll post as many questions and answers about the source code as I possibly can in this FAQ (so check back).



News Archives Download SourceCode FAQ Credits Links