Click for more information!


guard

Welcome to botman's Half-Life bot development web page!

Updated August 16th, 2000

This page accessed times (counter by www.digits.com)

This web page was created to provide information about the development of a bot for the game Half-Life by Valve Software (distributed by Sierra Studios). To build the bot you will need the SDK, Microsoft Visual C++ (Version 5.0 or 6.0) or the freely available MingW32 C++ compiler, and the bot source code found on this web page. To run the bot you will need the full version of the game Half-Life (the demo version "Uplink" will not allow you to run the bot).


Various Half-Life Projects:

Bot Number 10: Bots with dedicated server support.

HPB Bot: (Waypoint Test Release for TFC) Alpha version 1.0

Stripper Add-On for Half-Life (Updated July 2nd, 2000): Removes weapons, ammo, healthkits, batteries, wall mounted Health and HEV chargers, ladders, water, and more from Half-Life (and some additional MODs).

NetProbe - Proxy Network Monitor for Half-Life: Allows you to monitor the network traffic sent back and forth between Half-Life clients and servers.

Half-Life Coding Pages Mirror - Mirror of the www.balfourroad.demon.co.uk Half-Life coding site.

Credits and History: Contains credits and history about where my bots came from, why I wanted to create a bot, and the people who helped me get my "bot" in gear!


crossfire stalkyard Building my first bot

Detailed steps for creating your own bot

Detailed steps for running the bot

Some basics about C++ and the Half-Life SDK

Building the 2.0 SDK without Microsoft Visual C++

Unofficial Half-Life MOD FAQ


News:

August 16th, 2000:
I've been making quite a bit of progress in the past week on the HPB bot. I've got them mostly complete for OpFor and Half-Life deathmatch (based on the Bot Number 10 code). I've got them using most of the weapons in TFC now. I'll be adding some weapon support for Counter-Strike over the next few days. I'll probably be releasing another version this coming weekend (notice the word PROBABLY). The new version of the HPB bot will allow you to specify the bot's name and model (if the MOD supports custom models). It will also allow you to automatically spawn bots using the same bot.cfg used in my Half-Life deathmatch bots. The new version of the HPB bot will allow you to specify a time limit or frag limit to automatically change maps and will allow you to use the "map" command to manually change maps. The waypoint editor will remain included in the next release which will allow you to create waypoints for maps that don't have waypoints. I still need to work on creating some waypoint files to include with the next release of the HPB bot. The waypoint file format has changed from the previous version so any old waypoint files that you have will not work. I had planned on creating a Linux version of the HPB bot for Linux dedicated servers, but this may not get done by the time I make my next release. If it's not done at the same time, I will release a Linux version very shortly afterwards.

I have been contacted by no fewer than 8 people who say they are developing a bot for Counter-Strike. Two of these people have already released a bot (Android and Rambot). I expect a few more to be released in the next few weeks. So far no one has contacted me saying they are making a TFC bot or an Opposing Force bot. Some people feel that these CS bot authors should get together and make one bot. They think that this will allow the bots to be released sooner, but I don't think that it's a good idea. It takes very good coordination to have more than one person working on a software project and having multiple people code the same bot would probably only slow things down. Also having multiple bots allows you to choose from the bots available and play the one that you like the best. Not everybody likes the same kind of bot. That's why I originally worked on creating a bot for Half-Life. There already was The Jumbot and Phineas Bot, but I wanted to make my own bot that had a little different style of gameplay. So don't complain about there being too many Counter-Stike bots out there. The more bots there are, the more competition there will be, and the more competition there is, the more the developers will try to make their bots better.

