There have been a couple of discussions about how good/bad the bots are recently.
I know that a lot of people don't care about the bots but they do make the single player mode and for a new player to immediately start playing with real players online without having learnt the weapons and movement would be folly. I really don't see why so many people do that. If the bots were more realistic they could also be used to make empty servers less empty so that there's a point for real players joining them. Once one real player is in a game, there's much more chance of others joining.
The bots actually work quite well in the single player maps as these maps are generally set up well for the bots with a decent set of waypoints. The fact that most 3rd party maps do not have waypoints means that you forget the bots even remotely being able to join in the game properly. If mappers were to put in waypoints, the game becomes much better with bots. I think the waypoint format could actually be improved by having more than one kind of waypoint. Different marker types could be used to define places where a bot should jump or laser jump, or to define the defensive boundaries around a base in CTF. Prioritisation on different point type by situation would make them much better for CTF. Once a bot has a flag, it's number one priority must be to get the flag back to base.
The bots do not react that humanly currently. As an example, if a bot is on it's own and you move yourself to a position some way vertically above a bot, the bot can see you before you have opened fire. This is just not realistic. A real player would not see the player unless they were looking up and on the point of the player above opening fire, they would look up and dodge, perhaps taking some time to locate the player before opening fire. The observancy of a bot needs to take in to account things like level a lot more. Currently the bots 'look' up and down just as well as they do in plane. A good example of this done well is the Reaperbot for Quake which on easy or normal difficulty has reduced ability to look/aim up and down. This is in line with new human players who take time to get used to mouselook.
Another problem with the bots currently is that they are not individuals. Looking at the current bot code in bots.qc, the names of bots are taken from a simple list and are independent of the model or any kind of play characteristics.
What I though of as a first step to improve this area is to define the bots externally. Have, say, a .bot file that specifies the bot. Initially this could just be a [botname].bot file which is blank and would only be used for the bot code to find bot names. By renaming, deleting or creating new .bot files you would adjust the pool of bot names available. This would allow silly tricks like naming bots after contacts in your instant messaging client, or after tracks in the playlist of your media player or after the headlines in an RSS feed. It would also mean that mappers could make map specific bots.
The first bit of info to then use the .bot format for would be to list the player model to load for that bot. This would mean that bots names would become a character rather than just a random name.
The next things to specify would be play characteristics for a bot. Weapon preference, agility, aim, observancy, agression, suicidal tendencies, teamplay etc. All ability would still be scaled by the difficulty setting. This would require massive changes to the bot code so that these values are used. I can envisage things like making bots reply to firendly fire in different ways. Ones who are good at teamplay would immediately message their own team to say 'Same team' whereas really uncooperative ones would return fire in a fit of anger until the firing stops. Agility could also be used to determine whether a bot uses advanced movement like laser jumps or jump boosting to get around the map.
Any comments on this lot?