General Terms & Tips
Finding Things
Trying to find a struct or function definition? Your best bet is probably grep. Most structs (though not all), you'll do better looking for structname_s rather than structname_t, since the _s version is usually only used in the definition, and _t will return a lot of chaff. Function definitions you can probably narrow down by only selecting lines that also contain a "{". Example:
grep -r "BotQuagentAI" code | grep "{"
If you're working on our official Quagents project you probably need to keep all those pesky .svn files around. In this case, you can narrow your search by piping it through grep -v "svn" as well. Otherwise, you can remove them with some clever command line work.
Frames
We call an iteration of a game-driving loop a "frame". Because the client and the server are on different machines, client frames and server frames may operate at completely different frequencies. Quagent AI is called every single server frame (unlike normal Quake bot AI). This is unlikely to cost much computationally on a modern machine, since they are far more powerful than machines made in the early 90s.
Finding More Help
Google is your friend, since many people have done mod programming in Quake 3 long before you. Of course, anything that applies to bots is going to be useless since we've completely changed all that.
If you have a specific question, you can e-mail Josh Pawlicki at gilgarn@…, and I'll be happy to answer if I can.
Check out the #ioquake3 IRC channel on irc.freenode.net. You'll probably have a response delay of a few minutes, but there are helpful people there.
If you're at URCS you can hunt down Professor Ted Pawlicki for his Quake 3 Mod Programming book. It's pretty accurate if a little bit of an intro-programming text. I've made some corrections in the margins of his copy.