It's a great example of how to have modularity and good structured design in a medium-scale C project. Personally, I found that the engine was a great combination of really smart things done in really dumb ways, really dumb things done in really smart ways, and really smart things done in really smart ways. Flexible windowing and widget toolkit for making flexible displays on the client hud (using bar charts, text boxes, picture boxes, context menus, resizeable windows, etc.).Interface with an SQL database to pull and display records.Simple command-line interface to call shell commands from the console and dump the stdout/stderr streams back to the console (the Quake console).Some neat things I've made for it with a coworker: You can use the STL too-there is no reason to rigidly follow the C idioms except where you directly interface with the engine. dlls, feel free to allocate memory, write in C++, or whatever else floats your boat. It is usable once you puzzle it out, but that can take some trial and error. The UI for the menu system is a strange, evil, twisted stack of structures and callbacks.When modding and using native dlls, you will have to run the game as quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0 in order to allow the engine to run native code instead of VM code. Game logic can be entirely written to run in the Quake 3 virtual machine.Look in (if memory serves) the cgame and render projects to find the actual engine code. The engine itself is separated (hard!) from the game logic, using trap functions.Input is directed first to a console, if interested, then to the GUI, then to the game proper.There is always a server there may also be client logic sitting on top of handling a frame.Some key points that helped me when I was working with it: I'd suggest starting from the original source release from id, instead of ioquake3 or what-have-you, in order to really see the context of what's going on (how input is handled and directed inside the engine, what sort of underlying event structure is used, etc.).
#Quake 3 engine games mod#
In addition to that, you'll have to trawl through a bunch of whatever old mod tutorials you can find to try and reconstruct what's going on. That can be augmented by Brian Hook's GDC talk summary and some old stuff on the Element 61 blog. So, you should start by looking at Wikipedia's article on id Tech 3.