"I'm not a puppet! I'm a real boy!" SABot - Stupid Angry Bot - A Multiplayer Bot for Doom III


- Navigation: Bot now navigates off ledges, jumps on crates, navigates though teleporters and uses elevators (still rough as guts). - Combat: Bot can strafe to items during combat, will retreat if too beat up. - AAS Files: Bot navigation files built on multiplayer retail maps tweaked for better navigation. Fixes many problems of AAS files compiled off the original stock retail maps.


This is a largely untested Alpha version. While theoretically the worst that will happen is the game crashes, I hold no responsibility if your computer explodes in a ball of incandescent fury.



= SABot - Stupid Angry Bot - A Multiplayer Bot for Doom III =
It won't eat, it won't sleep, it absolutely will not stop, until it does something stupid.
Version: Alpha 7 - 'I'm not a puppet! I'm a real boy!'
Date: 2005-00-03
Author: Jarad 'TinMan' Hansen

= Known bugs and Limitations =
Multiplayer integration is still early days:
bots use a bit more bandwidth than normal users.
aim_accuracy is still extremely ad hoc, basically just a sine/time variation added to aim. Crank it up for hilarious hijinks.
Strafing during combat is a complete uncontrolled riot, which at it's minor will send the bot off ledges and at the major to it's death.
Since CTF logic is pretty much tacked at this stage on the bots play it pretty rough. Regardless of if they have the flag they will still combat with every enemy, pick up every item on the way.
Elevator logic is still rough, at least one elevator gives the bots trouble and they may get stuck riding it, they may also get stuck under an elevator ( most notable on ctf2 ). Put em out of their stupidness.

= Performance = 
As a rule you generally want performance over graphics in multiplayer games anyway, and throwing in CPU eating bots means you may want to consider dropping details down a bit. 
i.e. High special effects and shadows off, dropping down resolution 
As well as experimenting with how many bots your system can comfortably handle.

= Using the Mod =
IMPORTANT: Make sure your Doom 3 installation has been updated to version 1.3.
If you have a previous version of SABot delete or rename the folder before installing this version.

1. Installation: Create a folder inside the Doom 3 folder called 'sabot' or 'sabot-roe' for ROE version and unzip the files into it.

2. Loading the mod: 
Run the batch file 'Load Sabot' in the sabot folder.

3. Adding a bot
Start a new multiplayer deathmatch server
To add a bot bring down the console (via the CTRL-ALT-TILDE (~) keys) and type:
	addbot bot_sabot
	Note: addbot command works like the spawn command, eg accepts key/value pairs.
	Tip: Typing addbot bot_<TAB> will give you a list of bot defs.
If gametype has teams you can specify the bots team with the key/value 'team':
team 0 for red or team 1 for blue, eg.
	addbot bot_sabot team 1

4. Removing a bot
Use the console command:
	removebot n
Where n is the id of the bot.

= Bot difficulty =
Bots aim accuracy or 'drunkenness factor' can be set when bot is added with the key/value 'aim_accuracy', higher value = less accurate.
Range [0-4]

You can slow down bots aim a bit with key/value 'aim_rate' default is 0.5 with less being slower. Range [0.1-1]

	addbot bot_sabot aim_accuracy 3 aim_rate 0.4

= Customising =
Bots colour can be set with key/value: mp_skin n, n being number 0-5 - Puke, Red, Blue, Green, Yellow.
	addbot bot_sabot mp_skin 2
Bot name can be set with the key/value: npc_name nameofbot.
	addbot bot_sabot npc_name 'Fluffy Bunny'
Some of the above setting are in their own character def files, the can be added with:
	addbot bot_sabot_tinman
	addbot bot_sabot_blackstar
	addbot bot_sabot_fluffy
Have a look at the file sabot/def/bot_sabot_characters.def for the examples.

= Playing custom maps =
Compiling AAS Files: The AI in Doom 3 relies on it's own map of the level you are playing on. Chances are most multiplayer maps weren't created with this in mind but you can force the engine to compile them. They'll be rough, but will work for the most part.
You'll only have to do this once for each map that doesn't have them.
The console command is:
	runaas mapname
Where mapname is the name of the custom map.
Add the resulting aas (in the maps folder) to a pk4 file following the same folder structure as the custom map usually 'maps/game/mp/' ).

= Making your own map bot ready =
The aas compiler takes into account brush geometry but not patches or func_statics. You must block these out with a brush textured with common/monsterclip.
See the doom3 single player maps for examples.
Also make sure the file aas.def in the sabot pak000.pk4 is loaded with your editor, this means either putting the file in base/def or loading the editor with the sabot folder set as fs_game.

= Feedback =
You can mail tinman_squad at hotmail dot com
Or visit the thread at the planetdoom forums:

= Distribution =
Distribute as you will, just keep the zip unmodified. Sweet.

= Modifying, use of code =
Full source will be available on request.

= Thanks and credits to =
Extreme thanks to id Software for making the Doom 3 easily modifiable for a retard like me.
Oh and thanks id for making the script plain text and thus hooking me into making this, and for the nice sdk code.
And for the brilliant AAS navigation system.
Brian from iddevnet for pointing out the runaas command and starting a solution for the usrcmds transmission.
UberExtreme thanks to Ryan 'FrikaC' Smith for the Quake bot FrikBotX which I used to guide me for parts of this bot.
Mega thanks to Steve 'Cobalt' Gray for pointing out the (now blindingly obvious) fake client approach, and creating the not so obvious network wrapper.
Thanks to Steve 'cusTom3' Baker for putting up with my incessant rambling and his herculean efforts at decifering the aas sytem.
A super OMFG to Steve again for the grueling work he put in that resulted in elevator aas reachabilities. Without them, my bot's would not use them. And the bonus of teleporter reaches.
Thanks to Richard 'Son of Sam 2' Potter for his tireless testing.
doom3world.org for providing an excellent community. It is excellent.
DankeUk for compiling the linux versions.
The guys at doom3Files for hosting.

= Final Thoughts = 
This version was pretty much for adding CTF logic, but there's enough tweaks to combat movement to make it a bit more dynamic. In trying to tack on the CTF I thought up a better goal system but decided it would take longer than I wanted to throw a release out. The due to the time it took to fix some of the tacking on it makes me wonder.
Stevens work on adding elevator reachabilities to th aas has been super fantastic.
Having a tester to point out things I completely missed, or make me take a fresh think on things I hadn't has also been brilliant. It meant the release took slightly longer, but also meant it wasn't quite so horrible.
Trying to discover if drops in performance are simply due to the demanding engine on my decidedly average machine or due to unoptimised bot code has been difficult. Having played my first online games of doom3 recently I do see that multiplayer is quite demanding on the machine.
As always I cringe when I see the amount of could I should overhaul, but I've exceeded my expectations to get this far.
I'm still having a blast blasting away.

There are no comments yet. Be the first!