home *** CD-ROM | disk | FTP | other *** search
- Complete Quake-c ver 1.06 package:
- Compiled by Rob Albin (albinatr@apci.net)
-
- I basically made this since Id never got around to making a complete
- Quake-c ZIP including the QC source and compiler for ver 1.06.
- Also added two files that IMO are really usefull with the package.
-
-
- Includes:
- Original Quake-c utilities
- (compiler and source code for compiler)
-
- ver 1.06 of the QC PROGS.DAT source files
- (includeing updated client.qc and weapons.qc)
-
- qccwin32.exe, a faster QC compiler
- (author unknown, from ftp://cdrom.com/pub/quake/utils/quakec/)
-
- qcman10.txt, a comprehensive QC reference manual
- (by Ferrara Francesco, from ftp://cdrom.com/pub/quake/docs/editing/)
-
- (PROGS.DAT deleted from archive, for space.)
-
-
- --------------------
- ORIGINAL README.TXT
- --------------------
-
- This is the last major component of the quake utilities to be released.
- To be honest, I have been a little reticent to release this because
- most of the actual qc code is basically rather embarassing crap.
- The time never became available to even give it a good top to bottom
- going over. I never spent any quality engineering time on my parts,
- American wrote a lot of qc code, and even Romero has a bit of work in
- there. It is a mess. If you look through the code and occasionally
- think "This is stupid!", you are probably right...
-
- The compiler itself can be drastically sped up by just replacing the
- symbol searches with binary trees or hashing. We remotely compile on
- our alpha, so it hasn't been a big enough issue for me to do it, but
- as the code size grows and grows it will be done sooner or later.
-
-
- The resulting code is horribly nieve and space ineficient (twleve
- bytes / instruction). If common subexpression removal was added,
- the instruction count could probably be cut nearly in half. I would
- have liked to have done a better job at this, but this was my first
- compiler front end, and I had a ton of other things fighting for my
- time. The next one will turn out better. (wow, I'm making a lot of
- excuses here, aren't I?)
-
-
- Qcc also performs some other maintenence functions for us, like
- rebuildinng all the brush models and making pak files, but those
- functions are only usefull if you have created all new data for
- everything. models.qc and sprites.qc don't actually generate any
- code, they are just parsed by modelgen and spritegen and included for
- completeness.
-
-
-
- To modify the quake program code, set up a new game directory parallel
- with id1, and containing a "progs" subdirectory. Copy all the .qc
- files and progs.src into that, and just run qcc from that directory.
- That will compile all of the files listed in progs.src and (if there
- aren't any errors) generate a new progs.dat file in the parent
- directory.
-
-
- As a simple test, open the client.qc file, go to the ClientObituary
- function at the end, and change some of the messages.
-
- The directory structure will look something like:
-
- /quake/quake.exe
- /quake/id1/
- /quake/mygame/progs.dat
- /quake/mygame/progs/progs.src
- /quake/mygame/progs/world.qc
- /quake/mygame/progs/client.qc
- /quake/mygame/progs/... etc ...
-
- Run quake with "-game mygame", which will cause quake to look for data
- in the mygame directory before falling back to id1. In this example,
- it will find the new progs.dat from mygame, and take everything else
- from id1. You can type "path" at the quake console to verify the
- current search order of directories and pak files. THIS WILL ONLY
- WORK WITH A REGISTERED VERSION OF QUAKE.
-
-
- The header qcc.h has the language spec and some documentation, but
- I'm not positive if it is all current.
-
-
- The only documentation for the various builtin functions I can offer
- is the source code used by quake. See builtin.c. Some of them are
- required to do things outside the scope of the qc world, and some are
- just there for speed reasons.
-
-
- PLEASE don't ask me questions about all this!
-
-
- John Carmack
-
-