The Wayback Machine - http://web.archive.org/web/20051030003026/http://www.quake3world.com:80/ubb/Archives/Archive-000001/HTML/20020919-5-003904.html


...Welcome to Quake3World...


Note: This is an archived, read-only topic.
  Quake3World.com Forums
  General Archive
  Server Bot Modifications (Page 8)

logon | profile | register | preferences | faq | search | game servers


This topic is 8 pages long:   1  2  3  4  5  6  7  8 
Originally posted in - Spare Forum 1 -

Email This Thread to a Friend!

Author Topic:   Server Bot Modifications
UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 03-30-2002 05:58 AM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Easter Egg Bots? - Part I

Think this qualifies as an "easter egg," but did you know there are actually 34 bots, not 32 in vanilla Q3A. Aside from the usual suspects, there are 2 bots for internal/personal use at id. Although their dialog is a bit limited and nobody made team skins or custom sounds, they're fully functional bots.

Curious? 5 easy steps brings them to life!....

1)
open pak0.pk3 with zip util & extract "bots.txt" into your BASEQ3 dir
2) copy/rename "bots.txt" > "mybots.cfg"
3) add 1 line to your server.cfg or autoexec.cfg file: set g_botsfile "mybots.cfg"
4) add the following lines to "mybots.cfg" -use [tab]s not [space]s-

code:
//BEGIN NEW BOTS
{
name Tim
model tim
aifile bots/tim_c.c
}
{
name Xian
model xian
aifile bots/xian_c.c
}
//END NEW BOTS


5) spark up the server & load one up: /addbot xian 3

NOTE: make sure "mybots.cfg" is in /BASEQ3, not /BASEQ3/SCRIPTS/ or else provide path in step3 (eg: set g_botsfile "/scripts/mybots.cfg"). Some mods and/or server launch utils might not recognize the "g_botsfile" setting. If so, another approach is making a PK3 file with the code in: "/scripts/botname.bot" - see UnHoly's instructions below.

But wait, there's more! Did you know there are more than 5 skill settings plus 2 that will hide your bot's skill icon in the game scoreboard? An integer is not necessary when setting bot skills (using either "g_spskill" or "addbot"). Although id retail documentation only lists 5 skill settings, anything is accepted between 1 and 5. Amazingly, the code adjusts the bot's skill to fit user's non-standard request. Note examples below using ADDBOT and 2 different skill-4 settings:

SKILL 4.0 BOT
]addbot xaero 4.0
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/xaero_c.c
loaded bots/xaero_i.c
loaded bots/xaero_w.c
loaded xaero from bots/xaero_t.c

SKILL 4.99 BOT
]addbot xaero 4.99
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/xaero_c.c
loaded cached skill 5.000000 from bots/default_c.c
loaded skill 5 from bots/xaero_c.c
loaded bots/xaero_i.c
loaded bots/xaero_w.c
loaded xaero from bots/xaero_t.c

The "botname_c.c" file contains the primary skill info for the bot but only has 3 settings (1,4,5). Q3A uses "default_c.c" to build any skill missing requested by user - the most common being skills 2 & 3. From the 2 examples above, you can see the code creating & caching the new skill level with info from "default_c.c".

MULTIPLE BOT SKILL-4 EXAMPLES
ADDBOT XAERO 4.0 RED O 4.0
ADDBOT XAERO 4.5 RED 0 4.5
ADDBOT XAERO 4.75 RED 0 4.75
ADDBOT XAERO 4.99 RED 0 4.99

Using default settings (chat off) on dm17, I paired them off for 20frag dm matches. 4.99 won 100% of the matches. 4.75 won all but 1 match (4.99). 4.0 lost all but 1 match. Although I see no practical purpose for this aside from seriously fine-tuning bot skill or disguising a nightmare bot with a skill-4 icon, the fact is you can do it.

Creating a bot without a skill icon can be done by using an undocumented "trap" in Q3A's base code. Using any number or non-integer greater than 5 will create a skill-5 bot with no icon. Using a bot with any number less than 1 will create a skill-1 bot with no icon.

NO SKILL ICON EXAMPLES
ADDBOT XAERO .50
ADDBOT XAERO 0
ADDBOT XAERO 6
ADDBOT XAERO 99.9

If you find this interesting at all, I'll demonstrate more on server bots in Part II.


[This message has been edited by UnplayedNamer : 04-16-2002.]

AmIdYfReAk
Elite

Posts: 21016
Registered: Feb 2000

posted 03-30-2002 09:03 PM     Click Here to See the Profile for AmIdYfReAk Visit AmIdYfReAk's Homepage!    
omfg, are you from daynetech?

( ouchy! )

------------------
why do we overclock?
We do it because we enjoy it.
Do you need a better reason?
________________________
Celeron 850@1133mhz
geforce 2 GTS Core:230mhz mem: 390mhz


§ìgñå
dromaeosaur

Posts: 3124
Registered: Jan 2000

posted 03-30-2002 10:05 PM     Click Here to See the Profile for §ìgñå    Click Here to Email §ìgñå 
quote:
Originally posted by UnplayedNamer:
...spark up the server & load one up...

heh nice..

here is the file for you lazy people.. mybots.cfg

[This message has been edited by §ìgñå : 03-30-2002.]

Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 03-30-2002 10:19 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
There is an easier way(my opinion). Create a folder on your desktop called "scripts", in that folder make 2 text files for the above bots. Rename the files "tim.bot" and "xian.bot" respectively. Winzip the "scripts" folder, and rename the resulting zip to something like "tim and xian.pk3". Put this in your "baseq3" folder and you will be able to select these bots in the addbot menu or the skirmish setup.


UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 03-30-2002 11:35 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Bot Management 101 - Part II

G_BOTSFILE

Part of the fun in running a server (dedicated or non-dedicated) is power and control...and G_BOTSFILE provides. It completely bypasses id's default 32 bots list "/scripts/bots.txt". As an example, open your "mybots.cfg" file and exercise some "control and power" by deleting all the bots you find boring or annoying. Be sure to keep all the "}" and "{" markers in place! If your list is like mine now, you have only 6 bots left -LOL- which is OK - you backed up the original "bots.txt" - right? Save the new & improved "mybots.cfg" file and start the server. Watch the Q3A console as it starts up. You'll see a message something like this:

6 bots parsed....

The only bots available to the server are 6 now (per my example). 28 bots will never see the light of day again - period! No more Lucy - even when using either BOT_MINPLAYERS or ADDBOT. Any bot you deleted is absolute toast now - but the code, model, etc. are untouched.

With G_BOTSFILE, you can manage your bots in multiple files by using specific bots for specific maps, games, mods, clans etc... Grouped bots can get swapped during maprotation so long as you use "kick allbots" before the G_BOTSFILE change. Example of serious bot manipulation:

//G_BOTSFILE in maprotation
set d1 "map q3dm2 ; set nextmap vstr d2"
set d2 "map q3dm3 ; set nextmap vstr d3"
set d3 "sv_hostname Official_id_Server; g_motd PRIVATE_USE_ONLY; kick allbots; b_botsfile idppl.cfg; bot_minplayers 0; addbot tim 0; addbot xian 0; map q3dm4 ; set nextmap vstr d4"
set d4 "sv_hostname noname; g_motd welcome; kick allbots; g_botsfile bots.txt; bot_minplayers 3; addbot xaero 0; sarge 0; map q3dm5; set nextmap vstr d5"
set d5 "map q3dm6 ; set nextmap vstr d1"
vstr d1
//end

G_BOTSFILE was swapped in d3 process, all if any bots kicked, servername & motd renamed, disabled BOT_MINPLAYER, and 2 id bots forced into the game. In d4 I did another G_BOTSFILE swap, reset servername & motd, kicked the bots; re-enabled BOT_MINPLAYER plus used ADDBOT to force my favorite bots into a game (if any player slots are available).

You can make a set of clan bots complete with members names or if running more than 1 q3a server, designate which bots on which server. I highly recommend using G_BOTSFILE for managing all the bots on a server.

3rdPARTY MODELS & BOTS

The only exception to G_BOTSFILE's control are 3rdparty models inside your BASEQ3 dir. If Q3A finds any botcode (/scripts/*.bot) in any NON-id PK3 files, it will assume you want it added automatically to the G_BOTSFILE list. This is a good thing, as we haven't interrupted Q3A's method for managing 3rdparty bots.

However, to keep unwanted bots from crashing in on your next LAN party, you'll need to perform a quick bot-lobotomy: open the appropriate model's PK3 file with a ZIP util and delete the "*.bot" file inside the "/scripts" dir. Another option is passing 3rdParty bot control to G_BOTSFILE by deleting ALL of the "/scripts/*.bot" files and pasting your favorites in "mybots.cfg".

WARNING! Be careful as additional files might be in the "/scripts/" dir besides botcode - like shaders - just open file & confirm it's contents before deleting. Never, ever delete a botfile or ANY file from ANY of id's PAK?.PK3 files! There's a simple trick you can employ to bypass PAK?.PK3 files without disturbing the crc/checksum stamp and keep the server running PURE...we'll discuss this later.

WTF?

So now what? The bot count went from 32 to 34 & now I'm down to 6? Although the 2 new bots are fun and the dumb ones are gone, I've got one lame server with only 6 bots. There's an easy solution coming up but time to move on. For now, return to your "server.cfg" file & change the old G_BOTSFILE line to this:

//------------------------
// BOT GROUP FILES (toggle all but 1 OFF!!!!!)
//BEGIN
//set g_botsfile "mybots.cfg" // my favorite bots
//set g_botsfile "bots.txt" // q3a default bots (32)
//set g_botsfile "xbots.cfg" // experimental bots
set g_botsfile "idppl.cfg" // id bots (6)
//END
//------------------------

