QSG extensions

From Quake Wiki

Hectate added a To-Do; It would be nice to have a version of the below table for each engine separately (together it would be too large) so a user could reference all the features available in their engine. An ideal place for this might be on the engine information page itself, but as a (default) hidden table instead so the pages aren't huge. I might pick this up sometime soon..

Thanks to a cooperative effort between QuakeSrc, LordHavoc and Tomaz a variety of new engines support a Extension-Detection system called, for the purposes of this wiki, "QSG Extensions". These are meant to be used by QuakeC modders to expand and make use of the new engine features without breaking compatability with other engines (Prydon Gate is a good example of how this can be done).

For more information on how to use these, read about the checkextension builtin.

QSG Extensions are a powerful method. Mods addapt to higher and lower profiles, and engine coders dont need to stop to add new features, and QuakeC modders dont need to stop using it. But doing in the right way, everybody can run mods.

Notes:

  • DarkPlaces and TomazQuake support most of the old QSG keys. Actually this keys have the widen support betwen engines.
  • Telejano adds a lot of new QSG keys, but most are undocumented.
  • The new DarkPlaces builds add some new and very interesting keys.
  • You can deactivate normal features with QSG keys. Example: If you create a engine that not support centerprints. You can use QSG_NO_CENTERPRINT. If you mod its coded checking that centerprint, will run on your engine with no-centerprint and on engines with centerprint. Negative QSG keys are usefull to use Quake1 mods with other engines that can load progs.dat files, like FungusQC.
  • Builtin ranges
