Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!

Editing QSB

From Quake Wiki

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
Quake Standards Base is a project which aims to raise the bar of basic Quake modding and mapping. The goal is to push engine devs to support features which are very specific to making mods and maps for Quake (such as increased map and entity limits, external textures and new builtins), rather than user-features (such as a better server browser in the menu, nicer particle effects and an FPS counter).
+
Quake Standards Base (under construction)
  
'''The spec is still a work in progress!'''
+
=== TODO ===
 +
Finalize spec
  
=== Thanks ===
+
=== EXTENSIONS ===
* '''LadyHavoc''' for dpextensions.qc, most features people seem to want were listed and described here
+
QSB will support the [[checkextension]] system, to bring engines which don't already support it up to speed, hence all features will be listed as either existing extensions or new ones will be suggested.
* '''Spike''' for the FTE Wiki
+
 
* '''frag.machine''' for the engine limits list
+
Extensions are listed with descriptions within (sometimes stolen from their respective authors), and a description next to it if the extension differs from the requirement of the standard.
* '''Spirit''' for the [[Engine Limits]] page
+
 
* Everyone who's shown support, contributed with ideas and discussion
+
Extensions which make the engine incompatible with the default Quake protocol are noted with a warning, as this is still an ongoing discussion at the time of writing.
 +
 
 +
 
 +
[[DP_CL_LOADSKY]] pcx with quake palette minimum for software engines, no limit on texture size and texture sizes do not need to match within the same skybox, loads from $game\env\
 +
 
 +
[[DP_GFX_SKYBOX]] pcx with quake palette minimum for software engines, no limit on texture size and texture sizes do not need to match within the same skybox, loads from $game\env\
 +
 
 +
[[DP_GFX_EXTERNALTEXTURES]] required for engines with hardware accelerated rendering, optional for software, attempt to load tga before pcx, pcx before lmp, lmp before wad, loading _diffuse _gloss _norm _bump and _luma are optional
 +
 
 +
[[DP_LITSUPPORT]] required for engines with hardware accelerated rendering
 +
 
 +
[[DP_BUTTONUSE]]
 +
 
 +
[[DP_CON_SET]]
 +
 
 +
[[DP_CON_SETA]]
 +
 
 +
[[DP_EF_ADDITIVE]] required for engines with hardware accelerated rendering '''(ALTERS NETWORK PROTOCOL)'''
 +
 
 +
[[DP_EF_FULLBRIGHT]] this includes support for fullbrights on textures in maps and on model skins '''(ALTERS NETWORK PROTOCOL)'''
 +
 
 +
[[DP_EF_NODEPTHTEST]]
  
=== Todo ===
+
[[DP_EF_NODRAW]]
* Discuss the current suggested extensions listed below
 
* Should QSB care about network protocols?
 
