Inside3D tutorials.

Inside3D
 • Front Page
 • Articles
 • Downloads
 • Forums
 • Hosting
 • Help Wanted
 • Interviews
 • Reviews
 • Staff

 
Allied Sites
 - AI Cafe
 - Bot Epidemic
 - Dark Places
 - Flat Earth
 - FrikBot
 - Ghoulish Art
 - Kilbert3D
 - Quake Info Pool
 - QSG: Quake Standards
 - Rusted Fork
 - Stroggs Gone Mad
 - More...
 
Quake
 - Getting Started
 - QuakeC Specs v1.0
 - QuakeC Tutorials
 - Quake Mod Index
 
Quake II
 - Getting Started
 - dll Sourcecode
 - Coding Tutorials
 
.dll Central
 - Getting Started
 - Learning
 - dll Primer
 - dll in C
 - dll in Delphi
 - Compilers
 
Jedi Knight
 - Getting Started
 - COG Specs
 - Sound Specs
 - Tutorials
 
Level Editing
 - Tutorials/Tips
 
 
Telefragged!!!
Created By: Andrew Walbert
eMail: awalbert@epix.net
Difficulty Scale: Easy


Credits
Alan Kivlin - Bot Rankings Stuff
Lee Smith - ProQCC

Purpose
Alright, so the BIP name isn't original. It stands for Bot Improvement Protocal. Unlike the Reaper Improvement Protocal (RIP), BIP will work with ANY bot. In the appendix of the BIP are instructions on making some of the more complex AI functions work with specific bots such as the Reaper or Zeus bots.

Contents
1.0 - Bot Vision
1.5 - Darkness 'Camping' AI
2.0 - Bot Rankings

Bot Vision
This section will show you how to add code to a bot that gives it realistic vision. Realistic vision means that the bot will have a lessor chance of seeing another bot or player that is hiding in a dark area of a level. This is probably the first time that anything like this has been accomplished.

There isn't much to it, but you need to follow the steps exactly.

Step 1
------

Open up the file that your bot uses for it's fighting AI and locate its
check attack subroutine.

Directly ABOVE the check attack subroutine, add this bit of code:

void () botSetNearLight =
{
   local entity e;
   local entity targ;

   targ = self.enemy;

   e = findradius (targ.origin,200);

   if (e.classname == "light")
        nearlight = TRUE;
};

Then, edit the check attack subroutine to include these lines:

   botSetNearLight();

   if (!(nearlight) && (random() < 0.7))
        return;

That should be placed directly after any locals or defines (ex. targ =
self.enemy)

Save and close the file.

Step 2
------

Next, open up defs.qc or whatever file your bot uses for defs.

At the top of the file, insert this line:

float nearlight;

Save and close the file.

Step 3
------

Open up misc.qc and find the light subroutine.

Add this line to it near the beginning:

   self.classname = "light";

Now add that line to the beginning of each of the following subroutines:

light_fluoro                    light_fluorospark
light_globe                     FireAmbient
light_torch_small_walltorch     light_flame_large_yellow
light_flame_small_yellow        light_flame_small_white
Save and close the file.

Conclusion
That was a fairly simple addition to your bot. I wanted to start out with something original, yet simple to do. The next section will show you how to add special AI subroutines to have your bot attempt to hide in darker areas.

Bot Improvement Protocal (1 of 15)
Andrew Walbert
Copyright (c) 1997, All Rights Reserved.

BY USING ANY PORTION OF THE BOT IMPROVEMENT PROTOCAL, YOU AGREE TO THE FOLLOWING TERMS AND CONDITIONS:

ANDREW WALBERT CANNOT BE HELD LIABLE FOR ANY DAMAGES CAUSED TO YOU, YOUR COMPUTER, OR SOFTWARE ON THE COMPUTER SYSTEM. ANY BOT OR QUAKE MODIFICATION RELEASED THAT USES ANY PORTION OF THE BOT IMPROVEMENT PROTOCAL MUST INCLUDE THE FOLLOWING STATEMENT UNALTERED IN THE TEXT FILE ACCOMPANYING THE RELEASE PACKAGE.

This (BOT/Quake Mod) uses code from the Bot Improvement Protocal created by Andrew Walbert (awalbert@epix.net).








The Inside3D content and design is copyrighted by the Inside3D team, and may not be re-produced or copied without proper consent. All rights reserved. Any work credited to any author not part of InsideQC is copyrighted by that author. If you have any feedback, suggestions or flames please send it in to the author. Inside3D is hosted by telefragged and the design was originated by project-9.