-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathfrogbot011b.txt
443 lines (316 loc) · 16.3 KB
/
frogbot011b.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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
Title : Frogbot
Filename : frogbot011b.zip
Date : 14 July 1998
Author : Robert Field
Email : [email protected]
Download : http://www.telefragged.com/metro/
What's new in version 0.11
--------------------------
- Colored bodies in GLQuake.
- QuakeWorld version.
- QuakeWorld emulation in normal Quake version.
- Backpack retrieval bug fixed.
- Better bot weapon selection.
- Faster spawning of bots.
- Some changes to AI.
What's most needed
------------------
- More map support.
How to Install the Modification
-------------------------------
You need Quake version 1.06 or later.
Create a directory called frogbot as a subdirectory in your Quake
directory and unzip frogbot011.zip into it. Include in your command
line parameters -game frogbot -zone 1024. The zone command should stop
unwanted crashes from happening. It is a good idea to allocate as much
memory as possible with the -winmem or -heapsize (GLQuake) commands.
For example, -winmem 16 or -heapsize 16384 (preferably more). Having
large .cfg files which are executed at startup can cause the Frogbot
mod to crash. If this happens then I suggest binding the execution of
these to a key.
Quick way to spawning Frogbots
------------------------------
addbot, add2bots, add3bots, add4bots will add between 1 to 4 bots.
addbot0 through to addbot13 will add one bot of the specified team
color.
Note: Due to the loading mechanism, be patient when spawning bots.
Removing Frogbots
-----------------
removebot removes the last bot that joined the game.
removeallbots removes all bots.
More advanced ways of spawning Frogbots
---------------------------------------
The first thing you should do is grab yourself a copy of the Frogbot
Editor by Tony Browneller. This is a cool program that makes it easy
to create custom bots (eg. it has a graphical method for making bot
names). Some of the commands that follow are superseded by the use of
the Editor.
In the frogbot/bots directory you will see files with the .bot suffix.
Executing one of these will spawn the bot with the information of that
file (or any existing information such as skill if this isn't in the
file). You may make your own .bot file and then execute it to spawn a
bot to your liking. You can select the name, skin (you need a
player.mdl file for this - place this file in the directory
frogbot/progs), skill, and colors (both teamplay 0 and teamplay). By
default, using the addbot commands will randomly spawn a bot from the
list specified in frogbot.cfg. Any .bot file you create can be added
to the random spawn list by editting frogbot.cfg. Follow the existing
pattern (eg. the number on the first line is the number of bot aliases
following).
A .bot file should start with the following 2 lines:
wait;lines=
wait;impulse 26
26 here means that there is a total of 26 non-blank lines in the file.
Though it is optional, it is very useful in stopping reading error
messages of your .bot file, especially if you are a client logging
into a Frogbot server (note that if you spawn a bot on a server, your
own listing of .bot files is used, not those on the server - so you
can turn up with your own Frogbot 'buddies').
A .bot file should end with addbot (though possibly with addbot0
through addbot13 - however, teamshirt= and teampants= discussed below
supercede this command). The lines= command above checks lines up to
this point.
At this point it may be beneficial to refer to bots/hello.bot. It will
spawn a bot with name 'Hello' (with some decoration), color 2 13
during teamplay 0, color 5 4 during teamplay, skill 105, skin 3 (in
Quake), and skin ancients (in QuakeWorld).
The name= command
-----------------
The name= command must be followed by a sequence of impulse numbers
which specify the characters of the name you are creating. You must
indicate the end of this sequence with impulse_0 (NOT impulse 0).
Use the lettercodes command to tell you what numbers correspond to
what letters (type lettercodes more than once to cycle through the
entire list).
The setname command
-------------------
You can use the name= command with the setname command to make your
'fun' name. Execute hello.nam to see an example of this.
The admin= command
------------------
The admin= command must be followed by 3 impulse numbers. This sets
your admin code. By default a server and the clients have admin code
0 0 0. The listen server, or the first client logging onto a dedicated
server, not only sets their own admin code by the admin= command, but
also sets the server admin code. Many commands will only work if your
admin code is equal to that of the server. To enable everyone to
execute any command, just leave everyone's admin code as 0 0 0
(ie. ignore the admin= command).
impulse_0 reminder
------------------
If you want to use impulse 0, then use impulse_0 instead (impulse 0
doesn't work). All impulse commands should be in the range from 0 to
254 (255 is missing since I internally use it for 0).
Other '=' commands
------------------
The list of the other '=' commands is: skill=, skin=, shirt=, pants=,
teamshirt=, teampants=, bots=, teamplay=, deathmatch=, timelimit=,
fraglimit=, addbot=.
All these commands must be followed by a single impulse command.
skill=, skin=, shirt=, pants=, teamshirt=, teampants= set particular
attributes of bots you spawn. For a listen server, skill and skill=
do the same thing. Also, setting teamshirt= and teampants= to say 4
and then using addbot, is equivalent to using addbot4.
The bots= command is used in the frogbot.cfg file. This is the only
place it should be used, and should be changed as you add more bots
to the random spawn list in frogbot.cfg.
teamplay=, deathmatch=, timelimit=, fraglimit= give remote access to
the corresponding variables on the server.
addbot= is used to spawn multiple (random) bots.
Note: If you use color 14 with color command then a random color will
be used.
Remark on included .bot files
-----------------------------
The included .bot files in the random spawn list (in frogbot.cfg)
contain only name and teamplay 0 information. Other information may
be specified at runtime. By default bots will spawn in your team,
though the addbot0 to addbot13 are useful for simple start up of team
games.
Remark on recording demos
-------------------------
If you use addbot to spawn a random bot during a demo, on playback the
demo will contain the 'init' command, and the 'exec' command. To
avoid this, either have the bots already spawned, or include the
entire contents of your desired .bot file in an alias command.
For example: alias thresh "wait;lines=;wait;impulse 15;wait;name=;wait;impulse 212;wait;impulse 104;wait;impulse 114;wait;impulse 101;wait;impulse 115;wait;impulse 232;wait;impulse_0;wait;shirt=;wait;impulse 2;wait;pants=;wait;impulse 1;wait;addbot"
Then type 'thresh' to spawn your punching bag.
Teamplay rules
--------------
teamplay 0 - every man for himself.
teamplay 1 - teammate and self health protect.
teamplay 2 - teammate kill frag penalty.
teamplay 3 - teammate health protect.
teamplay 4 - teammate health and armor protect.
teamplay 5 - teammate health and armor protect, self health
protect.
(warning: in teamplay you suicide if you change pants color).
(note: unlike regular Quake, you must restart a map for new teamplay
settings to take effect with the Frogbot mod).
Deathmatch rules
----------------
deathmatch 1 - all items respawn.
deathmatch 2 - only weapons stay.
deathmatch 3 - weapons stay and other items respawn.
deathmatch 4 - start with full armor, 250 health, all weapons
except the grenade launcher, unlimitted ammo.
health and armor respawn. quad becomes octa.
deathmatch 5 - start with full armor, 200 health, all weapons.
items besides weapons respawn.
deathmatch 6 - start with full armor, 100 health, all weapons,
sufficient ammo. no items. (not Rocket Arena, in
case you were wondering).
Gameplay commands
-----------------
powerup - toggles powerups on and off.
rune - allow/disallow runes.
strength: doubles the damage you inflict
resistence: halves the damage you receive
haste: increases your firing rate
regeneration: regenerates your health and/or armor
hook - allow/disallow hook for clients (Frogbots don't
use it currently).
use_hook - use the hook if it is allowed (bind this to a
convenient key).
custom - toggle use of CTF custom sounds and models (you
need to copy the Threewave Capture Pak0.pak and
Pak1.pak files into the frogbot directory for
this to work). Note: CTF is not currently
supported.
match - toggle countdown match mode.
ready - start 15 second timer (in match mode).
rl_pref - toggle Frogbots' preference of rocket launcher
over the shaft.
Physics altering commands
-------------------------
qwphysics - enables QuakeWorld emulation in normal Quake.
qwaim - enables QuakeWorld crosshair in normal Quake.
rune_rj - if runes are allowed and rune_rj is set then
self-inflicted splash damage/momentum (eg. for a
rocket jump) is the same as for normal Quake.
lavacheat - Toggles whether the Frogbots will cheat in their
avoidance of lava and cliffs.
Skill settings
--------------
skill is from 0 to 200 (default 100 is the hardest noncheating skill).
Note: Once a Frogbot is spawned it retains its initial individual
skill level (the skill setting when it was spawned) even if you change
the skill variable at the console later. To change the skill of the
Frogbots you should remove them from the game.
Note: By spawning a few Frogbots, then changing the skill variable,
then spawning a few more Frogbots, you can have different skill
Frogbots in the same game.
Above skill 100 the Frogbots will cheat with their aim by not shooting
at the crosshair. For a challenge (or not) try skill 200 Frogbots with
lavacheat enabled.
User commands
-------------
frogbot - Toggle the internal frogbot AI taking control of
your controls. Sit back and enjoy the smooth ride.
kascam - Toggle kascam camera. This camera uses the
Kascam 'engine' but I have modified its interface.
Use fire button to change between the observer,
kascam, and kascam follow modes. Use jump to move
up in observer mode, and change target in the
other modes. impulse 1 toggles auto/lock target.
The observer mode is a modification of the CTF
observer mode.
time - prints time (useful in match mode for the correct
time).
Miscellaneous commands
----------------------
samelevel - stores the above commands' configuration (you
could set it in your autoexec.cfg after you find
out what it is for a configuration - this number
may change in future versions).
framerate - prints three framerate numbers on screen. For
debug/testing purposes only.
hide - this toggles hiding many of the frogbot print
messages so that things seem more like a real
game (not recommended).
noskins - if enabled this will not allow people or bots to
use skins (normal Quake).
Warning about restart command
-----------------------------
I advise against using the restart command. It is preferable to use
either the changelevel or map commands. The restart command doesn't
save parm information, so your settings will be those that you had at
the start of the previous map, not the end of the map.
Supported maps
--------------
Currently supported maps: dm4, dm6... doh!
The commands map_dm4 and map_dm6 will remotely change the current map.
Notes on computer requirements and dedicated servers
----------------------------------------------------
If you want to run a large game (say 8 or more players) then if you
are not using a Pentium II you will need to run a dedicated server. I
tested a dedicated server with 16 players (15 bots) first with a 66
MHZ 486 and then with a 133 MHZ Pentium. You can forget about running
a dedicated server with a 486, since I got only 10 fps with the 486.
The dedicated Pentium server on the other hand had 35 fps using
WinQuake and 40 fps (the maximum, set using sys_ticrat 0.025) using
the MS_DOS prompt.
About the mod
-------------
The Frogbot mod is a tribute to the excellent gameplay of multiplayer
LAN Quake and my continuing attempt to create a bot that is believably
human. I judge my efforts largely on the game product you play.
The current AI of the Frogbot is what I would regard as a fairly
minimal working model. I do intend to greatly improve it over time.
Though it is true that QuakeC presents limitations of all sorts, by
using a bit of ingenuity I have been able to push QuakeC to the
limits.
The first requirement of a 'human' bot, as opposed to a 'bot' bot, is
fluent navigational skills. With the sacrifice of using static
waypoints the Frogbot can achieve fluent navigation around a level,
and moreover can actually be programmed in QuakeC (this is assuming
todays relatively slow cpu speeds).
The Frogbot is basically an exact client emulation bot.
I have decided to make my so far incomplete efforts available to the
Quake community so that other people can share in the enjoyment of
playing the Frogbot.
Copyright and Distribution Permissions
--------------------------------------
The modifications included in this archive are Copyright 1998, Robert
Field. The original QuakeC source is Copyright 1996, id software.
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.
Disclaimer
----------
Software under this agreement is under no kind of warranty. Software
under this agreement is provided as is, and isn't guaranteed in any
way by the mod author. Use this software at your own risk.
Code Credits
------------
id softare for Quake and QuakeC.
Alan 'Strider' Kivlin whose scoreboard code let me understand how to
do the scoreboard for QuakeC bots (normal Quake and Quakeworld). He
also indirectly taught me the color bot and thud removal methods.
Mr Elusive for suggesting a better stair climbing method, and for
suggesting Alan Kilvin's color bot and thud removal methods.
Simon Byrnand whose bot physics code gave me an idea to make the above
stair climbing code more efficient (I was able to eliminate my call to
droptofloor).
Uwe Girlich for the unofficial DEM and QW format description which
partially helped me to extend Alan's scoreboard code idea to support
selectable bot names (in Quake and QuakeWorld).
Karel 'Kasuha' Suhajda for the KasCam DeathMatch Camera code.
Dave 'Zoid' Kirsch for the CTF code.
Compiler Credit
---------------
This mod was compiled with meqcc.exe, the 'undecompilable' QuakeC
compiler written by Mr Elusive.
Names Credit
------------
Timm Stokke for zap, yoda, frag-god, dragon, Superman, and dizzy.
Mark 'Dethon' Petler for killingmachine, generalfailure, corpsegrind,
and addicted2quake. Jim calls him Dethonslut. :)
Further Thanks
--------------
Mr Elusive for providing inspiration with his impressive Omicron bot.
If you haven't played it then what are you waiting for!
Timm Stokke for helping with the beta testing, for providing space
on Metropolis and being curious about the Frogbot when it was a
Tadpolebot. :)
The Bot Epidemic and Randar for their support.
All the people who have given me feedback (positive or negative).