Name Supported by
BX_COLOREDTEXT Betwix DarkPlaces FTE
BX_CON_DEL Betwix
BX_CON_EXT Betwix
BX_CON_TEXREPLACE Betwix
BX_CON_VAR Betwix
BX_CON_WRITECONFIG Betwix
BX_ENGINE Betwix
BX_ENT_BOUNCESCALE Betwix
BX_ENT_FRICTION Betwix
BX_ENT_MODELFLAGS Betwix
BX_GFX_SKYBOX Betwix
BX_GFX_SUN Betwix
BX_INPUTBUTTONS Betwix
BX_MDLOVERRIDE Betwix
BX_MULTIPLEFONTS Betwix
BX_P_M_SUPPORT Betwix
BX_QC_CAMERA Betwix
BX_QC_CHECKFOV Betwix
BX_QC_FINDFIELDCHAIN Betwix
BX_QC_GETDATETIME Betwix
BX_QC_INIFILE Betwix
BX_QC_MSGREAD Betwix
BX_QC_PROGPARMS Betwix
BX_QC_PROTOCOL_FLAGS Betwix
BX_QC_SOUNDTEAM Betwix
BX_QC_SPRINTF Betwix
BX_QC_STR Betwix
BX_QC_VECMATH Betwix
BX_QC_VISIBLE Betwix
BX_SERVERPROGS Betwix
BX_SND_MUSIC Betwix
BX_SV_LOCKCVARCMD Betwix
BX_SV_PARSESAY Betwix
BX_SV_UPDATE_CLIENTCVARS Betwix
BX_WAL_SUPPORT Betwix DarkPlaces
BX_WEAPONBOB Betwix
DP_BUTTONCHAT Betwix DarkPlaces
DP_BUTTONUSE Betwix DarkPlaces
DP_CGAME DarkPlaces
DP_CL_LOADSKY Betwix DarkPlaces Telejano ToChriS Vengeance r2
DP_CON_ALIASPARAMETERS DarkPlaces
DP_CON_EXPANDCVAR DarkPlaces
DP_CON_SET Betwix MVDSV DarkPlaces FTE Telejano Vengeance r2 ezQuake ZQuake
DP_CON_SETA Betwix DarkPlaces FTE Vengeance r2
DP_CON_STARTMAP Betwix DarkPlaces Vengeance r2
DP_EF_ADDITIVE DarkPlaces FTE Vengeance r2
DP_EF_BLUE Betwix DarkPlaces FTE Vengeance r2
DP_EF_DOUBLESIDED DarkPlaces
DP_EF_FLAME DarkPlaces Vengeance r2
DP_EF_FULLBRIGHT Betwix DarkPlaces FTE Vengeance r2
DP_EF_NODEPTHTEST Betwix DarkPlaces Vengeance r2 FTE
DP_EF_NODRAW Betwix DarkPlaces FTE Vengeance r2
DP_EF_NOGUNBOB DarkPlaces FTE
DP_EF_NOSHADOW Betwix DarkPlaces FTE
DP_EF_RED Betwix DarkPlaces FTE Vengeance r2
DP_EF_STARDUST DarkPlaces
DP_ENT_ALPHA Betwix DarkPlaces FTE Telejano TomazQuake Vengeance r2
DP_ENT_COLORMOD DarkPlaces Vengeance r2 FTE
DP_ENT_CUSTOMCOLORMAP DarkPlaces FTE
DP_ENT_DELTACOMPRESS
DP_ENT_EXTERIORMODELTOCLIENT Betwix DarkPlaces FTE
DP_ENT_GLOW Betwix DarkPlaces Telejano
DP_ENT_LOWPRECISION DarkPlaces
DP_ENT_SCALE Betwix DarkPlaces FTE Telejano TomazQuake
DP_ENT_TRAILEFFECTNUM FTE
DP_ENT_VIEWMODEL Betwix DarkPlaces FTE
DP_GECKO_SUPPORT FTE
DP_GFX_EXTERNALTEXTURES DarkPlaces
DP_GFX_EXTERNALTEXTURES_PERMAPTEXTURES DarkPlaces
DP_GFX_FOG Betwix DarkPlaces Telejano
DP_GFX_FONTS FTE
DP_GFX_QUAKE3MODELTAGS DarkPlaces FTE
DP_GFX_SKINFILES DarkPlaces
DP_GFX_SKYBOX Betwix DarkPlaces FTE Telejano
DP_HALFLIFE_MAP Betwix DarkPlaces FTE Telejano TomazQuake Vengeance r2
DP_HALFLIFE_MAP_CVAR Betwix DarkPlaces ezQuake FTE ZQuake Vengeance r2
DP_HALFLIFE_SPRITE DarkPlaces
DP_INPUTBUTTONS Betwix DarkPlaces FTE Telejano
DP_LIGHTSTYLE_STATICVALUE FTE
DP_LITSPRITES Betwix DarkPlaces
DP_LITSUPPORT DarkPlaces FTE Vengeance r2
DP_MONSTERWALK DarkPlaces FTE Telejano ZQuake
DP_MOVETYPEBOUNCEMISSILE Betwix DarkPlaces FTE Telejano Vengeance r2
DP_MOVETYPEFOLLOW Betwix DarkPlaces FTE Telejano Vengeance r2
DP_QC_DP_QC_ASINACOSATANATAN2TAN DarkPlaces FTE
DP_QC_CHANGEPITCH Betwix DarkPlaces FTE QMB Twilight
DP_QC_COPYENTITY Betwix DarkPlaces ezQuake FrikQuake FTE FuhQuake QMB Twilight Vengeance r2
DP_QC_CRC16 FTE
DP_QC_CVAR_DEFSTRING DarkPlaces FTE
DP_QC_CVAR_STRING Betwix DarkPlaces MVDSV FTE ZQuake
DP_QC_CVAR_TYPE FTE
DP_QC_EDICT_NUM FTE
DP_QC_ENTITYDATA DarkPlaces
DP_QC_ETOS Betwix DarkPlaces ezQuake FrikQuake FTE FuhQuake QMB Twilight ZQuake
DP_QC_FINDCHAIN Betwix DarkPlaces ezQuake FrikQuake FTE QMB Telejano Twilight
DP_QC_FINDCHAINFLAGS Betwix DarkPlaces FTE
DP_QC_FINDCHAINFLOAT Betwix DarkPlaces ezQuake FrikQuake FTE FuhQuake QMB Telejano Twilight
DP_QC_FINDFLAGS Betwix DarkPlaces FTE
DP_QC_FINDFLOAT Betwix DarkPlaces FrikQuake FTE Twilight QMB FuhQuake
DP_QC_FS_SEARCH DarkPlaces FTE
DP_QC_GETLIGHT DarkPlaces FrikQuake FTE QMB Vengeance r2
DP_QC_GETSURFACE Betwix DarkPlaces Vengeance r2
DP_QC_GETSURFACEPOINTATTRIBUTE FTE
DP_QC_GETTAGINFO DarkPlaces FTE
DP_QC_MINMAXBOUND Betwix MVDSV DarkPlaces ezQuake FrikQuake FTE FuhQuake QMB Twilight ZQuake
DP_QC_MULTIPLETEMPSTRINGS Betwix DarkPlaces FTE
DP_QC_RANDOMVEC Betwix DarkPlaces ezQuake FrikQuake FTE FuhQuake MVDSV QMB Twilight ZQuake
DP_QC_RENDER_SCENE FTE
DP_QC_SINCOSSQRTPOW Betwix MVDSV DarkPlaces ezQuake FrikQuake FTE FuhQuake QMB Twilight ZQuake
DP_QC_SPRINTF FTE
DP_QC_STRFTIME DarkPlaces FTE
DP_QC_STRINGCOLORFUNCTIONS DarkPlaces FTE
DP_QC_STRING_CASE_FUNCTIONS DarkPlaces FTE
DP_QC_STRINGBUFFERS FTE
DP_QC_STRINGBUFFERS_CVARLIST
DP_QC_STRINGBUFFERS_EXT_WIP
DP_QC_STRREPLACE DarkPlaces FTE
DP_QC_TOKENIZEBYSEPARATOR DarkPlaces FTE
DP_QC_TRACE_MOVETYPE_HITMODEL DarkPlaces FTE
DP_QC_TRACE_MOVETYPE_WORLDONLY DarkPlaces FTE
DP_QC_TRACE_MOVETYPES DarkPlaces FTE
DP_QC_TRACEBOX DarkPlaces FrikQuake FTE MVDSV QMB Twilight Vengeance r2 ZQuake
DP_QC_TRACETOSS DarkPlaces FrikQuake FTE QMB Twilight
DP_QC_UNLIMITEDTEMPSTRINGS DarkPlaces FTE
DP_QC_URI_ESCAPE FTE
DP_QC_URI_GET FTE
DP_QC_URI_POST FTE
DP_QC_VECTORVECTORS Betwix DarkPlaces FTE QMB Telejano Twilight
DP_QC_VECTOANGLES_WITH_ROLL DarkPlaces
DP_QC_WHICHPACK FTE
DP_QUAKE2_MODEL Betwix DarkPlaces FTE QMB Telejano TomazQuake Vengeance r2
DP_QUAKE2_SPRITE Betwix DarkPlaces FTE
DP_QUAKE3_MAP DarkPlaces FTE
DP_QUAKE3_MODEL Betwix DarkPlaces FTE QMB Telejano Vengeance r2
DP_REGISTERCVAR Betwix DarkPlaces FrikQuake FTE Telejano Twilight Vengeance r2 ZQuake
DP_SENSITIVITYSCALE Betwix
DP_SND_DIRECTIONLESSATTNNONE Betwix DarkPlaces
DP_SND_FAKETRACKS DarkPlaces
DP_SND_OGGVORBIS Betwix DarkPlaces FTE
DP_SND_SOUND7_WIP2 FTE
DP_SND_STEREOWAV DarkPlaces FTE
DP_SOLIDCORPSE Betwix DarkPlaces FTE Telejano Vengeance r2
DP_SPRITE32 Betwix DarkPlaces FTE QMB Vengeance r2
DP_SV_BOTCLIENT DarkPlaces FTE
DP_SV_CLIENTCOLORS Betwix DarkPlaces FTE
DP_SV_CLIENTNAME Betwix DarkPlaces FTE
DP_SV_CUSTOMIZEENTITYFORCLIENT DarkPlaces FTE
DP_SV_DRAWONLYTOCLIENT Betwix DarkPlaces FrikQuake FTE Telejano ToChriS TomazQuake Vengeance r2
DP_SV_DRAWONLYTOTEAM Betwix
DP_SV_DROPCLIENT Betwix DarkPlaces FTE Vengeance r2
DP_SV_EFFECT Betwix DarkPlaces FTE
DP_SV_ENTITYCONTENTSTRANSITION DarkPlaces
DP_SV_EXTERIORMODELFORCLIENT Betwix DarkPlaces FTE
DP_SV_MODELFLAGS_AS_EFFECTS DarkPlaces
DP_SV_NETADDRESS DarkPlaces
DP_SV_NODRAWTOCLIENT Betwix DarkPlaces FrikQuake FTE Telejano ToChriS TomazQuake Vengeance r2
DP_SV_ONENTITYNOSPAWNFUNCTION DarkPlaces
DP_SV_PING Betwix DarkPlaces
DP_SV_PLAYERPHYSICS Betwix DarkPlaces FTE
DP_SV_POINTPARTICLES DarkPlaces
DP_SV_POINTSOUND DarkPlaces FTE
DP_SV_PRINT DarkPlaces FTE
DP_SV_PRECACHEANYTIME DarkPlaces FTE
DP_SV_PUNCHVECTOR Betwix DarkPlaces
DP_SV_ROTATINGBMODEL DarkPlaces Vengeance r2
DP_SV_SETCOLOR Betwix DarkPlaces FrikQuake FTE Twilight
DP_SV_SLOWMO Betwix DarkPlaces Telejano Vengeance r2
DP_SV_SPAWNFUNC_PREFIX FTE
DP_SV_WRITEPICTURE FTE
DP_SV_WRITEUNTERMINATEDSTRING DarkPlaces ezQuake FTE
DP_TE_BLOOD DarkPlaces FTE QMB Vengeance r2
DP_TE_BLOODSHOWER DarkPlaces QMB Vengeance r2
DP_TE_CUSTOMFLASH DarkPlaces FTE
DP_TE_EXPLOSIONRGB DarkPlaces FTE QMB Vengeance r2
DP_TE_FLAMEJET DarkPlaces FTE Vengeance r2
DP_TE_PARTICLECUBE DarkPlaces QMB FTE
DP_TE_PARTICLERAIN DarkPlaces QMB Vengeance r2 FTE
DP_TE_PARTICLESNOW DarkPlaces QMB Vengeance r2 FTE
DP_TE_PLASMABURN DarkPlaces FTE Vengeance r2
DP_TE_QUADEFFECTS1 DarkPlaces FTE Vengeance r2
DP_TE_SMALLFLASH DarkPlaces FTE
DP_TE_SPARK DarkPlaces Vengeance r2 FTE
DP_TE_STANDARDEFFECTBUILTINS Betwix DarkPlaces FTE
DP_TRACE_HITCONTENTSMASK_SURFACEINFO DarkPlaces
DP_VIEWZOOM Betwix DarkPlaces FTE
DP_WEAPONSKIN Betwix
EXT_BITSHIFT DarkPlaces Betwix FTE
EXT_CSQC DarkPlaces FTE
EXT_DIMENSION_GHOST Betwix FTE
EXT_DIMENSION_PHYSICS Betwix FTE
EXT_DIMENSION_VISIBILITY Betwix FTE
FTE_CALLTIMEOFDAY Betwix MVDSV FTE
FTE_CSQC_ALTCONSOLES FTE
FTE_CSQC_BASEFRAME FTE
FTE_CSQC_HALFLIFE_MODELS FTE
FTE_CSQC_SERVERBROWSER FTE
FTE_CSQC_SKELETONOBJECTS FTE
FTE_CSQC_RAWIMAGES FTE
FTE_CSQC_RENDERTARGETS FTE
FTE_CSQC_REVERB FTE
FTE_CSQC_WINDOWCAPTION FTE
FTE_ENT_SKIN_CONTENTS FTE
FTE_ENT_UNIQUESPAWNID FTE
FTE_EXTENDEDTEXTCODES FTE
FTE_FORCESHADER FTE
FTE_FORCEINFOKEY FTE
FTE_GFX_QUAKE3SHADERS FTE
FTE_GFX_REMAPSHADER FTE
FTE_GFX_MODELEVENTS FTE
FTE_HEXEN2 FTE
FTE_ISBACKBUFFERED FTE
FTE_MEDIA_AVI FTE
FTE_MEDIA_CIN FTE
FTE_MEDIA_ROQ FTE
FTE_MEMALLOC FTE
FTE_MULTIPROGS FTE
FTE_MULTITHREADED FTE
FTE_MVD_PLAYBACK FTE
FTE_MVD_PLAYERSTATS FTE
FTE_NPCCHAT FTE
FTE_PART_SCRIPT FTE
FTE_PART_NAMESPACES FTE
FTE_PART_NAMESPACE_EFFECTINFO FTE
FTE_PEXT_BULLETENS
FTE_PEXT_CUSTOMTENTS FTE
FTE_PEXT_ENTITYDBL FTE
FTE_PEXT_ENTITYDBL2 FTE
FTE_PEXT_FATNESS FTE
FTE_PEXT_HULLSIZE FTE
FTE_PEXT_LIGHTSTYLECOL FTE
FTE_PEXT_LIGHTUPDATES FTE
FTE_PEXT_MODELDBL FTE
FTE_PEXT_ORIGINDBL FTE
FTE_PEXT_Q2BSP FTE
FTE_PEXT_Q3BSP FTE
FTE_PEXT_SETVIEW FTE
FTE_PEXT_SPAWNSTATIC FTE
FTE_PEXT_TE_BULLET FTE
FTE_PEXT_VIEW2 FTE
FTE_PEXT_VWEAP FTE
FTE_PEXT_ZLIBDL FTE
FTE_QC_BASEFRAME FTE
FTE_QC_CHANGELEVEL_HUB FTE
FTE_QC_CHECKCOMMAND FTE
FTE_QC_CHECKPVS FTE ZQuake
FTE_QC_CROSSPRODUCT FTE
FTE_QC_CUSTOMSKINS FTE
FTE_QC_FILE_BINARY FTE
FTE_QC_FS_SEARCH_SIZEMTIME FTE
FTE_QC_HARDWARECURSORS FTE
FTE_QC_HASHTABLES FTE
FTE_QC_INFOKEY FTE
FTE_QC_INTCONV FTE
FTE_QC_MULTICAST FTE
FTE_QC_MATCHCLIENTNAME FTE
FTE_QC_PAUSED FTE
FTE_QC_PERSISTENTTEMPSTRINGS FTE
FTE_QC_RAGDOLL_WIP FTE
FTE_QC_STUFFCMDFLAGS FTE
FTE_QC_SENDPACKET FTE
FTE_QC_TRACETRIGGER FTE
FTE_QUAKE2_CLIENT FTE
FTE_QUAKE2_SERVER FTE
FTE_QUAKE3_CLIENT FTE
FTE_QUAKE3_SERVER FTE
FTE_SPLITSCREEN FTE
FTE_SQL FTE
FTE_SQL_SQLITE FTE
FTE_SOLID_LADDER
FTE_STRINGS FTE
FTE_SV_POINTPARTICLES FTE
FTE_SV_REENTER FTE
FTE_TE_STANDARDEFFECTBUILTINS FTE
FTE_TERRAIN_MAP FTE
FTE_RAW_MAP FTE
FTE_VALID_VEC_HULL3 FTE
FRIK_FILE Betwix DarkPlaces FrikQuake FTE FuhQuake QMB GQ Telejano Vengeance r2
KRIMZON_SV_PARSECLIENTCOMMAND Betwix DarkPlaces FTE FuhQuake
NEH_CMD_PLAY2 Betwix DarkPlaces FrikQuake FTE
NEH_RESTOREGAME Betwix DarkPlaces FTE Telejano
NEXUIZ_PLAYERMODEL DarkPlaces
NXQ_GFX_LETTERBOX DarkPlaces
PRYDON_CLIENTCURSOR DarkPlaces
QSG_CVARSTRING FTE
QSG_FILE FrikQuake Telejano ToChriS
QSG_DIMENSIONAL
QSG_NO_CENTERPRINT FungusQC
QSG_NO_MDL FungusQC
QSG_NO_NETCODE_Q1 FungusQC
QW_ENGINE FTE
QWE_MVD_RECORD FTE
TEI_AUTOANIMATION Telejano
TEI_AUTOFLUOR Telejano
TEI_AUTOFOGWATER Telejano
TEI_AUTOFOOT Telejano
TEI_AUTOLAVA Telejano
TEI_AUTOLIGHTDAY Telejano
TEI_AUTORAIN Telejano
TEI_AUTOSNOW Telejano
TEI_AUTOVANISH Telejano
TEI_AUTOZING Telejano
TEI_BOB2 Telejano
TEI_EF_EXTRA Telejano
TEI_EF2_EXTRA Telejano
TEI_EF3_EXTRA Telejano
TEI_HUDMANAGER Telejano
TEI_LOCALMENUS1 Telejano
TEI_LOCALMENUS2 Telejano
TEI_MAPMODELS Telejano
TEI_MD3_MODEL FTE Telejano
TEI_MENU_MISC2 Telejano
TEI_MOD_PROGS Telejano
TEI_MODPREDATOR Telejano
TEI_MOVMAGNETIC Telejano
TEI_MOVMAGNETICFOLLOW Telejano
TEI_MOVRELATIVESTATIC Betwix Telejano
TEI_SHOWLMP2 FTE Telejano
TEI_SHOWLMP3 Telejano
TEI_STATCOUNT Telejano
TEI_STATICFX Telejano
TEI_STEPSIZE Telejano
TEI_SUN Telejano
TEI_SVSKY Telejano
TEI_TE_ALIENEXPLOSION Telejano
TEI_TE_CUSTOMFX Telejano
TEI_TE_EXPLOSIONSMALL Telejano
TEI_TE_EXPLOSIONSMALL2 Telejano
TEI_TE_EXPLOSIONSMALL3 Telejano
TEI_TE_IMPLOSIONFX Telejano
TEI_TE_LIGHTNING4 Telejano
TEI_TE_LIGHTNINGX Telejano
TEI_TE_PARTICLEBLAST Telejano
TEI_TE_STATICFOG Telejano
TEI_TE_TRAILS Telejano
TEI_THEMEFOLDER Telejano
TEI_TPAKLOAD Telejano
TEI_ZONEFOGS Telejano
TENEBRAE_GFX_DLIGHTS DarkPlaces FTE
TIMESCALE
TQ_DLIGHTS Betwix Telejano TomazQuake
TQ_PLASMA Betwix Telejano TomazQuake
TQ_RAILTRAIL Betwix Telejano TomazQuake
TQ_RAIN Telejano TomazQuake
TQ_SLOWMO Betwix Telejano TomazQuake
TQ_SNOW FrikQuake Telejano TomazQuake
TW_SV_STEPCONTROLS Betwix DarkPlaces Telejano Twilight
UDC_EXTEFFECT
VEN_SCRIPT_PARTICLES Vengeance r2
ZQ_CLIENTCOMMAND ezQuake MVDSV ZQuake
ZQ_INPUTBUTTONS ZQuake
ZQ_ITEMS2 ezQuake MVDSV ZQuake
ZQ_MOVETYPE_NOCLIP (QW) ezQuake FTE MVDSV ZQuake
ZQ_MOVETYPE_FLY (QW) ezQuake FTE MVDSV ZQuake
ZQ_MOVETYPE_NONE (QW) ezQuake FTE MVDSV ZQuake
ZQ_PAUSE MVDSV ZQuake
ZQ_QC_PARTICLE (QW) FTE ZQuake
ZQ_QC_STRINGS ezQuake MVDSV FTE ZQuake
ZQ_QC_TOKENIZE ezQuake MVDSV ZQuake
ZQ_SETINFO ZQuake
ZQ_SOUNDTOCLIENT ZQuake
ZQ_VWEP ezQuake MVDSV ZQuake FTE

See Also[edit]