-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathreaprb05.txt
180 lines (149 loc) · 7.36 KB
/
reaprb05.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
Title : The Reaper Bot
Filename : reaprb05.zip
Version : 0.5
Date : 96/09/16
Author : Steven Polge
Email : polge@ix.netcom.com
Credits : id software, for making the only computer games I ever play, and for
releasing QuakeC
The QuakeC modifications included in this archive are entirely my
own design.
Build time: 3 weeks of about 2.5 hours/day = about 50 hours so far...
Type of Mod
-----------
Quake C : yes
Sound : no
MDL : no
Format of QuakeC (if a Quake C Mod)
-----------------------------------
unified diff : no
context diff : no
.qc files : no
progs.dat : yes
Description of the Modification
-------------------------------
This may be the most advanced bot opponent currently available. It learns levels as it plays them, picks up and uses all items, roams around. It understands doors, teleports, triggers, and buttons. It will jump off ledges, and avoids landing in lava (understanding the gravity level). When fighting you, it picks the best weapon it has, and strafes, circles or charges. Variable skill levels are provided (skill 3 is very tough).
Commands include:
IMPULSE 200 - add a bot (can do it repeatedly)
(current beta may crash with
more than 5)
IMPULSE 210 - scores
IMPULSE 212 - turn on limited observer mode
(you are invisible to bots unless you
attack them, but move normally)
IMPULSE 213 - turn off limited observer mode
IMPULSE 214 - update bots. Use when the
SV_GRAVITY or SV_MAXSPEED
server cvars are changed.
IMPULSE 215 - turn on verbose mode
(bots tell you what they're doing).
IMPULSE 216 - turn off verbose mode
Features Include:
* 4 skill levels (0 to 3), which affect
- bot accuracy when shooting
- bot yaw speed (how fast it tracks you)
- average bot re-fire rate
- bot reaction time, and pain time
- whether bot leads you with grenades and rockets
* Uses all player frames
* Improved following AI
- can handle following opponents around corners, through
doorways, doors, teleports, etc.
* Dynamic level learning
- Bots build internal map of level as they play, and use
it to roam around, go find weapons, hunt opponents, etc.
* Understands jumping
- predicts jumps based on current gravity level
- won't jump into lava or slime
- will jump up onto low ledges or down, to go after goal
* Combat AI
- charges, strafes, circles based on its weapon, enemy's
weapon, the distance between them, and whether enemy
is running away.
- picks best weapon depending on range (only uses rocket
launcher at close range if it doesn't have anything else
good, and health+armor is high)
- will even if needed go after health, ammo, or a weapon
in the middle of combat!
- trys to avoid combat if health or ammo low, and it
thinks it can escape
- avoids combat with invulnerable enemies
* Improved grenade and rocket aiming
- leads player at higher skill levels
- adjusts grenade aiming to compensate for trajectory
(using current gravity level)
- adjusts rocket aim to avoid lips and edges
* Understands triggers and buttons
- Will go for the triggered entity when it shoots a trigger
or presses a button.
- Doesn't go after doors, etc., which must be triggered
(unless they're already open).
- Doesn't go after triggers or buttons which have already
been activated.
* Understands door, teleporters, and secret doors
- Will fire at secret doors before going through
* Chooses goals according to priorities depending on its current
inventory, health, armor, etc.
- Understands and uses all weapons, ammo, powerups, etc.
- Won't keep going after an item if it can't reach it
- Will use internal map to go after items it wants but
can't see
* Up to 15 bots on a level (but currently may crash if >5)
* Multiplayer Server capability - deathmatch bots vs humans!
- No other files needed by the clients
(they can use their original progs.dat).
* Scoring - Impulse 210 gives a break out of kills & deaths
versus bots and players
* Limited observer mode - you are invisible to bots, but
you walk around rather than flying. Impulse 212 turns
on, Impulse 213 turns off.
* Bot swims in water
- avoids drowning, even during combat
- understands whether it can swim to items
- can jump out of water
- chases enemies into water
- won't use lightning gun underwater unless
invincible
Features to be added in version 1.0
* Skins - so you can differentiate between bots
(needed for team play)
* Observer Mode (improved)
* Team play - with human team leader giving orders
to bots
* Learning AI w/ personalities - chooses camping,
charging, sniping based on previous successes/failures
- retreats when health is low, or bad relative weapons
* Better AI handling of invisible & quad powered opponents
* Yaw bot model up and down
* Improved routing, including route cacheing
* Merge w/ v1.06 Quake source
And more to come...
Known bugs
* Occasional erroneous splash sound by bots, particularly
when spawning
* Bot occasionally jumps into lava, because it glances
off a wall or lands on an edge
* Quake may freeze up with larger numbers of bots (>5)
* Bots don't die in very shallow lava
How to Install the Modification
-------------------------------
Create a directory called RPBOT as a subdirectory in your Quake directory (parallel to the ID1 directory) move the PROGS.DAT file included in this archive to the RPBOT directory. To play, type QUAKE -GAME RPBOT from the Quake directory. This modification only works with the registered version of Quake.
Technical Details
-----------------
The combat and local goal setting AI uses heuristics with fuzzy logic for decision making. I am currently working on supporting learned behaviour based on combat success for the combat AI, as well as the hunting AI.
The roaming AI uses dynamically placed botpaths to move from place to place. The botpath node placement is optimized to guarantee a valid path followable by the bot, while bounding the number of botpath nodes. Botpath routes are dynamically merged to minimize the number of botpath nodes. Multiple spanning trees point in the upstream route direction for routing updates. These routes can be used to go to both static and moving goals (e.g. players). Loop detection and avoidance is implemented both for bots following the paths, and for routing updates. I'm currently implementing route caches to improve performance, and to instantly provide the bot with the route to the "best" (based on distance and type) item of a given class (e.g. health, armor, weapons).
Author Information
------------------
This is my first publicly distributed quakeC patch.
I design router software and protocols for a living.
Copyright and Distribution Permissions
--------------------------------------
The modifications included in this archive are Copyright 1996, Steven Polge. The original
QuakeC source is Copyright 1996, id software.
Authors MAY NOT use these modifications as a basis for other publically / commercially / publically or commercially available work.
You may distribute this Quake modification in any electronic format as long as all the files in this archive remain intact and unmodified and are distributed together.
Availability
------------
This modification is available from the following places:
FTP : ftp.cdrom.com in \pub\quake\quakec\bots