August 11th, 2000:
Okay, sorry for the ranting and raving in the previous news item. I have been getting e-mail from some people who were concerned that I didn't want ANYONE to use my source code. That's not what I was complaining about. I have always encouraged people to download the source code from my bots and use it in their MODs (exactly as it is or modified to improve it). I REALLY DO want people to use my code to build other bots from. I, like all of you, get tired of playing with the same stuff over and over and over. Having a variety of bots to choose from makes the game play all that much more fun. Everybody who creates a bot puts in their own special stuff that other bots don't have and I don't want someone to think that I will complain if they release a bot that started from my source code (even if it's a TFC bot!). The complaint I had was someone downloading my executable, changing the zip file name, modifying the ReadMe.txt file, then uploading it to their web site and claiming that they had created this bot.

But I'm not going to let one person screw things up for everyone else. I will continue to release my bots as well as release the source code that goes along with them. I can't change the behavior of other people and if I let them change the way I do something, then they've won and I've lost. I'm not going to let that happen. People can't take advantage of you if you don't let them. Enough said on that subject, now back to bot coding...

August 9th, 2000:
I've just discovered a web site where someone posted a version of MY bot and called it their own. I won't post the URL of the web site since I don't want to give that person publicity. I have asked this person to remove that bot and told them if they want to post a link to my site that's fine. But I doubt that the bot will be removed. The idiot didn't even have enough sense to change the readme.txt file contents to remove my name. It's not a modified version of the code since the executables are exactly the same size and have exactly the same timestamp. It's just someone posting my work as their own and trying to get credit for it.

Okay, so be it. From now on all of the future versions of the bots will have an identifier in them that labels them as mine. I started doing this with the HPB bot (TFC version) where it uses the "Say" command to send you a message 5 seconds after you join the game and prints out the URL to my website. I originally wasn't going to release the source code and knew that there would be people taking the executable, changing the text files, then posting it on another web site as their own work. Well in the future, if that happens, the people downloading it will know right away where the bot originally came from. I am now undecided whether I will release any more source code either.

I will continue to work on the TFC/CS/OpFor/whatever bot, but it REALLY ticks me off that someone would take something that I've worked so hard on and post it as their own work.

August 5th, 2000:
I've put a new version of my Half-Life deathmatch bot up on my web site. No, it doesn't work with TFC or CS or Firearms or any other Half-Life MOD. The new version fixes a few bugs and adds better support for dedicated servers. Now you can use the console command "map" followed by the map name to switch maps and bots will be recreated when the new map loads. You can check out Bot Number 10 here.

I've also continued to work on the HPB bot. I'm making progress with the waypoint and path finding code but don't have anything that can be downloaded yet. I've managed to get the waypoint code working in Counter-Strike. There were problems with the way I was determining which team the bots were on and that caused the waypoint code to crash the Half-Life engine. I did figure out how to get bots into OpFor. I was trying to figure out why they were being kicked out and correct whatever the problem was. It turns out that all I had to do was ignore the "kick" command to prevent them from being kicked from the server and they work fine!

August 4th, 2000:
DaTa sent word that he's got a temporary web site set up with a downloadable version of his Android Bot for Counter-Strike. You can check it out here. P.S. I didn't write this bot code!!! Please don't e-mail me with problems or complaints or praise for the Android Bot! Contact DaTa using the e-mail address on his web site!

July 31st, 2000:
Good news everyone! Someone named DaTa sent me some code last week to fix the problem where bots were not joining teams properly in Counter-Strike. Thanks to DaTa, I am now able to spawn bots in TFC and CS! DaTa's change was using ClientPutInServer() instead of DispatchSpawn() after the ClientConnect() in the BotCreate() function. Also some stuff had to be changed in the BotThink() function where the bot selects the team and model it wants to use.

I am working on incorporating these changes and finishing up the path finding code using waypoints before another test release. The next release will support TFC and CS (and possibly OpFor). I'm having problems with OpFor kicking the bots out of the game as soon as they join. At first I thought it was because bots don't have a WON ID, but that's not what's causing them to be kicked from the server. I did add code to support manually kicking a bot from the game (it used to crash when you do this), so you will be able to add and delete bots without having to restart the game. The next release will probably be in 2 or 3 weeks.

July 15th, 2000:
I've been putting off writing the path finding code for the HPB bot because I have been trying to get the HPB bot to spawn properly in Counter-Strike. I'm still having problems getting the stupid bot be assigned to a team properly. There appear to be differences between the way real clients connect to the server and the way the HPB bot is connecting to the server. I suspect it's something in CS to try to prevent cheaters from changing client properties without the server know it (TFC doesn't have this problem). It's REALLY frustrating trying to get it to work. I've learned about 1,000 different ways to crash the Half-Life engine. :) I really wanted to get a simple CS bot going that would use the existing waypoint code I had, but I'm not having any luck at all with this. I guess I'll give up on the CS bot for a few weeks and get back to coding on the TFC bot. Please don't e-mail me and say "Don't give up on the CS bots!!!". I'm not giving up, I'm just putting them off for a little while. The code I write for TFC would also be needed for CS, so I'm not "wasting my time" doing TFC stuff. I think I've worked out the way I want to do the pathfinding (which means the waypoint file format is going to change in the next release). I don't know when the next release will be. It could be a few weeks, it could be a month or more. I'll make updates here when anything changes.

Oh yeah, I got a nice e-mail from Yahn about the HPB bot. I wasn't sure how Valve would react to something like this since it's kind of borderline reverse engineering, even though I'm not decompiling any code, just looking at exported function names. Valve has always been helpful in answering questions from developers and does encourage MOD authors to show off the capabilities of the Half-Life engine. I hope that I am able to create a bot for existing MODs like TFC or CS that will allow people to continue playing these games. With all of the cheating and childish behavior that occurs on some of these servers and the fact that some people have to pay an arm and a leg for Internet service, it will be nice to be able to play these games without all of this and have no network lag to boot!

July 4th, 2000:
I've released a test version of my HPB bot for everyone to play around with. It doesn't know how to use weapons yet. It doesn't know how to navigate in the level. It doesn't know any of the rules of the game. All it does is run around and let you shoot at it. The bots will respawn when killed and will follow waypoints (for maps that have them). It may be several more weeks before I have anything more to play around with, so download this version and, hopefully, it will keep you occupied for a little while.

For old news, click here.


Bots:

The Fodder Bot - It runs around and doesn't shoot back!

The Gump Bot - "Stupid is as stupid does, sir"

The PG Bot - The Pretty Good Bot

Bot Number 4 - The 4th bot in the series

The Cinco Bot - "Yo Quiero Cinco Bot!"

Bot Number 6 - It's better than the previous one!

007 - Bot, James Bot

Bot Number 8 - Now with the Amazing Botcam!

Bot Number 9 - For Half-Life Version 1.1.0.0 and higher

Bot Number 10 - Bots with dedicated server support


You can e-mail me by clicking here