* What about QuakeWorld and specific QuakeWorld features?
 
  
=== Discussion ===
+
[[DP_ENT_ALPHA]] full range required for engines with hardware accelerated rendering, software engines round off to the nearest of 25%, 50% and 75% alpha, based on a lookup table. For hardware accelerated engines this includes support for textures with alpha channels on bmodels and model skins. '''(ALTERS NETWORK PROTOCOL)'''
[http://forums.insideqc.com/viewtopic.php?t=1903 Suggestions for features on IQC]
 
  
[http://forums.insideqc.com/viewtopic.php?t=1953 Discuss existing features on IQC]
+
[[DP_ENT_SCALE]] '''(ALTERS NETWORK PROTOCOL)'''
  
=== Increased Engine Limits ===
+
[[DP_ENT_VIEWMODEL]]
QSB will require some increased limits to bring engines to a more modern level of capability. This is still an ongoing discussion, as some of the limits are incompatible with the default Quake network protocol.
 
  
{| class="wikitable" border="1" style="text-align: center; width: auto;"
+
[[DP_ENT_EXTERIORMODELTOCLIENT]]
|-
 
! Limit name !! Old limit !! New limit !! Note/Category
 
|-
 
! MAX_HANDLES
 
| 10 || 100 || File handling
 
|-
 
! MINIMUM_WIN_MEMORY
 
| 0x01000000 (16Mb) || 0x02000000 (32Mb) || Engine
 
|-
 
! MAXIMUM_WIN_MEMORY
 
| 0x04000000 (64Mb) || 0x08000000 (128Mb) || Engine
 
|-
 
! CON_TEXTSIZE
 
| 16384 || 262144 || Engine (maybe not relevant)
 
|-
 
! MAX_FARCLIP
 
| 4096 || INFINITE || Rendering
 
|-
 
! MAX_EDICTS
 
| 600 || 8192 (*) || Map limit
 
|-
 
! NET_MAXMESSAGE
 
| 8192 || 65536 (****) || Network
 
|-
 
! MAX_STATIC_ENTITIES
 
| 128 || 1024 || Map limit
 
|-
 
! MAX_MAP_LEAFS
 
| 8192 || 32768 (**) || Map limit
 
|-
 
! MAX_LIGHTMAPS
 
| 64 || 256 || Map limit
 
|-
 
! NUMSTACKSURFACES
 
| 800 || 8192 || Map limit
 
|-
 
! NUMSTACKEDGES
 
| 2400 || 8192 || Map limit
 
|-
 
! MAX_VISEDICTS
 
| 256 || MAX_EDICTS || Map limit
 
|-
 
! MAX_DATAGRAM
 
| 1024 || 1400 || Network
 
|-
 
! MAX_MSGLEN
 
| 8000 || 65536 (****) || Network
 
|-
 
! MAX_STACK_DEPTH
 
| 32 || 256 || Engine
 
|-
 
! MAX_EFRAGS
 
| 640 || 2048 || Map limit
 
|-
 
! MAX_CHANNELS
 
| 128 || 512 || Sound
 
|-
 
! MAX_DYNAMIC_CHANNELS
 
| 8 || 128 || Sound
 
|-
 
! MAX_MAP_CLIPNODES
 
| 32767 || 65535 (**) || Map limit
 
|-
 
! MAX_GLTEXTURES
 
| 1024 || 2048 (***) || Rendering
 
|-
 
! MAX_TEMP_ENTITIES
 
| 64 || 1024 || Rendering
 
|-
 
! DYNAMIC_SIZE
 
| 49152 || 262144 || Engine
 
|-
 
! MAX_BMODEL_VERTS
 
| 500 || 1000 || Map limit
 
|-
 
! MAX_BMODEL_EDGES
 
| 1000 || 3000 || Map limit
 
|-
 
! MAXALIASVERTS
 
| 1024(GL) 2000(SW) || 65536 || Model
 
|-
 
! MAXALIASTRIS
 
| 2048 || 65536 || Model
 
|-
 
! MAX_LBM_HEIGHT
 
| 480 || 1024 || Model
 
|-
 
! ABSOLUTE_MIN_PARTICLES
 
| 512 || 1024 || Engine
 
|-
 
! MAX_PARTICLES
 
| 2048 || 16384 || Rendering
 
|-
 
! MAX_MODELS
 
| 256 || 4096 (*) || Network
 
|-
 
! MAX_SOUNDS
 
| 256 || 4096 (*) || Network
 
|-
 
! MARKSURFACES
 
| 32767 || 65535 (**) || Map limit
 
|-
 
! FACES
 
| 32767 || 65535 (**) || Map limit
 
|-
 
! NODES
 
| 32767 || 65535 (**) || Map limit
 
|-
 
! MAX_BEAMS
 
| 24 || 256 || Rendering
 
|-
 
! MAX_DLIGHTS
 
| 32 || 128 || Rendering (might be best left alone)
 
|}
 
* (*) = requires new network protocol
 
* (**) = should be implemented in a non-hacky way (replacing short values with 32-bit ints)
 
* (***) = Hardware-rendering specific
 
* (****) = See FitzQuake README.TXT about multiplayer games sticking to 1400 bytes due network limitations
 
  
=== Supported Extensions ===
+
[[DP_INPUTBUTTONS]]
QSB will support the [[checkextension]] system, to bring engines which don't already support it up to speed, hence all features will be listed as either existing extensions or new ones will be suggested.
+
 
 +
[[DP_MONSTERWALK]] (this one is a maybe, because it doesn't make a lot of sense without SV_PlayerPhysics)
 +
 
 +
[[DP_MOVETYPEBOUNCEMISSILE]]
 +
 
 +
[[DP_MOVETYPEFOLLOW]]
 +
 
 +
[[DP_QC_CHANGEPITCH]]
 +
 
 +
[[DP_QC_CVAR_STRING]]
 +
 
 +
[[DP_QC_FINDFLAGS]]
 +
 
 +
[[DP_QC_FINDFLOAT]] (note, includes findentity)
 +
 
 +
[[DP_QC_MINMAXBOUND]]
 +
 
 +
[[DP_QC_UNLIMITEDTEMPSTRINGS]]
 +
 
 +
[[DP_QC_RANDOMVEC]]
 +
 
 +
[[DP_QC_TRACEBOX]]
 +
 
 +
[[DP_QC_TRACETOSS]] (it seems odd to me that this one needs an existing entity to base on, why?)
 +
 
 +
[[DP_QC_TRACE_MOVETYPE_WORLDONLY]]
 +
 
 +
[[DP_QC_VECTOANGLES_WITH_ROLL]]
 +
 
 +
[[DP_SND_DIRECTIONLESSATTNNONE]]
 +
 
 +
[[DP_SND_FAKETRACKS]] (is this useful without OGG Vorbis or mp3 support?)
 +
 
 +
[[DP_SOLIDCORPSE]]
 +
 
 +
[[DP_SV_DRAWONLYTOCLIENT]]
 +
 
 +
[[DP_SV_ENTITYCONTENTSTRANSITION]]
 +
 
 +
[[DP_SV_MOVETYPESTEP_LANDEVENT]]
 +
 
 +
[[DP_SV_POINTSOUND]]
 +
 
 +
[[DP_SV_NODRAWTOCLIENT]]
 +
 
 +
[[DP_SV_PRECACHEANYTIME]]
 +
 
 +
[[DP_SV_ROTATINGBMODEL]]
 +
 
 +
[[DP_TE_STANDARDEFFECTBUILTINS]]/[[FTE_TE_STANDARDEFFECTBUILTINS]] (depending on type of engine)
  
Extensions are listed with descriptions within (sometimes stolen from their respective authors), and a description next to it if the extension differs from the requirement of the standard.
+
[[DP_VIEWZOOM]] '''(ALTERS NETWORK PROTOCOL)''' (can be implemented as a stat to avoid altering network protocol)
  
Extensions which make the engine incompatible with the default Quake network protocol are noted with a warning, as this is still an ongoing discussion at the time of writing.
+
[[FRIK_FILE]] the DarkPlaces type, reading inside $game and $game/configs/ is prohibited, writing is restricted to $game/data/
  
{| class="wikitable" border="1" style="text-align: center; width: auto;"
+
[[KRIMZON_SV_PARSECLIENTCOMMAND]]
|-
 
! [[DP_CL_LOADSKY]]
 
| pcx with quake palette minimum for software engines, no limit on texture size and texture sizes do not need to match within the same skybox, loads from $game\env\
 
|-
 
! [[DP_GFX_SKYBOX]]
 
| pcx with quake palette minimum for software engines, no limit on texture size and texture sizes do not need to match within the same skybox, loads from $game\env\
 
|-
 
! [[DP_GFX_EXTERNALTEXTURES]]
 
| required for engines with hardware accelerated rendering, optional for software, attempt to load tga before pcx, pcx before lmp, lmp before wad, loading _diffuse _gloss _norm _bump and _luma are optional
 
|-
 
! [[DP_LITSUPPORT]]
 
| required for engines with hardware accelerated rendering
 
|-
 
! [[DP_BUTTONUSE]]
 
|
 
|-
 
! [[DP_CON_SET]]
 
|
 
|-
 
! [[DP_CON_SETA]]
 
|
 
|-
 
! [[DP_EF_ADDITIVE]]
 
| required for engines with hardware accelerated rendering '''(ALTERS NETWORK PROTOCOL)'''
 
|-
 
! [[DP_EF_FULLBRIGHT]]
 
| this includes support for fullbrights on textures in maps and on model skins '''(ALTERS NETWORK PROTOCOL)'''
 
|-
 
! [[DP_EF_NODEPTHTEST]]
 
|
 
|-
 
! [[DP_EF_NODRAW]]
 
|
 
|-
 
! [[DP_ENT_ALPHA]]
 
| full range required for engines with hardware accelerated rendering, software engines round off to the nearest of 25%, 50% and 75% alpha, based on a lookup table. This also includes r_wateralpha support. Bmodels with a water texture and an .alpha value will override r_wateralpha, and use its own value instead, like in FitzQuake. For hardware accelerated engines this includes support for textures with alpha channels on bmodels and model skins. '''(ALTERS NETWORK PROTOCOL)'''
 
|-
 
! [[DP_ENT_SCALE]]
 
| '''(ALTERS NETWORK PROTOCOL)'''
 
|-
 
! [[DP_ENT_VIEWMODEL]]
 
|
 
|-
 
! [[DP_ENT_EXTERIORMODELTOCLIENT]]
 
|
 
|-
 
! [[DP_INPUTBUTTONS]]
 
|
 
|-
 
! [[DP_MONSTERWALK]]
 
| (this one is a maybe, because it doesn't make a lot of sense without SV_PlayerPhysics)
 
|-
 
! [[DP_MOVETYPEBOUNCEMISSILE]]
 
|
 
|-
 
! [[DP_MOVETYPEFOLLOW]]
 
|
 
|-
 
! [[DP_QC_CHANGEPITCH]]
 
|
 
|-
 
! [[DP_QC_CVAR_STRING]]
 
|
 
|-
 
! [[DP_QC_FINDFLAGS]]
 
|
 
|-
 
! [[DP_QC_FINDFLOAT]]
 
| (note, includes findentity)
 
|-
 
! [[DP_QC_FS_SEARCH]]
 
|
 
|-
 
! [[DP_QC_MINMAXBOUND]]
 
|
 
|-
 
! [[DP_QC_UNLIMITEDTEMPSTRINGS]]
 
|
 
|-
 
! [[DP_QC_RANDOMVEC]]
 
|
 
|-
 
! [[DP_QC_TRACEBOX]]
 
|
 
|-
 
! [[DP_QC_TRACETOSS]]
 
| (it seems odd to me that this one needs an existing entity to base on, why?)
 
|-
 
! [[DP_QC_TRACE_MOVETYPE_WORLDONLY]]
 
|
 
|-
 
! [[DP_QC_VECTOANGLES_WITH_ROLL]]
 
|
 
|-
 
! [[DP_QUAKE2_MODEL]]
 
|
 
|-
 
! [[DP_SND_DIRECTIONLESSATTNNONE]]
 
|
 
|-
 
! [[DP_SND_FAKETRACKS]]
 
| (is this useful without OGG Vorbis or mp3 support?)
 
|-
 
! [[DP_SOLIDCORPSE]]
 
|
 
|-
 
! [[DP_SV_DRAWONLYTOCLIENT]]
 
|
 
|-
 
! [[DP_SV_ENTITYCONTENTSTRANSITION]]
 
|
 
|-
 
! [[DP_SV_MOVETYPESTEP_LANDEVENT]]
 
|
 
|-
 
! [[DP_SV_POINTSOUND]]
 
|
 
|-
 
! [[DP_SV_NODRAWTOCLIENT]]
 
|
 
|-
 
! [[DP_SV_PRECACHEANYTIME]]
 
|
 
|-
 
! [[DP_SV_ROTATINGBMODEL]]
 
|
 
|-
 
! [[DP_TE_STANDARDEFFECTBUILTINS]]
 
  
[[FTE_TE_STANDARDEFFECTBUILTINS]]
+
[[FTE_QC_CHECKPVS]]
| (depending on type of engine)
 
|-
 
! [[DP_VIEWZOOM]]
 
| '''(ALTERS NETWORK PROTOCOL)''' (can be implemented as a stat to avoid altering network protocol)
 
|-
 
! [[FRIK_FILE]]
 
| the DarkPlaces type, reading inside $game and $game/configs/ is prohibited, writing is restricted to $game/data/
 
|-
 
! [[KRIMZON_SV_PARSECLIENTCOMMAND]]
 
|
 
|-
 
! [[FTE_QC_CHECKPVS]]
 
|
 
|-
 
! [[FTE_STRINGS]]
 
| (this one's a maybe, is it overkill?)
 
|-
 
! [[NEH_RESTOREGAME]]
 
|
 
|}
 
  
==== New Suggested Extensions ====
+
[[FTE_STRINGS]] (this one's a maybe, is it overkill?)
Some engines already support some of these features, but as they don't exist as extensions, new ones are suggested. Even engines already supporting the features would need to list them as extensions.
 
  
* [[QSB_GAMEPLAYFIXES]]
+
[[NEH_RESTOREGAME]]
* [[QSB_FOG]]
 
* [[QSB_MOVINGSOUNDS]]
 
  
=== Misc. features ===
+
==== New suggested extensions ====
Some required features can't be categorized under anything else, they are listed below.
+
[[QSB_GAMEPLAYFIXES]]
  
* '''Multicontent'''
+
[[QSB_FOG]]
Allows the user to specify multiple mod paths to read content from, with the last in line being the one loaded for play.
 
  
Example commandline: -game quoth -game mymod
+
[[QSB_MULTICONTENT]]
  
This would make "mymod" be the current mod in play, but extra content is loaded from "quoth". Extra content is sounds, models, sprites, textures, maps, more?
+
[[QSB_MOVINGSOUNDS]]
  
* '''Higher precision origins and angles'''
+
=== BUGFIXES ===
Use floating point for origins and shorts for angles '''(ALTERS NETWORK PROTOCOL)'''
+
- render liquid textures of other sizes than 64x64 correctly
  
=== Bugfixes ===
+
- fix rendering of models with large bounding-boxes disappearing at edges of screen
* Render liquid textures of other sizes than 64x64 correctly
 
* Allow sky textures of 4x2 and higher
 
* Fix rendering of models with large bounding-boxes disappearing at edges of screen
 
  
 
== See Also ==
 
== See Also ==
Line 331: Line 124:
 
* [[List of builtin functions]]
 
* [[List of builtin functions]]
 
* [[QSG extensions]]
 
* [[QSG extensions]]
 
[[Category:Abandoned Idea]]
 

Please note that all contributions to Quake Wiki are considered to be released under the GNU Free Documentation License 1.3 or later (see Quake Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)