====================================== Title : ZEUSbot 2.05 Source Release ====================================== Filename : ZEUS_SRC.ZIP Version : 2.05 Date : 9/15/97 Author : Jonathan E. Wright aka Nelno the Amoeba Email : nelno@resurrection.com, nelno@ionstorm.com Quake DM Name : Nelno [ION] Home Page: http://trailerpark.com/phase1/nelno Check here for the latest updates to all my Quake mods: Zeus, Cujo, plasma gun, BFG, blaze gun and more. If you didn't get this mod from my site, it's likely that you don't have the latest version. Go to the official Zeus bot page at Quake C Archive at: http://www.planetquake.com/qca/zeus Credits : ID Software for designing Quake with Quake C! Otherwise, this bot was built from scratch. Special Thanks : My select group of hardworking beta testers: Gary McMillin, "JumpA" for all the excellent testing and bug reporting he's done for Zeus since version 2.03. Jeff Blaine, jblaine@shore.net for catching all the easily missable bugs in 2.041. Yowza the All-Knowing for the billions of suggestions he's given me (usually reminding me of the nose on my face). Everyone who's sent me mail with suggestions, praises, complaints and ummm... well, that's all. ============ Type of Mod ============ Quake C : yes Sound : no MDL : no ================== Format of Quake C ================== unified diff : no context diff : no .qc files : yes progs.dat : no ================================ Description of the Modification ================================ This is it. The source code for the Zeus bot, version 2.05. It's far from perfect and has some obvious bugs in it, but I've left those as excercises for the reader. Some of the major problems: . the shortest path routine does not work correctly, and causes an infinite loop error in some cases. However, from what I can tell it's a bogus error -- the pathing routine should just be rewritten. . Holo-HUD should be update from PlayerPrethink so that the update is made on a frame by frame basis no matter how fast Quake is running. . the firing delay on some or all of the weapons was trashed in the 2.05 release -- the code isn't checking self.attack_finished to make sure the bot is able to fire again. The only limiting factor right now is the number of frames in each firing sequence. Anyone who knows anything about Quake C should be able to fix this with a single if statement. . Bot-sticking. The nature of the movement code I used in the Zeus bot causes some sticking problems. I wrote the Zeus bot code before ever seeing the Quake source, but since coming to ION Storm I found that my movement code very closely parallels the player movement code in the Quake engine -- however, in Quake C there is an important function missing that allows testing the validity of an object move. It's in Quake, but there's no link to it from Quake C. The problem with the Zeus code is that I'm adding to the z origin of the bot before I push it along in the direction it needs to go -- despite LOTS of tracelines, there are just times when obstructions are missed and the bot can be moved into a solid object. I think I got around a lot of this with 2.05, but it's been a while and I can't remember. A word of warning: if you change the code in ZEUS_movetogoal, be prepared for something to screw up hardcore, it's quite sensitive to changes. . Item grabbing in 2.05 is screwed. I had plans to optimize the bot by flagging all items on the map that were grabbable just as the map started, but I either didn't finished or just screwed it up from the start and it's not working correctly right now. The bots will strafe into items to pick them up during a fight, but they don't seem to go after items when they aren't fighting. . In general, version 2.05 can get quite slow. I added a bunch of crap between 2.04 and 2.05 and didn't optimize any of it. If you go through and optimize the bot remember these things: String compares in QC are REALLY, REALLY slow, so avoid doing them in a loop at all costs. Try to keep searches through the entity list to a minimum -- this is hard because you have to do it to acquire targets, but if you're up to it it shouldn't be too hard to optimize this part of the Zeus code. . Check out all of the debugging impulses -- there are a lot of them that should help you to understand the bot's node generation and pathing procedures. . there is an included Borland Pascal source file called QSTR.PAS which outputs strings that can be pasted into a .qc file to get the orange text effect of a player "say" command. . this archive ONLY contains the source code for Zeus 2.05. To get everything to run right off you'll probably need to also download zeus205.zip. ========================== Questions About the Source ========================== If you have any questions about what the hell is going on with this source, email me at nelno@ionstorm.com or nelno@resurrection.com. The latter will always forward to my current address, so it's probably best to use it. I haven't even looked at the Zeus source for more than 3 months, and haven't been hardcore into it for more than 7 months, so unless you're just stumped, it might benefit you to look around the code yourself a bit before emailing me, because I may not have any idea what's going on either. And yes, I'm sure lots of it is unoptimize lumps of crap, so please don't email me telling me that I should have done this instead of that. Don't get me wrong -- I'm happy to hear suggestions for improving algorithms and such, but try not to nitpick my code, k? ======================================= Copyright and Distribution Permissions ======================================= The modifications included in this archive are Copyright (C) 1996 by Jonathan E. Wright and Quake C is Copyright (C) id Software. The code contained in this archive may be used as the basis for other public domain works. The Zeus bot code CANNOT be used, in whole or in part, as the basis for any commercial or non-public domain work without the written permission of the author, Jonathan E. Wright. You may distribute this Quake modification in any electronic format as long as this description file remains intact and unmodified and is retained along with all of the files in the archive. ============= Availability ============= You can find this archive at the following URLs: ftp://ftp.cdrom.com http://www.trailerpark.com/phase1/nelno http://www.planetquake.com/qca/zeus