2002.03.06 ~09 Q3TA menu docs update http://linux.ucla.edu/~phaethon/q3tamenu/q3tamenu.html This is something that I've been working on for... whoa... over a year. It started when WFA cannibalized Quake 3: Team Arena's new menu/HUD code. Originally, I set out to customize my HUD in Weapons Factory Arena. I banged up this file to sort out what was available and how I could combine the pieces for desired effects (analysis to assist synthesis). As I became more disinterested in WFA, the scope of the docs expanded to general documentation. Currently, its target audience consists of HUD customizers and the poor sod stuck typing up all the .menu files for a mod, but not those of the programming persuasion. I expect to gradually include the coders in due time. The significant update recently, though, is the section on uiScript. Much of the initial substance is contributed by dementor (dementor@c:::::.n::). While trying to figure out uiScript by groveling through the Q3 game source tree, more of the menu puzzle fell into place for me. It's uiScript that initiates complex actions within the mod from the menu UI (e.g. adding the currently selected server to your list of favorite servers unless the list is already full). I consider this something of a kludge. Although the Q3TA menu system is heavily data-driven, Turing-complete code can only be expressed in the pre-compiled QVM files ("mod code"). Code cannot be created or extended at runtime. I consider this a Bad Thing, as it puts limits on what can be accomplished in the menus and HUD by those without access to the mod source (mostly those who would be called "end users"). One thing I like about Tribes 2 is its extensible language. It is powerful and flexible enough to allow different modules to sit on top of each other simultaneously, the player mixing and matching on whim. Unreal Tournament also achieves similar effects, however, almost all Tribes 2 code extensions come with source, providing _me_ with an unprecedented amount of tweakage -- instead of working around a misfeature or starting over from scratch, I can hack on the component directly. This sort of extensibility is something I'd like to have for Quake 3.