Just added more lines to your treasured "server.config" file so I'll run thru what we've done. (1)we just disabled the new "mybots.cfg" file; (2)made the old Q3A default bots available if wanted (disabling or del'g ALL G_BOTSFILE settings will do the same thing of course); (3)created a new botgroup called "xbots.cfg"; (4)and created another botgroup called "idppl.cfg". This file has been ENABLED so don't start up the server yet.

VOODOO MAGIC

When I first discovered the Xian and Tim bots, I was semi-disappointed that the icon of the FPS gaming industry, Carmack, had no bot code. His model is there, but nobody bothered to whip up some code. Making botcode is actually VERY, VERY easy, but that requires opening more PK3 files PLUS creating a set of 4 data files for ea bot - which is another topic and outside of this exercise.

So now, it's time to quit preaching the virtues of G-BOTSFILE and demonstrate some old-fashioned, voodoo magic by creating 4 bots from thin air! Start a new txt file called, "idppl.cfg" and paste this for the contents:

code:
//----id people bots--------
//BEGIN
{
name Xian
funname "^7Xian[^1id^7]"
model xian/default
aifile bots/xian_c.c
}
{
name Tim
funname "^7Tim[^1id^7]"
model tim/default
aifile bots/tim_c.c
}
{
name Carmack
funname "^7Carmack[^1id^7]"
model carmack/default
aifile bots/sarge_c.c
}
{
name Paulj
funname "^7PaulJ[^1id^7]"
model paulj/default
aifile bots/xian_c.c
}
{
name Cash
funname "^7Cash[^1id^7]"
model cash/default
aifile bots/tim_c.c
}
{
name Brandon
funname "^7Brandon[^1id^7]"
model brandon/default
aifile bots/xian_c.c
}
//END
//------------------------

OMFG it's JC~

Start up the server again and check it out. You now have the entire set of id models running as bots (6 TOTAL). Copy these into "mybots.cfg" and the botcount is now 10 and rising. We be cloning bots now!

By simply borrowing the "ai-file" from any existing bot (including the ones disabled in "mybots.cfg" and 3rdparty), I can cookie-cut more bots in no time. I shared Tim's & Xian's code to build all the bots except for Carmack which got Sarge's AI. When you share a bot's AI, you adopt it's: skills, weapon weights, characteristics, sounds & chat.

I also applied a new category, "FUNNAME", to these bots. With "funname" you can color your bots name, add spaces or rename the bot completely. Please change the funname to something else as I don't need any email from id's legal dept!

note: When loading bots manually, use the standard name, not funname (eg: /addbot carmack 0). If you use BOT_MINPLAYERS to automatically add bots to your server, do NOT use spaces with "funname" - q3a can't kick them off the server when new clients join.

Again, if you have problems or don't want to use G_BOTSFILE to create & manage your server bots, use UnHoly's PK3 instructions.

In PART 3, I'll show you some more undocumented stuff, so don't go hog-wild & start cloning zillions of bots yet!

[This message has been edited by UnplayedNamer : 04-16-2002.]

§ìgñå
dromaeosaur

Posts: 3124
Registered: Jan 2000

posted 03-31-2002 03:29 PM     Click Here to See the Profile for §ìgñå    Click Here to Email §ìgñå 
awesome


UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 03-31-2002 04:38 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Bot Definitions - Part III

In review, all that's been demonstrated is botcode can be swapped around without disturbing id's PAK files by using the G_BOTSFILE function or offloading the code to NON-id PK3 files. Swapping botcode this way allows you to have CUSTOM SERVER BOTS -and- run your server PURE! Since this is all serverside work, any player joining your server can see & enjoy (or hate) your efforts without downloading a thing.

BTW: If you have actually employed anything from this mini-tutorial, you have "technically" created a MOD without compiling a lick of code. Although the botcode you've seen looks like code, it's just a data file. So, pat yourself on the back and get ready to re-edit everything done so far.

MORE STUPID BOT TRICKS

Now that the lame bots have been weeded out and new ones magically created for the server, it's time to experiment with more undocumented bot definitions.

Keep in mind you can assign most, if not all, player characteristics to a bot. To illustrate, create a new txt file called, "xbots.cfg" and paste this:

code:

//----BOT DEFINITION TEMPLATE
//BEGIN
{
name Testbot // single word, no spaces
funname "^1funny^2bones"// any name use "" for spaces & color
model bones/red // any model body/color or style
headmodel biker/stroggo // any model head/color or style
color1 1 // rail spiral color 1 (1-7)
color2 6 // rail spiral color 2 (1-7)
aifile bots/xaero_c.c // use any bot ai
arenaLord 1 // enhance bot characteristics
handicap 100 // -untested
sex female // male/female/it dialog
snd hunter // -disabled (1.31)
}
//END
//------------------------

This mother-of-all-bots has a red Bones body with a clown head and behaves like Xaero on steroids. Even the railcolors have been specified. Use this "extreme" example as a template for experimenting and creating your own custom bot definitions. If you find any more settings that can be applied to the Template, please let me know.

It used to be easier when you could scramble the sound files for the bots but that feature (SND) has now been disabled for some odd reason - oh well. The workaround is a no-brainer: just pick the bot AI that has your favorite sounds and assign different model info.

As mentioned previously, you can also mix & match 3rdparty bot models and code with Q3A's std bots BUT if the server client doesn't have the model, Q3A substitutes default settings and things might get ugly - aesthetically speaking. 3rdparty bot-AI works flawless with std Q3A models including new chat lines.

Your vast & creative mind with just a few minutes of time will have "mybots.cfg" filled with hords of bots again - but nothing like id originally planned. Be prepared for clients asking you, "where'd u get the cool bots?"

note: If you decide to explore into more options with bot modification, DO NOT extract botcode from PAK0.PK3. id rewrote & replaced all the botcode in PAK4.PK3. The botcode in PAK0.PK3 will no longer work with v1.17 point release or newer.

TEAM ARENA BOTS

You'll find lots of unused botcode in PAK4.PK3 which is used for id's TA mod. And yes, you can borrow TA botcode and use it in Q3A. The bots created in this exercise will work in any mod that supports bots - including the TA mod.

Unfortunately, I don't have a copy of TA - just not in the budget or else I'd expand on this topic. But if you can get Sarge in a game on TA, then these new bots will work too. If only I could sell id on sending me a COMPLIMENTARY or EVALUATION copy of TA

From here on, the tutorial will be covering areas previously documented (see links list in final part). Since all documentation I've found are old (prior to TA mod changes); lack details; or even incomplete, I'll go into as much detail as possible from here on.

In Part 4 I'll get the new bots to "walk-the-walk" and "talk-the-talk" the easy way and the hard way.


[This message has been edited by UnplayedNamer : 04-17-2002.]

Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 03-31-2002 07:55 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
KEEP it coming!!!


UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-02-2002 02:45 AM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Custom Bot MOD - Part IV

"Hold a cattleprod to a horse's as_
and you can get it to do anything - even deal cards."

Gene Hackman - Crimson Tide

After completing the lessons, and playing around with the new bots you've decided they still suck and need work. You want bots with specific skills but can't remember which bots do what. Xaero is killer, Crash is braindead and Lucy squats alot - that's all I recall. What you want are 2 classes of bots - clanbots for pro-play on the private server & gagbots for the public FFA server. Your wish list looks something like this:

CLANBOT

  • uses rail & rl
  • ignores the quad, invis
  • knows me by name and my clan's members too
  • doesn't chat too much
  • ignores the bfg & grenades

GAGBOT
  • disguise as LAN player or ADMIN
  • use the gauntlet alot
  • poor shot
  • camper & quadwhore
  • buttloads of trashtalk
  • jumps, crouches & taunts ppl
  • deal cards

Right off, and as promised, the easiest way to complete this task is to convince yourself you don't really need it...that it can't be done...or it's too much effort for a dumb bot. If Sarge botcode works semi-ok for you, then don't bother reading anymore. And disable the bot chat!

The hard way to create these 2 classes of bots is naturally, to actually do it. When I say hard, I mean more time than it takes to microwave lastnite's pizza for breakfast. Remember, all we're doing is editing data files that already exist - just txt stuff. No need to buy a C++ book & compiler or study up on perl. The only software needed is an editor.

The most difficult part of this will be packaging the PK3 file - hehe. But then I could run it as an "fs_game" mod in it's own directory without the PK3 packaging. This is actually a good idea if you want to make changes to your bots ON-THE-FLY or have a knack for screwing up. If you're like me, you never screw up but your best "trashtalk" dialog came after the PK3 conversion. So seriously consider the "fs_game"/no PK3 option.

So let's get busy and finish this ASAP. We need files, folders & a directory structure. Using UnHoly's technique & assuming a win OS, create a new folder on your desktop (New Folder is fine for name). Create a folder inside (subdirectory) called, "botfiles". Next, create a folder inside "botfiles" (sub-subdirectory) called, "bots" - done.

We need files, lots of files. Actually only 14 (some won't be touched, but we're gonna look inside anyway). Open PAK4.PK3 and extract the following 4 files into the "/botfiles" folder:

teamplay.h (team chat dbase)
rchat.c (response chat dbase)
rnd.c (random & shared chat dbase)
syn.c (synonym dbase)

Next, 2 sets of botcode. To save time, I'll pick Sarge for the clanbot & Crash for the gagbot. It really doesn't matter which botcodes I pick except Crash is already braindead and a perfect match. Find the following 10 files and extract into "/botfiles/bots":

crash_c.c (primary bot characteristics file)
crash_i.c (item & weapon weights for goal evaluation)
crash_t.c (bot dialog file)
crash_w.c (weapon weights used for selection)
sarge_c.c
sarge_i.c
sarge_t.c
sarge_w.c
default_c.c (master characteristics file for all bots)
example_t.c (blank, template for chat dialog)

"default_c.c" is a READ-ONLY file so don't panic when you get warnings zipping & editing - but don't change the file's attribute. We're not supposed to play with this file - but hey, why not!

Rename the Crash & Sarge bot files (8) only:

sarge_*.* > clanbot_*.*
crash_*.* > gagbot_*.*

All done with the files & directory structure, and just in time. My pizza is ready. In the meantime, think of some good bot chat and group them in these terms:

-trashtalk someone for killing you
-trashtalk someone you killed
-trashtalk when entering or leaving game
-trashtalk when game over - win or lose
-random lines like your clan URL, FTP server, ADVERTISING, thoughts of the day & whatever

If you find Q3A's G_MOTD weak, let the bots pass on the info. Hanging a sandwich sign on a bot and "proding" it to advertise your business is the only way I know of to make $$$ off this game - shhhh.

To save even more time, type them down in this format:

[tab][tab]"doh";
[tab][tab]"for clan info, visit OUR.WEBSITE.COM";
[tab][tab]"don't die unprepared - SmithMortuary";
[tab][tab]"u suk";
[tab][tab]"d00d u need a lawyer...Coby&Assoc; 800-383-4143";
[tab][tab]"this server rox!";
[tab][tab]"lag? not with AAA ISP services";
[tab][tab]"Server closed for clan use 8pm Fridays";

If you actually typed "[tab]", you are disqualified from using this tutorial. Hit [tab] key twice - you'll see why later. If all you can come up with is: "werd"; and "hole"; for dialog, then you must work for id or have a personality disorder.

Go wild, get nasty, be professional - it's your server and your bots! The more dialog a bot has, the more natural it becomes. Avoid chat that is grammatically and syntatically correct and properly punctuated like id's bots - nobody chats like that! Don't be too cute and include typos and jibberish like, "aslkfj", "!!!!", etc.

If I'm too slow, take this link to an excellent tutorial on bot editing. But don't finish yet, I've got some more magic, templates and tips to share. Also, there's a freeware editor that puts notepad.exe to shame called, "metapad.exe" - proving once and for all, size doesn't matter.

METAPAD: Tiny Yet Powerful Editor _and_ BOT-EDITING TUTORIAL: basic but good

Next, in Part 5, we'll make some quick changes to create a new CLASS bot (or botgroup), use a template for testing dialog events/options, get the bots to worship you and assemble "BOTS-MYMOD.PK3" for its first run on the server...just to make sure everything is working so far. In the meantime, keep jotting down chat lines for your bots 'cause this is where everything bogs down - everything else will be a snap.


[This message has been edited by UnplayedNamer : 04-16-2002.]

AmIdYfReAk
Elite

Posts: 21016
Registered: Feb 2000

posted 04-02-2002 02:46 PM     Click Here to See the Profile for AmIdYfReAk Visit AmIdYfReAk's Homepage!    
do you play on a server called DayenTechs Insta+ 1-on-1 Server,

because i have played/seen someone by your name in it, and i cant say its a commin name,

Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 04-03-2002 03:49 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
I know how to do almost all of this but, What attribute do you change to control the bots Gauntlet usage and accuracy?

P.S. Too lazy to read tuts these days....

UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-03-2002 04:30 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
The bot with the best CHARACTERISTIC_AIM_ACCURACY settings is Xaero - suggest using his AI and adjusting to your specs. Unfortunately, I don't know of any way to improve a bot's gauntlet skill without digging thru 1.29H sourcecode. Getting the bot to use the gauntlet more often or exclusively is easy - matter of weapon weights.

SOURCE: xaero_w.c

code:
#define W_GAUNTLET				10
#define W_SHOTGUN 40
#define W_MACHINEGUN 20
#define W_GRENADELAUNCHER 40
#define W_ROCKETLAUNCHER 80
#define W_RAILGUN 270
#define W_BFG10K 95
#define W_LIGHTNING 80
#define W_PLASMAGUN 75
#define W_GRAPPLE 15

Now you know why Xaero likes the rail so much. By altering the #, you arrange priority a bot puts on it's weapons. If you change W_GAUNTLET to "50", Xaero will spawn with gauntlet ready & won't use another weapon until acquiring the next highest # (plasma or better). The cost for this: xaero never uses bullets or pellets again.

Hope that helps

Hmm, my bad. Grenades will be passed over too. Make grenades "55" and xaero will use it.

[This message has been edited by UnplayedNamer : 04-04-2002.]

Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 04-03-2002 04:46 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
Sweet, and yes...It does help!


Death Bringer
The Afflicted

Posts: 591
Registered: Oct 2001

posted 04-04-2002 12:38 PM     Click Here to See the Profile for Death Bringer Visit Death Bringer's Homepage!   Click Here to Email Death Bringer 
Unplayednamer.... To say the least your one SICK individual.... I understand what you say and have a quick quesion. I understand that the AI on the dedicated server is what the clients will see. But what about a listen server. For some reason I'm thinking that it will use the clients... Am I wrong.

------------------
http://www.shubertium238.com
:evil: Anything can be modified !!! :evil:


UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-04-2002 01:45 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Good question!
As mentioned in another thread, never tried running a listenserver via my gamebox before - I just experiment with bots & id's SDK on a dedicated server which has no 3d card. My guess : if you can run a serverside mod (excessive, instagib etc) on a listenserver, then the bots or any other hack u use will work too.

PS: considering a signature change for my posts:
":sickpuppy: Anything can be modified !!! :sickpuppy:"
what do u think?

[This message has been edited by UnplayedNamer : 04-04-2002.]

Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 04-04-2002 05:46 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
quote:
Originally posted by Death Bringer:
Unplayednamer.... To say the least your one SICK individual.... I understand what you say and have a quick quesion. I understand that the AI on the dedicated server is what the clients will see. But what about a listen server. For some reason I'm thinking that it will use the clients... Am I wrong.


Whether or not the server is dedicated, all shall follow the rules of the server!!!

MUaaahahahaha!



Death Bringer
The Afflicted

Posts: 591
Registered: Oct 2001

posted 04-05-2002 06:16 AM     Click Here to See the Profile for Death Bringer Visit Death Bringer's Homepage!   Click Here to Email Death Bringer 
Thanks Unholy thats what I needed to know..


Cpt. Manroot
Grunt

Posts: 64
Registered: Dec 2001

posted 04-05-2002 04:15 PM     Click Here to See the Profile for Cpt. Manroot     
Hey Unnamed Player....This thread is awesome! Keep this stuff coming!!


§ìgñå
dromaeosaur

Posts: 3124
Registered: Jan 2000

posted 04-05-2002 04:23 PM     Click Here to See the Profile for §ìgñå    Click Here to Email §ìgñå 
UnplayedNamer, any idea on why I cant load up bots on test_bigbox? I get that BotAISetupClient failed error.


UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-05-2002 04:50 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
yup - no AAS code in TEST_BIGBOX map which really sux! Any map that doesn't include AAS code will not support bots - which is rare. Think id added that for map makers to study.




Unholy
The Illuminated

Posts: 1323
Registered: Aug 2001

posted 04-05-2002 07:14 PM     Click Here to See the Profile for Unholy Visit Unholy's Homepage!   Click Here to Email Unholy 
quote:
Originally posted by Death Bringer:
Thanks Unholy thats what I needed to know..

Detailed explanation of my comment. I started a server using a map called dm17 but, it was actually a map I created with the same dimensions. What ocurred was that players could only see the weapons/power-ups I included in the map and spawn in at my spawn points. Although they could not see my maps textures or structures, Q3 defaulted them to the info their dm17 BSP contains. The over all effct was I was in a big empy box, they were in dm17 with details sitting on empty space(intangible).

Point being, that as long as a texture, sound or shape file doesn't have to be used, your server specific files should work. I believe this is the ieal behind server side mods.

[This message has been edited by Unholy : 04-05-2002.]

UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-06-2002 12:26 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Bot MOD Continued - Part V

You've got the 14 files & dirs ready now and sat for days whipping up classic bot chat (both trashtalk and advertising your new carpet cleaning service no doubt). Before plugging in the new dialog, let's quickly assemble 1 bot, tap into id's database system and package it for testing. If everything works, then we'll finish up with the dialog in Part 6.

First, we need to do some copy/paste work with the 4 "gagbot_*.c" files. Open gagbot_c.c and with your editor use a global SEARCH/REPLACE and change "crash" to "gagbot". Anywhere from 16-17 replacements will be made. Next and important (id protocol: use a Capital when defining CHARACTERISTIC_NAME), edit the following line 3 times (it's the first category for each of the 3 skill groups):

Change this:
CHARACTERISTIC_NAME [tab][tab][...] "gagbot"
To this:
CHARACTERISTIC_NAME [tab][tab][...] "Gagbot"
(remember change line in each skill: 1,4,5)

Check the following line (all 3 skills) and make sure it is set for "1.0":
CHARACTERISTIC_CHAT_REPLY [tab][tab][...] 1.0

Finished. Save gagbot_c.c and open gagbot_t.c file. After the '//' comments at top of file make 1 change and save:

Change this:
chat "crash"
{

To this:
chat "gagbot"
{

Done - we don't have to edit the other two gagbot_*.c files to make this bot work and I'll return to all the files later & explain their importance. Next, open "rchat.c" file. This FAT file is id's dbase for ALL the bots' response chat. Do a SEARCH and find: "carmack" (with quote marks). Add your "gamename", (no color, use just alphabet chars, spaces & CAPS ok) to the beginning of the the data table after the "[" then save the file. (Don't forget quote marks & comma).

Before:
["id guys", "john carmack", "carmack", "adrian", "kevin cloud", "donna jackson", "miss donna", "ms. donna", "id mom", ...etc etc] = 9
{

After:
["UnplayedNamer", "id guys", "john carmack", "carmack", "adrian", "kevin cloud", "donna jackson", "miss donna", "ms. donna", "id mom", ...etc etc] = 9
{

Final step, make a new bot definition for "gagbot" and save it in your xbots.cfg file. Keep it simple like:

code:
{
name Gagbot //note Capital name
funname "TestBot"
model sarge/default
aifile bots/gagbot_c.c
}

That's it, we're done! Now we need to package or prepare the MOD for testing on the server. BTW: notice how we muscled our way into id's front lobby and became an instant employee? Although this MOD will work, I'm still waiting for my new company car...the red ferrari.

"MYBOTMOD" TEST RUN

We're done with the mod so package the folder on your desktop, "New Folder", by archiving it into a zip file using any zip util (like winzip) - and make sure the option to maintain original file folder names or paths is enabled. To save time, I'm going to fool Q3A that the mod is a "Point Release Update" and avoid hassles related to typical mod installing. Rename "New Folder.zip" to "pakmymod.pk3", move/copy your mod into the BASEQ3 dir & startup server again.

For the test, you need to confirm no typos were made during the edit session. If the bot loads & chats, we're 1/2 there. Next, type your gamename (the one you added to library file) and watch the bots reaction (you can no longer communicate to bots via the console using "say" - you'll have to join game to chat with bots now - haven't a clue why id changed that).

If the bot doesn't respond to your gamename, type it a few times. A bot won't chat if it has a powerup; is being shot at; is shooting at something; is on a primary goal (replenish health, get railgun, etc); or is doing something stupid like walking on lava. If it works, you'll know. Type your gamename multiple times and you'll see multiple responses. The bot thinks you are an id employee and will treat you like a deity now. Amazing how far an admin will go to get some respect!

MODS FOR DUMMIES BY A DUMMY

OK. The test mod worked and you've made it this far...but what's up with the PAK vs PK3? Why did Q3A think we did an upgrade instead of a mod? And how is it you can do this on a pure server? Unfortunately, a short overview of how Q3A manages it's resources is in order to help you decide how to run your mod and how far you want to take it.

When Q3A is running pure (I assume all admins run pure servers), all the PAK*.PK3 files in /BASEQ3 are protected from any alterations. Q3A knows of ANY changes you make to it's PK3 files regardless of running pure vs unpure. During startup, Q3A uses the checksum or CRC (cyclical redundancy check) of PAK*.PK3 files to detect any changes. All compression utils like zip, rar, etc create a checksum stamp to assure no corruption occured during the creation or transmission of the file or if it's been altered.

R sv_referencedPakNames "baseq3/pak7 baseq3/pak4 baseq3/pak0"
R sv_referencedPaks "908855077 1197932710 1566731103 "
R sv_pakNames "pak7 pak6 pak5 pak4 pak3 pak2 pak1 pak0"
R sv_paks "908855077 -585902437 -207895723 1197932710 -1303471980 412165236 298122907 1566psv731103 "

Q3A first reads & loads it's own PAK*.PK3 resource files starting with PAK0.PK3, then PAK1, PAK2, etc. Any new file it finds during this process will be added to it's resources. Any duplicate files will be used to replace previous ones. After the PAK resources are loaded, Q3A searches inside any non-PAK PK3 files it finds in /BASEQ3. Any new file will be added to PAK resources; however, any duplicate files will be ignored. So if I was dumb enough to make a custom model named Lucy or a new map called Q3DM17 - I'd be asking for trouble with duplicate files. I would have to run it as a mod.

If the bots you create from this exercise don't duplicate any of id's existing files, then name it anything you want with a PK3 extension. MYBOTMOD.PK3 will work just fine. If you decide to edit any of id's resource files, then mod is the only option using "+set fs_mod mybotmod" in your startup script and run MYBOTMOD.PK3 in dir with same name.

Q3A's resources are artwork, sounds, code and data. With a serverside mod, you can make changes to code and data only. Anything else will require both server and client to have a copy of the mod. (eg: Instagib vs RA3).

For the test run of the bot, I showed you that you can fool Q3A simply by using id's "PAK" name for the mod. Current pak file from id is 7 (1.31) so you could call your mod, "PAK8.PK3" until the next point release from id. So...use 9 or 15 or better, letters. "PAKMYMOD.PK3"

BOTERRORMESSAGES

When things go wrong with bot editing, you'll know right away. One simple typo can kill either 1 or ALL of your bots. Don't be scared, we're toying with data files - remember. And fortunately, Q3A provides enough info to track errors:

addbot carmack 6
Error: Bot 'carmack' not defined

Check your G_BOTSFILE setting and make sure bot is available. Check that the directory structure (path) is intact inside the mod, "MYBOTMOD.PK3". If yes, then you made a typo either in definition table or on the commandline. Q3A didn't find a corrupt file, it just can't find the AI files!

broadcast: print "Carmack BotAISetupClient failed\n"
ClientDisconnect: 0

This is the first error you'll probably encounter with bot editing. Simply put, you hosed the AI for the bot listed in error msg. Any bot sharing the AI file will also fail. Don't panic, should be a simple fix and can be any of 4-6 possible files. If the bot worked fine & you made no changes, then you are running a mod or map that doesn't support bots (AAS botcode for maps is outside of this lesson). If this is the first time you tried your bot out, then check the BOT DEFINITION TABLE. If you just re-edited the bot, then u probably know which file was opened last. The most common file to cause an error is "botname_t.c". (again, only use [tabs], not [spaces] unless it's "dialog") Use ";" at the end of each dialog line. Check the "{" "}" markers. All else fails, use your backup. Always backup your bots before editing - trust me.

------- BotLib Initialization -------
loaded weapons.c
loaded items.c
loaded syn.c
loaded rnd.c
loaded match.c
Error: file rchat.c, line 6021: expected ,, found }

If you screwup any id dbase library, this is your error message. The msg is a bit obscure but it means you misplaced or forgot either a "{" or "}". But, you have a line# so tracking the error is easy if using an editor that supports line#s - like metapad. If you're still using notepad.exe for bot editing, start counting lines backwards.

If everything works as advertised, then it's time to plug-in the dialog you've been working on in Part 6.

[This message has been edited by UnplayedNamer : 04-16-2002.]

prime-ape
Funky Monkey

Posts: 3881
Registered: Nov 1999

posted 04-11-2002 05:17 AM     Click Here to See the Profile for prime-ape Visit prime-ape's Homepage!    
Should wrap these up and post em to GameAdmins.com, good info


Viruseater
Clanservers

Posts: 12363
Registered: Feb 2000

posted 04-11-2002 07:30 AM     Click Here to See the Profile for Viruseater Visit Viruseater's Homepage!    
ROFL It just dawned on me who you are.

/me laughs

UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-12-2002 07:07 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Bot Dialog Events - Part VI

From here on , I'll be discussing each of the 14 files you copied from PAK4.PK3 in detail (earlier in lesson); show any benefits from altering the file; and provide any documentation and samples for making changes. In the case of id's library files, none of this is documented outside of their TX offices that I'm aware of. So no more hand holding and no more "clip" this code and see what happens. For those with dialog lines pre-made, this is where it all happens!

Two things will make your bot chat:

(1) a pre-defined event is triggered (eg: bot is killed, bot loses game, bot dies in lava, etc). The "BOTNAME_T.C" contains the dialog for these events.
(2) spectator or player says something during the game which triggers a response event as defined in "RCHAT.C" file.

The frequency which the bot chats for these 2 events is based on the settings in the "BOTNAME_C.C" file which is explained in Part 8.

BOTNAME_T.C

This is the most commonly altered bot file of all. id and 3rdparty modelers use this file to develop personalities for their bots - the hiss of Sorlag and the military-minded Sarge. All of id's resource files (RCHAT.C, RND.C, etc) are generic and non-model specific. Most of the older docs regarding "BOTNAME_T.C" are useful but dangerous as they were written prior to v1.25 - when id rewrote the botcode for their TA mod.

Open (and backup) "EXAMPLE_T.C" file. This is a template with all comments in place and no dialog. All of id's and 3rdparty bots get messed up during editing and lose these important notes. Use this template for all your bots as it's clean & documented. Have an id dialog file open for referencing and examples.

DIALOG VARIABLES (keys, groups, words & phrases)

type "level_end_lose"
// 0 = bot name
// 1 = random opponent
// 2 = opponent in first place
// 4 = level's title

type "hit_talking"
// 0 = shooter
// 1 = weapon used by shooter

Important to notice that these variables, or "keys" as I call them, change with different dialog events. "0" is referenced to a bot's name in the type "level_end_lose" event but is used as the shooter for the "hit_talking" event. This is confusing and imho, goofy, but we'll deal with it.

Note: You don't need to use any of these "keys" for your bots - just use the dialog you've been collecting and plug it in as we go along. However, if you want your bots to be incredibly knowledgeable of their surroundings, you'll want to play with the "keys".

For those who've been patiently waiting to plug in their award-winning dialog - go ahead and fill each "dialog event." If you [tab]'d your dialog, it'll copy/paste right in and be easy to read and edit later. If you find an event that you don't want the bot to chat, just leave it blank - don't delete the event or alter the format of botcode files! If no dialog has been defined for an event, the bot's chatballoon will pop up but say nothing and move on.

Meanwhile, for those interested, let's look at how id bots use the "keys" with a Lucy example:

type "level_end_lose"
{
"Daddy must be rolling in his grave.";
"Oh, this girdle is killing me ... literally.";
"hey, ", 2, ". Let's grab a couple cold ones and you show me those fancy moves of yours.";
LEVEL_END_LOSE0;
} //end type

type "hit_talking"
{
"You must be some kind of management trainee, ", 0, ".";
"Big Mistake there, ", 0, ". BIG mistake.";
} //end type

Of the 4 "keys" available for "level_end_lose" chat event, Lucy only uses 1 (key 2) which is the winner's name (bot or human) of the game she lost in. "Keys" can be used anywhere in a sentence and also be used in multiples. The following examples show the format of key useage at beginning, middle & end of sentences:

type "level_end_lose"
// 0 = bot name
// 1 = random opponent
// 2 = opponent in first place
// 4 = level's title
{
2, " has been practicing!";
"wipe that grin off yer face ", 2, " - better, let me do it";
"Hey ", 1, ", let's play ", 4, " again and tagteam on ", 2, "";
"OMG, ", 0, " is a bot!";
"gg ", 2, "";
4, " sux and ", 2, " cheats!";
}

type "hit_talking"
// 0 = shooter
// 1 = weapon used by shooter
{
"Hey everybody, ", 0, " is a chat-killer!";
"kiss my (_x_) ", 0, "";
0, " is toast!";
"gonna shove that ", 1, " up yer hole, ", 0, "!";
"desperate for points ", 0, "?";
1, "? while chatting? u suK ", 0, "";
}

If you use keys in your dialog, remember, they change with each dialog event. Keys will cause the most problem with bot errors when you get started - remember to backup before each edit session. Also, sometimes keys won't work as expected. In the example above, I used the line: "OMG, ", 0, " is a bot!";. If there's no other bot in the game, the actual bot chat will be: OMG, is a bot! No error message in this case, just an empty key field.

Another variable resource available to you for bot chat is pre-packaged dialog in id's resource files. Look at the original Lucy dialog again and you'll see one line that sticks out 'cause it defies the formats you've seen so far:

LEVEL_END_LOSE0;

"LEVEL_END_LOSE0" is a group dialog definition inside the "RND.C" file with around 6 dialog lines pre-made for the event. If you're short on words or lazy, just use id's dialog! There are priceless lines inside the "RND.C" database, be sure to search them out. I'll return to the "RND.C" file later and provide tools so you can build your own groups or edit existing ones.

Add a dialog group for the "hit_talking" event by opening "RND.C" and SEARCHING for: "DEATH_INSULT". You'll find tons of dialog groups with canned lines for insulting the bot's killer. I'll add one to the previous example:

type "hit_talking"
// 0 = shooter
// 1 = weapon used by shooter
{
"Hey everybody, ", 0, " is a chat-killer!";
"kiss my (_x_) ", 0, "";
0, " is ghey!";
"gonna shove that ", 1, " up yer hole, ", 0, "!";
"desperate for points ", 0, "?";

DEATH_INSULT6;
}

That one line gave me 6 more dialog lines for the event. You can use any dialog group you want, just some might not make sense when used with certain events. You can create a bot using just canned dialog from the "RND.C" file.

Also in the "RND.C" file are words, phrases, places, people, & things groups that u can plug into your dialog. You'll need to browse thru the file to see all the options, but here are useage examples:

femalebot, " is looking for ", androbot, " - anybody seen him?";
"hey ", friendname, "! get me a ", liquid, "!";
"been playing this stupid game since ", whenp, "!";
"oh mr. ", fighter, " - u wanna piece of my ", weapon, "?";
0, " fights just like my ", family_member, "!";

What's cool about these plug-in words & phrases is your single dialog line will be different every time it's used - especially when you use more than two in a single dialog line. Again, be careful when using keys in your dialog. Study the examples I've shown before you go wild because they are VERY unforgiving when you mess up the format! "'s are used to separate actual dialog from keys. The total number of "'s in a dialog line will always be an even number - despite the number of keys used.

Important: Q3A uses the "~" symbol for bypassing the "SYN.C" file lookup tables. Did that make sense? The "SYN.C" database is a large group of alternative words & synonyms for the bots to use randomly. Some words you use will trigger the bot to use an alternate word and completely change the original dialog line. For example, "BS!" will actually make the bot say, "Battle Suit!." Not exactly what you had in mind.

Open "SYN.C" and SEARCH for "bs". Look at some of the other synonyms but don't change anything - we'll return to this file later.

Examples of using "~" to bypass synonym lookup table:

"kiss my ~butt";
"~bs!";
"~gonna ~shove ~that ", 1, " ~up ~yer ~hole, ", 0, "!";

Whenever in doubt, do what I did in last example. There's no problem with using "~" excessively. If your bots aren't saying exactly what you taught them, this process is the root of your problem.

COLORDIALOG

Bots can have color in their dialog lines. Use the same color chart you used to make your gamename. For those like me that never make mistakes, but sometimes forget simple things, I'll provide the chart:

^1=RED
^2=GREEN
^3=YELLOW
^4=BLUE
^5=CYAN
^6=MAGENTA
^7=WHITE
^8=BLACK

I'll use the "level_end" event dialog from one of my own bots as an example of colored dialog with wild variable use (note: in "level_end" unlike any other event, the bot knows there are 2 or more other players as the bot is neither the winner nor the loser):

type "level_end"
// 0 = bot name
// 1 = random opponent
// 2 = opponent in first place
// 3 = opponent in last place
// 4 = level's title
{
"^1g^2f^3g";
"^2www.planet^7", 2, "^2.com!";
"gg ", 2, " - can i have a copy of your ~cheat?";
"gg ", 2, "!";
2, " ownz me ^7:^1(";
"i own ", 3, " ^1-hahaha";
"2, " and ", 3, " can kiss my ^7(_^1x^7_)^2"";
"^1ggz^22^3all";
"^6Gheyness";
"wow i lost?!@?";
"ur lucky ", 2, ", my ^1damn^2 ", weapon, " was jammed the whole game!";
2, ": give ", 3, " a copy of yer ~cheat";
3, " is ^6ghey";
ponder, " u got me this time ", 2, "!";
"somebody ^1spec^2 ", 2, " for ~cheating!";
4, " ~blows! ~let's play ", level_title, " instead";
}

How's that for colorful dialog? Hopefully you've picked up some good ideas using your dialog with combinations of keys, groups and color. [aside: with this info, you can make your own bot's dialog much richer than most I've seen coming with professional 3rdparty model/bots - umm, my examples are NOT what one would call "rich" - hehe].

Final word on dialog: the order in which Q3A selects your dialog lines during an event is random. Duplication of your favorite lines will make your bot use them more than others available. There is no maximum number of lines you can use for dialog that I'm aware of. Fill 'em til yer blue in the face. There is, however, a limit to the number of characters in one string - 256. So don't make the dialog lines too long.

For those still hanging in, Part 7 will cover your bot's use of map items and weapons.


[This message has been edited by UnplayedNamer : 04-16-2002.]

UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-13-2002 06:49 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Weapon and Item Weights - Part VII

quote:
"...fuzzy logic was extended to handle the concept of partial truth, also using values between "completely true" and "completely false"...there is a similar strong relationship between fuzzy logic and fuzzy subset theory...if the value of the criterion is higher than the value that appears after last case statement then the default keyword links to the next node or leaf in the tree...a node in the tree can link to either a leaf or one of the nodes on the next level of the tree..."

Huh? In case you're wondering, that's MrElusive, author of Q3A's botcode, describing how his bots work with weapons and items in Q3A (circa 1999). If that makes sense to you, then grab his documentation from my links. If your head is spinning like mine, let's try a simpler approach to controling a bot's useage of weapons and items (powerups, health, armor). Instead of understanding how the bots work, I'll just explain how to tweak them. I'll use Xaero's botcode as examples for item and weapon weights editing.

BOTNAME_W.C (weapon weights - selection for combat)

This file orchestrates what weapons a bot will use during a fight. If the bot is not in active combat, then weapon weights from "botname_i.c" are used. Ignore the 2 "#include xxxx" lines - they are the fuzzy logic and inventory reference files that MrElusive is discussing above.

SOURCE: XAERO_W.C

code:
//
#include "inv.h"
//
#define W_GAUNTLET 10
#define W_SHOTGUN 40
#define W_MACHINEGUN 20
#define W_GRENADELAUNCHER 40
#define W_ROCKETLAUNCHER 80
#define W_RAILGUN 270
#define W_BFG10K 95
#define W_LIGHTNING 80
#define W_PLASMAGUN 75
#define W_GRAPPLE 15
//
#include "fw_weap.c"
//

By altering these values, you tell the bot which weapons to use most often and which weapons to pass on. The lower the #, the less the weapon is used; the higher the #, the bot will develop a preference for. In Xaero's case, he could care less about the gauntlet and machinegun but if there's a railgun on the map, you know what he'll be using.

If you are running a mod that supports the grapple, W_GRAPPLE would be of interest to you. If I want Xaero to spawn with the gauntlet and never use any other weapons, just swap the rail # with gauntlet #. Dropping Xaero's rail # to around 100 would make him less menacing on Q3DM17. If I didn't want Xaero to use the BFG, I would increase gauntlet # to 15 and decrease BFG # to 10. I think bots that spam grenades are pretty darn funny so increasing the grenadelauncher # to 140 will do just the trick.

Other docs I've read on this subject say to experiment with the #s so you don't create a "dumb bot." Ummm, I don't have time to experiment - I'd rather get it right the 1st time! And besides, all bots are dumb - we're just making 'em dumb and fun. Just make sure your #s are balanced & set correctly.

BOTNAME_I.C (item & weapon weights - for goal evaluation)

SOURCE: XAERO_I.C

code:
//
#include "inv.h"
//initial health/armor states
#define FS_HEALTH 2
#define FS_ARMOR 2
//
//initial weapon weights
#define W_SHOTGUN 50
#define W_MACHINEGUN 70
#define W_GRENADELAUNCHER 40
#define W_ROCKETLAUNCHER 120
#define W_RAILGUN 285
#define W_BFG10K 130
#define W_LIGHTNING 80
#define W_PLASMAGUN 80
//
//the bot has the weapons, so the weights change a little bit
#define GWW_SHOTGUN 35
#define GWW_MACHINEGUN 50
#define GWW_GRENADELAUNCHER 30
#define GWW_ROCKETLAUNCHER 90
#define GWW_RAILGUN 225
#define GWW_BFG10K 101
#define GWW_LIGHTNING 80
#define GWW_PLASMAGUN 80
//
//initial powerup weights
#define W_TELEPORTER 40
#define W_MEDKIT 40
#define W_QUAD 80
#define W_ENVIRO 40
#define W_HASTE 40
#define W_INVISIBILITY 80
#define W_REGEN 40
#define W_FLIGHT 40
//
//flag weight
#define FLAG_WEIGHT 50
//

Lots of stuff in this file, so I'll cover it group by group. As before, ignore any #include lines in botcode unless you want to dig deeper.

//initial health/armor states

#define FS_HEALTH and FS_ARMOR are the starting states or [F]ile[S]ystems_ for MrElusive's fuzzy logic interbreeding sessions. You can safely ignore these and anything pertaining to fuzzy logic as I won't be discussing in detail. However, it's important to note that id makes extensive use of different health and armor states for their bots. MrElusive doesn't discuss these settings and Slug says to "never alter them." My guess? I "think" this will alter the bot's interest in health and armor items during game. I'm currently studying SDK for more insite.

code:
//initial health/armor states
Angel Xaero
#define FS_HEALTH 1 #define FS_HEALTH 2
#define FS_ARMOR 1 #define FS_ARMOR 2
Bones Slash
#define FS_HEALTH 2 #define FS_HEALTH 2
#define FS_ARMOR 3 #define FS_ARMOR 1
Daemia Keel
#define FS_HEALTH 1 #define FS_HEALTH 1
#define FS_ARMOR 2 #define FS_ARMOR 3
Hunter
#define FS_HEALTH 3
#define FS_ARMOR 2

//initial weapon weights

...

[This message has been edited by UnplayedNamer : 04-17-2002.]

UnplayedNamer
Veteran

Posts: 187
Registered: Aug 2001

posted 04-14-2002 08:26 PM     Click Here to See the Profile for UnplayedNamer    Click Here to Email UnplayedNamer 
Bot Characteristics- Part VIII

...

U N D E R
C O N S T R U C T I O N

...

This tutorial is for server administrators (or anybody) who'd like to customize their bots - modelers, skinners, map & mod developers may find a morsel or 2 here on bot AI, but I suggest using the other forums in Quake3World or PlanetQuake for information. Got any questions pertaining to server bots, post 'em here. I'm assembling this tutorial ON-THE-FLY so bear with me (10+ parts planned).

CURRENT CHAPTERS

BLUE = finished RED = incomplete

Easter Egg Bots? - Part I
Bot Management 101 - Part II
Bot Definitions - Part III
Custom Bot MOD - Part IV
Bot MOD Continued - Part V
Bot Dialog Events - Part VI
Weapon and Item Weights - Part VII
Bot Characteristics- Part VIII


OPTIONAL LINKED RESOURCES

GREEN = highly recommended! YELLOW = for the curious
(OLD) = written or released prior to v1.25, all id docs based on v1.11

METAPAD: Tiny Yet Powerful Editor (win-0S)
BOTBOARD: Bot and AI Discussion Forums
GAMEADMINS: "Admin News You Can Really Use"
SLUG'S: Simple Bot Editing Examples (OLD)
MrELUSIVE's: Fuzzy Logic Bot Docs (OLD)
SLUG's: Bot-Editing Tutorial (OLD)
QUAKECHAT: parse log for chat
HELLCHICK's Vox Feminae for Modelers
AAS: Optimizing Maps for Bots
Q3RADIANT MANUAL: AAS & Bot Navigation
LAKERBOT: Enhanced Bot AI Mod (OLD)

BOT-EPIDEMIC: info for game bots
EYEBALL's bot chat collection?
BOTSTUDIO: Bot Launch Util (OLD)
FERRARI Owner's Classifieds
PLANETROMERO: John's Home Page - hi John!

thx to id's master botologists:
Paul Jaquays, MrElusive, The Seven Swords,
R.A. Salvatore, Steve Winter & anonymous

Reproduction by Permission Please
(questions, answers, or gratuities pertaining to this tutorial):
UnplayedNamer@Yahoo.com


[This message has been edited by UnplayedNamer : 04-16-2002.]

This topic is 8 pages long:   1  2  3  4  5  6  7  8 

All times are PST (US)

Hop to:

Contact Us | Quake3World.com


Ultimate Bulletin Board 5.45c