GUI Scripting: References & Resources
This page is part of a series. See GUI Scripting Language for overview.
FYI - Earliest id Games – Before GUI Scripting
Initially, there was no GUI scripting language, just UI coding in C. See for example:
- For Quake 3 , a 3-part 2001 UI Tutorial by IoN_PuLse, starting with UI Coding Tutorial #1
- For Quake 3 Arena, tutorials about HUD scoreboard (by Heffx) or popup menus (by HypoThermia).
Doom 3/Quake 4 GUI Tutorials and Reference Lists
Much of this TDM wiki "GUI Scripting" series, particularly about Properties, draws from the first 3 references listed next, arguably the three best tutorials and language references of the Doom 3/Quake 4 era. While the original host sites are no more, these pages have been migrated with reformatting to dhewm3. Alternative sources (probably without reformatting) are shown in some cases.
Ref 1 - Making Doom 3 Mods: GUIS
Original Source - www.iddevnet.com
From the original 2004 id Studios documentation, part of an extensive tutorial series "Doom3 Software Development Kit, Making Doom 3 Mods". This particular page includes a walkthrough using the "testguis" command. See GUI Scripting: Tools, for additional commentary about doing that.
Current Source - iddevnet.dhewm3.org
There is also a link to a brief mention of editguis
Alternative Source - old.mrhide.fr
Ref 2 – Doom 3 GUI Scripting
Original Source - www.modwiki.net
This Doom 3 "GUI scripting quick reference" is possibly due to Zeh.
Current Source - modwiki.dhewm3.org
Alternative Source - Wayback Machine
Ref 3 – Quake 4 GUIEditor
Original Source - www.iddevnet.com
Both Doom 3 and Quake 4 have their own versions of an embedded "Quake 4 GUI Editor" invoked by "editguis". See GUI Scripting: Tools. Between Doom 3 and Quake 4, these tools - and their underlying languages and usage - are similar but not identical. So use this 2005 Quake 4 information with caution. Why list it here? Because for many aspects it’s the most informative.
Current Source - iddevnet.dhewm3.org
Ref 4 - Zeh’s Doom 3 "Complete GUI Scripting" Tutorials
Original Source - www.doom3world.org
In 2004, zeh (aka Zeh Fernando), developed an informal "Complete GUI Scripting" tutorial in a doom3world forum. This was subsequently migrated to modwiki, and then more recently to dhewm3. A work-in-progress introduction to the series can be seen in zeh’s personal page, but the links there no longer work.
Current Source - modwiki.dhewm3.org
- Tutorial 0: A GUI script primer
- Tutorial 1: Your first GUI script
- Tutorial 2: Using the built-in GUI editor.
- Tutorial 3: Preparing and importing assets. IMPORTANT: In this link, two versions of the content are appended: the first is missing its images, the second is complete.
- Tutorial 4: Making simple interactions
- Tutorial 5: Applying a GUi script to a map
- Tutorial 6: Creating a new HUD GUI
- Tutorial 7: Creating basic HUD items
- Tutorial 8: Using named events
- Tutorial 9: Animating the marine face HUD
Alternative Source - Wayback Machine
- Tutorial 0: A GUI Script Primer
- Tutorial 1: Your First GUI Script
- Tutorial 2: Using the GUI Editor
- Tutorial 3: Preparing and Importing Assets
- Tutorial 4: Making Simple Interactions
- Tutorial 5: Applying a GUI script to a map
- Tutorial 6: Creating a new HUD GUI
- Tutorial 7: Creating basic HUD items
- Tutorial 8: Using named events
- Tutorial 9: Animating the marine face HUD
Ref 5 – Doom 3 Tutorials by Rich_is_bored
Original Source - www.doom3world.org
Links to Wayback Machine archived versions of this tutorial and Zeh’s above, originally at (now defunct) doom3world.org, were found at this page
Current Source - Wayback Machine
- Quick & Dirty GUI Tutorial
- GUI Command Reference (work in progress)
- Security Camera Tutorial
- Making Video GUIs
Ref 6 - Demo Video by CruiseLinerMod
A 2014 YouTube video showing examples of custom interactive GUIs, as video screens, in Doom 3 style maps. Note the mouse cursors characteristic of Doom 3 interactive GUIs.
Ref 7 - C++ Class Reference for Doom 3 GPL
A visualization of Doom 3’s hierarchy structure, specifically related to classes implementing guiDefs.
TDM Resources Used in Analysis
TDM’s Core GUIs
GUI code full-examples, snippets, and analysis of usage frequency are largely based on TDM 2.10 core menus .gui files, found in tdm_gui01.pk4. This includes (within /guis/) the hierarchy of main menu .gui files, that starts with "mainmenu.gui" and #includes the others (tagged as mainmenu_*.gui). The main menu hierarchy includes not only the starting menu but also briefing, videos, objectives, load/save, missions success, and credits. The GUIs in these files call into the C++ code, as detailed in See GUI Scripting: Parsing of Set 'Cmd'. Those calls appear in event handlers (usually onAction or onTime, less commonly onMouseEnter or onNamedEvent).
TDM’s Core .Scripts and Engine Code
Understanding of GUI syntax and coverage, and development of code snippets and examples, sometimes required delving into associated TDM 2.10 script objects and the underlying engine C++/H source code (2.10 or 2.11 pre).
TDM FM Inspection
A sampling of TDM games (locally acquired during TDM 2.07-2.10 but including games created earlier) was available to text-search. This could provide supplementary insight into patterns of usage, e.g. of .gui and .script features.