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

Difference between revisions of "FTEQW File Formats"

From Quake Wiki

(Corrected some stuff. Added a couple more file types.)
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{todo|user=echos|todo=this page is a work in progress, it's not yet finished}}
+
This is a list of all the file formats that can be used by FTEQW and some of the other commonly used engines. The engines are: FTEQW, DarkPlaces, Quakespasm, Quakespasm Spiked, VK Quake, Mark V, and EZ-Quake.
 
 
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 
==Model and/or Animation==
 
==Model and/or Animation==
Line 10: Line 9:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
 
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1
 
| Quake1
 
| (.mdl)
 
| (.mdl)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- QSS -->
| style="text-align:left;" | Echos: These became known as Alias models, even though that‘s not correct. John Carmack always called these Alias models, so the name stuck.
+
| style="background:green; color:white;" | Y <!-- VK  -->
| none
+
| style="background:green; color:white;" | Y <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y <!-- EZ  -->
 +
| style="text-align:left;" | Echo: These became known as Alias models, even though that‘s not correct. John Carmack always called these Alias models, so the name stuck.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake2
 
| Quake2
 
| (.md2)
 
| (.md2)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Swimmy when animating. Yuck.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake3
 
| Quake3
 
| (.md3)
 
| (.md3)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
| style="text-align:left;" | Echos: Support of md3 may be limited in some engines, such as tags and animations.
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y <!-- EZ  -->
 +
| style="text-align:left;" | Echo: Support of md3 may be limited in some engines, such as tags and animations.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Inter-Quake Model
 
| Inter-Quake Model
 
| (.iqm)
 
| (.iqm)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- QSS -->
| style="text-align:left;" | Echos: The best choice for creating models & animations in FTE and DP. Skeletal animation support for 256 joints. Vertex animation and blendshapes are not supported,  
+
| style="background:darkred; color:white;" | N <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Echo: The best choice for creating models & animations in FTE and DP. Skeletal animation support for 256 joints. Vertex animation and blendshapes are not supported, skeletal only.
  
skeletal only.
+
|-valign="top" style="background:#F8F8F8"
| none
+
| Extended Inter-Quake Model
| none
+
| (.vvm)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Superset of iqm models that adds additional info, allowing for animation events, separate hitmesh, geomsets, and region-specific feedback/damage.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| DarkPlaces Model
 
| DarkPlaces Model
 
| (.dpm)
 
| (.dpm)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| No framegroups/animations (just individual poses).
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Unreal Interchange Model
 
| Unreal Interchange Model
 
| (.psk)
 
| (.psk)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Slow to load (although easy to export). the separate .psa files contain the animation data in an external file.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| GLTF2 / GLTF2 Binary
 +
| (.gltf / .glb)
 +
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Slower to load than iqm files, but more widely exportable and supports PBR materials. The binary .glb files generally embed all textures in a single file. FTE supports most of the spec, though does not fully conform in a few edge cases (which will result in warning messages). Additional format extensions may cause the model to fail to load.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Zymotic Model
 
| Zymotic Model
 
| (.zym)
 
| (.zym)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Only one bone influence per vertex.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| MD5 Mesh
 
| MD5 Mesh
 
| (.md5mesh)
 
| (.md5mesh)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Has no animation data.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| MD5 Anim
 
| MD5 Anim
 
| (.md5anim)
 
| (.md5anim)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Has no mesh data.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| QuakeForge 16bit Alias
 
| QuakeForge 16bit Alias
 
| (.???)
 
| (.???)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | Echos: The Alias model format (Quake1 .mdl) with 16-bit vertices. This gives models more precision, the vertices will show up in-game positioned more accurately.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N <!-- EZ  -->
 +
| style="text-align:left;" | Echo: The Alias model format (Quake1 .mdl) with 16-bit vertices. This gives models more precision, the vertices will show up in-game positioned more accurately.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Half-Life
 
| Half-Life
 
| (.mdl)
 
| (.mdl)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Boo Hiss.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Hexen2
+
| Hexen2MP
 
| (.mdl)
 
| (.mdl)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Only used in the missionpack.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| External Anim
 
| External Anim
 
| (.???)
 
| (.???)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| Text format that allows extracting the animation data from numerous models, to combine with extracted mesh data. This allows you to use eg md5 models without using skeletal objects(csqc).
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| FTE Heightmap Map
 
| FTE Heightmap Map
 
| (.hmp)
 
| (.hmp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | Echos: This format is for creating terrains in FTE, can be used by mappers to make large sandbox-style game levels.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Echo: This format is for creating terrains in FTE, can be used by mappers to make large sandbox-style game levels. Sections are streamed in from disk as required. Models and bsps can be embedded as desired. Entities are really messy right now.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Wavefront
 
| Wavefront
 
| (.obj)
 
| (.obj)
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | LH: DP can use .obj as a map if you provide a .ent file with it. You can also use it as a standard model in DP.
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N <!-- EZ  -->
 +
| style="text-align:left;" | DP can also use .obj as a map if you provide a .ent file.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Alias Triangle
 
| Alias Triangle
 
| (.tri)
 
| (.tri)
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | Echos: This is the real Alias model format. Obsolete, but old files exist. The original Quake1 models were converted from .tri to .mdl with the modelgen utility. Listed  
+
| style="background:darkred; color:white;" | N <!-- VK  -->
 
+
| style="background:darkred; color:white;" | N <!-- MkV -->
for informational purposes, no point to load it in engine.
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
| none
+
| style="text-align:left;" | Echo: This is the real Alias model format. Obsolete, but old files exist. The original Quake1 models were converted from .tri to .mdl with the modelgen utility. Listed for informational purposes, no point to load it in engine.
| none
 
  
 
|}
 
|}
  
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 +
 
==Map Source File (load a .map without compiling it)==
 
==Map Source File (load a .map without compiling it)==
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
Line 205: Line 241:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1
 
| Quake1
 
| (.map)
 
| (.map)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | Echos: External TGA textures will look wrong in FTE due to params not being adjusted.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Texture alignment+size is dependant upon correct texture sizes. Replacement textures will generally appear zoomed in/wrong - texture wads are expected to follow halflife rules (ie: path is ignored, the wad must be id1/*.wad or moddir/*.wad). Don't expect good performance, especially with rtlights.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake2
 
| Quake2
 
| (.map)
 
| (.map)
| style="background:black; color:white;" | ?
+
| style="background:black; color:white;" | ? <!-- FTE -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake3
 
| Quake3
 
| (.map)
 
| (.map)
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- FTE -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | FTE will display patches only using their control points.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Quake3 Brush-Plane
 +
| (.map)
 +
| style="background:darkred; color:white;" | N  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | An alternative way of expressing texture coords.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Half-Life
 
| Half-Life
 
| (.map)
 
| (.map)
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- FTE -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | valve's 220 format allows more texture coords to be expressed more precisely.
  
 
|}
 
|}
Line 264: Line 317:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1
 
| Quake1
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | BSP29 Quake retail-release.
 
| style="text-align:left;" | BSP29 Quake retail-release.
| none
+
 
| none
+
|-valign="top" style="background:#F8F8F8"
 +
| Hexen2
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Expect palette+hull issues when running in quake.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 2PSB
 
| Quake1 2PSB
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:black; color:white;" | ?  <!-- VK  -->
 +
| style="background:black; color:white;" | ?  <!-- MkV -->
 +
| style="background:black; color:white;" | ?  <!-- EZ  -->
 
| style="text-align:left;" | This format is now obsolete, don‘t use it. BSP2 replaced it.
 
| style="text-align:left;" | This format is now obsolete, don‘t use it. BSP2 replaced it.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 BSP2
 
| Quake1 BSP2
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:green; color:white;" | Y  <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:green; color:white;" | Y  <!-- VK  -->
| none
+
| style="background:green; color:white;" | Y  <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | All 16bit limits increased to 32bit (with the 16bit coords becoming floats).
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake2
 
| Quake2
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Yellow.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake3
 
| Quake3
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | So curvacious!
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Half-Life
 
| Half-Life
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | Toolchain license issues.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Qfusion
 
| Qfusion
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
+
| none
 
 
 
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| SOF2
 
| SOF2
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| JK2
 
| JK2
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| JA
 
| JA
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
 
| style="text-align:left;" | Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
| none
 
| none
 
 
|-valign="top" style="background:#F8F8F8"
 
| Extensible BSP / BSPX
 
| (.bsp)
 
| style="background:green; color:white;" | Y
 
| style="background:darkred; color:white;" | N
 
| style="background:darkred; color:white;" | N
 
| style="background:darkred; color:white;" | N
 
| style="text-align:left;" | A type of BSP file that supports additional data lumps. A very good file format, it‘s possible to embed .lit files, Q3 patchmesh, or any other data. Unusable by mappers
 
 
since no tools exist to create it.
 
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 Prerelease
 
| Quake1 Prerelease
 
| (.bsp)
 
| (.bsp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | BSP28 Quake pre-release.
 
| style="text-align:left;" | BSP28 Quake pre-release.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 Alpha/Pre-Alpha
 
| Quake1 Alpha/Pre-Alpha
 
| (.bsp)
 
| (.bsp)
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | BSP27 and earlier. Quake alpha-release.
 
| style="text-align:left;" | BSP27 and earlier. Quake alpha-release.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake Live
 
| Quake Live
| (.???)
+
| (.bsp)
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | Spike: This is essentially a Q3 BSP w/ an additional lump for advertisements.
 
| style="text-align:left;" | Spike: This is essentially a Q3 BSP w/ an additional lump for advertisements.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Wavefront
 
| Wavefront
 
| (.obj)
 
| (.obj)
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: DP can use .obj as a map if you provide a .ent file with it. You can also use it as a standard model in DP.
 
| style="text-align:left;" | LH: DP can use .obj as a map if you provide a .ent file with it. You can also use it as a standard model in DP.
| none
+
 
| none
+
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: RGBLIGHTING
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | Allows embedding rgb lighting directly into a q1 bsp without needing an external .lit file. Compile with ericw's light util using the -bspxlit argument. Also supported by ezquake, so be sure to use this for any quakeworld-centric map as the lighting will survive being auto-downloaded.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: LIGHTING_E5BGR9
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:yellow; color:black;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Shared-exponent floats are slightly larger but allow for more precision as well as significantly more overbrighting. QSS will convert it to ldr on load.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: LIGHTINGDIR
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Equivelent to a .lux file, but embedded into the bsp itself. Compile with ericw's light util using the -bspxlux argument.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: LMSHIFT, LMOFFSET, LMSTYLE
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Allows per-surface lightmap scaling, for higher resolution lightmaps. This is why .lit2 was basically abandoned.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: VERTEXNORMALS
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Allows rtlights+specular lighting effects to respect 'phong'/edge smoothing. ericw stripped support for this from his tool.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| BSPX lump: BRUSHLIST
 +
| (.bsp)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Allows an engine to support collisions using arbitrary sizes. Compile with ericw's qbsp using the -wrbrushes argument.
  
 
|}
 
|}
  
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 +
 
==Map Misc. Data File==
 
==Map Misc. Data File==
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
Line 446: Line 586:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 external lightmap
 
| Quake1 external lightmap
 
| (.lit)
 
| (.lit)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | This is a hack to allow colored lighting in Quake1 maps.
 
| style="text-align:left;" | This is a hack to allow colored lighting in Quake1 maps.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Entity Replacement
 
| Entity Replacement
 
| (.ent)
 
| (.ent)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
| style="text-align:left;" | LH: DP can use .obj as a map if you provide a .ent file with it. FIXME: other uses for .ent?
+
| style="background:green; color:white;" | Y  <!-- VK  -->
| none
+
| style="background:green; color:white;" | Y <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | LH: DP can use .obj as a map if you provide a .ent file with it. Can be used to fix z-fighting bugs, fix entities in walls, remove quad in small deathmatch maps, etc.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| LightDirectionMap
 
| LightDirectionMap
 
| (.dlit)
 
| (.dlit)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N <!-- EZ  -->
 
| style="text-align:left;" | LH: allows bumpmapping with lightmaps. Spike: .lux and .dlit are the same thing. Rename the file extension if you want.
 
| style="text-align:left;" | LH: allows bumpmapping with lightmaps. Spike: .lux and .dlit are the same thing. Rename the file extension if you want.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| DeluxeMap
 
| DeluxeMap
 
| (.lux)
 
| (.lux)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | Echos: DP doesn‘t load .lux so use .dlit the file format is identical.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Echo: DP doesn‘t load .lux so use .dlit the file format is identical.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| RealtimeLights
 
| RealtimeLights
 
| (.rtlights)
 
| (.rtlights)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | Spike: FTE supports spotlight rtlights and spinning static lights, DP doesn't. You can use the spinning light w/ a cubeMap to make it fancy.
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Spike: FTE supports spotlight rtlights and spinning static lights, DP doesn't, which may make format conversions necessary. You can use the spinning light w/ a cubeMap to make it fancy.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Vis Patches
 +
| (.vis)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | These files override the vis data of maps, allowing for transparent water on vanilla maps.
  
 
|}
 
|}
Line 516: Line 674:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Quake wad
+
| Quake's gfx.wad
 
| (.wad)
 
| (.wad)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Targa
+
| Lump
| (.tga)
+
| (.lmp)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Lump
+
| Targa
| (.lmp)
+
| (.tga)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Wally
+
| Image
| (.wal)
+
| (.pcx)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Image
+
| Portable Network Graphics
 
| (.png)
 
| (.png)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Image
 
| Image
 
| (.jpg)
 
| (.jpg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
+
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Image
+
| Quake2 Wall Texture
| (.pcx)
+
| (.wal)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Image
+
| Texture Wad (of other game)
 +
| (.wad)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:green; color:white;" | Y  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | Required for halflife bsp support.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| DirectDraw Surface
 
| (.dds)
 
| (.dds)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | Spike: FTE supports this for bc1-7/dxt stuff FIXME: is this useful to anyone or just internal engine stuff?
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Spike: FTE supports this for bc1-7/dxt stuff. Allows for properly compressed textures for lower gpu memory usage. May have issues with npot texture mip sizes in opengl engines.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Khronos Texture
 +
| (.ktx)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Spike: FTE supports this for bc1-7/dxt/etc1/etc2/hdr. Allows for properly compressed textures even with npot textures for lower gpu memory/bandwidth use.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Microsoft Bitmap
 +
| (.bmp)
 +
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Not scanned for by default (but can be named explicitly).
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Microsoft Icon
 +
| (.ico)
 +
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Not scanned for by default (but can be named explicitly).
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Image
 
| Image
| (.ktx)
+
| (.pfm)
| style="background:green; color:white;" | Y
+
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | Spike: FTE supports this for bc1-7/dxt/etc1/etc2/hdr FIXME: is this useful to anyone or just internal engine stuff?
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Simple HDR format. Not scanned for by default (but can be named explicitly).
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Gimp
 +
| (.xcf)
 +
| style="background:olive; color:white;" | Y <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | HDR or LDR. Many things are not supported, although layers are. Not scanned for by default (but can be named explicitly).
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Photoshop Document
 +
| (.psd)
 +
| style="background:olive; color:white;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Only the base plane will load. Not scanned for by default (but can be named explicitly).
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| 'Radiance' HDR.
 +
| (.hdr)
 +
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | HDR RGBE format. Not scanned for by default (but can be named explicitly).
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| HL Wad
+
| Gimp
| (.wad)
+
| (.exr)
| style="background:black; color:white;" | ?
+
| style="background:yellow; color:black;" | Y  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N <!-- EZ  -->
 +
| style="text-align:left;" | HDR format. Requires external libIlmImf library. Not scanned for by default (but can be named explicitly).
  
 
|}
 
|}
Line 641: Line 895:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 Sprite
 
| Quake1 Sprite
 
| (.spr)
 
| (.spr)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:green; color:white;" | Y  <!-- VK  -->
| none
+
| style="background:green; color:white;" | Y  <!-- MkV -->
| none
+
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | QS is still buggy with regard to framegroups (fixed in QSS+FTE+DP). Quake defines more types of sprite than the number of sprites it actually shipped with.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake2 Sprite
 
| Quake2 Sprite
 
| (.sp2)
 
| (.sp2)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake1 Sprite 32bit
 
| Quake1 Sprite 32bit
 
| (.spr32)
 
| (.spr32)
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
 
| none
 
  
 +
|-valign="top" style="background:#F8F8F8"
 +
| Half-Life Sprite
 +
| (.spr)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:green; color:white;" | Y  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | none
 
|}
 
|}
  
Line 689: Line 958:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| FTE Particles
 
| FTE Particles
 
| (.cfg)
 
| (.cfg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | Language spec: https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/specs/particles.txt
 
| style="text-align:left;" | Language spec: https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/specs/particles.txt
| https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/engine/partcfgs/
+
example: https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/engine/partcfgs/
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| DarkPlaces Particles
 
| DarkPlaces Particles
 
| (.txt)
 
| (.txt)
| style="background:green; color:white;" | Y
+
| style="background:yellow; color:black;" | Y  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:yellow; color:black;" | Y <!-- QSS -->
| style="text-align:left;" | Echos: It‘s easy to convert a DarkPlaces particleinfo.txt file to be used with FTE, but you must do it manually at the console.
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Echo: It‘s easy to convert a DarkPlaces particleinfo.txt file to be used with FTE, but you must do it manually at the console. FTE and QSS can directly use these only when explcitly configured to do so - either r_particledesc effectinfo or a mod that explicitly calls particleeffectnum("effectinfo.something")
  
 
|}
 
|}
Line 726: Line 999:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Quake3 '''partial support'''
+
| Quake3
 
| (.shader)
 
| (.shader)
| style="background:green; color:white;" | Y
+
| style="background:yellowgreen; color:black;" | Y  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:yellow; color:black;" | Y  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | FTE supports q3 shaders for q3 maps only. DP supports single stage shaders only. Realtime lighting breaks these shaders in DP and FTE. Many shaders from Q3 will not  
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
 
+
| style="background:darkred; color:white;" | N <!-- MkV -->
work in DP due to the multiple stages.
+
| style="background:darkred; color:white;" | N <!-- EZ  -->
| none
+
| style="text-align:left;" | Q3 shaders were not designed with rtlights in mind but otherwise work correctly in FTE (and are quite explicit, so can result in other effects getting disabled). Not using the fte_program term can result in lower performance in FTE - especially for skeletal models. DP supports single stage shaders only. Many shaders from Q3 will not work in DP due to the multiple stages, and shaders designed only for DP are malformed as far as Q3+FTE are concerned (ie: expect weirdness).
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| GLSL
 
| GLSL
| (.???)
+
| (.glsl)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N <!-- QSS -->
| style="text-align:left;" | Echos: FTE allows you to create shaders with GLSL. DP only uses GLSL internally. Use Q3 bsp & shader for compat w/ both.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Echo: FTE allows you to create shaders with GLSL. DP only uses GLSL internally. Use Q3 bsp & shader for compat w/ both.
  
 
|}
 
|}
Line 765: Line 1,039:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Quake Config
 
| Quake Config
 
| (.cfg)
 
| (.cfg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 
| style="text-align:left;" | none
 
| style="text-align:left;" | none
| none
+
|}
| none
+
 
 +
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 +
==Sound Effect File==
 +
|-valign="top" style="background:#F8F8F8"
 +
! Format
 +
! Ext
 +
! FTE
 +
! DP
 +
! QS
 +
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 +
! Notes
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Waveform
 +
| (.wav)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:green; color:white;" | Y  <!-- DP  -->
 +
| style="background:green; color:white;" | Y  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:green; color:white;" | Y  <!-- MkV -->
 +
| style="background:green; color:white;" | Y  <!-- EZ  -->
 +
| style="text-align:left;" | DP+FTE support stereo wav files, QSS will average the channels and load game sounds as mono. FTE supports float wavs, the others do not.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Ogg Vorbis
 +
| (.ogg)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:green; color:white;" | Y  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | QS only supports oggs for music, not game sounds.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Ogg Opus
 +
| (.opus)
 +
| style="background:yellow; color:black;" | ffmpeg  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | QS only supports opus for music, not game sounds. FTE can load this audio formats via its ffmpeg plugin (and pretty much any other too).
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| MPEG 2 layer 3
 +
| (.mp3)
 +
| style="background:yellow; color:black;" | Win / ffmpeg <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | FTE can use MP3 as a sound effect on windows, or via ffmpeg on other systems.
  
 
|}
 
|}
  
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
 
{| class="wikitable" style="width:100%; background:#999; text-align:center;" cellpadding="4" cellspacing="1"
==Sound File==
+
==Music Track File==
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
! Format
 
! Format
Line 791: Line 1,130:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| CD Audio
 
| CD Audio
| (.???)
+
| (none)
| style="background:green; color:white;" | Y
+
| style="background:yellowgreen; color:black;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | SDL2-based engines cannot support cd audio, and are likely to no longer support the 'cd' command too. FTE requires -cdaudio commandline arg, or 'cd on' arg to actually enable it.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Waveform
 
| Waveform
 
| (.wav)
 
| (.wav)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QS  -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:green; color:white;" | Y  <!-- VK  -->
| none
+
| style="background:olive; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | This is specific to MUSIC playback (hence some Ns here). FTE supports float wavs, the others do not. All supporting engines also support stereo wavs, which isn't necessarily also true for game sounds.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Ogg Vorbis
 
| Ogg Vorbis
 
| (.ogg)
 
| (.ogg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y  <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:green; color:white;" | Y <!-- QSS -->
| style="text-align:left;" | none
+
| style="background:green; color:white;" | Y  <!-- VK  -->
| none
+
| style="background:olive; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | QS only supports oggs for music, not game sounds. MKV only plays ogg vorbis music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak, so basically doesn't play them. They're otherwise the most widely supported compressed music format.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Ogg Opus
 +
| (.opus)
 +
| style="background:yellow; color:black;" | ffmpeg  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:green; color:white;" | Y  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:olive; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | QS only supports opus for music, not game sounds. FTE can load this audio formats via its ffmpeg plugin. MKV only plays ogg opus music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| MPEG 2 layer 3
 +
| (.mp3)
 +
| style="background:yellow; color:black;" | Win / ffmpeg  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:green; color:white;" | Y  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:yellowgreen; color:black;" | Y  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Engines will load id1/music/*.ogg in preference to mod/music/*.mp3, so this is only useful for users ripping their own fake-track audio. QS only supports mp3s for music, not game sounds. MKV cannot play mp3s inside pak files. FTE can fall back on its ffmpeg plugin for playback on non-windows.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| FLAC
 +
| (.flac)
 +
| style="background:yellow; color:black;" | ffmpeg  <!-- FTE -->
 +
| style="background:darkred; color:white;" | N  <!-- DP  -->
 +
| style="background:green; color:white;" | Y  <!-- QS  -->
 +
| style="background:green; color:white;" | Y  <!-- QSS -->
 +
| style="background:green; color:white;" | Y  <!-- VK  -->
 +
| style="background:olive; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | MKV only plays ogg flac music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak. So basically doesn't support it.
  
 
|}
 
|}
Line 839: Line 1,218:
 
! QS
 
! QS
 
! QSS
 
! QSS
 +
! VK
 +
! MkV
 +
! EZ
 
! Notes
 
! Notes
! Examples
 
! Tutorials
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.avi)
 
| (.avi)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mpg)
 
| (.mpg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mpeg)
 
| (.mpeg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mp4)
 
| (.mp4)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mpeg4)
 
| (.mpeg4)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mjpeg)
 
| (.mjpeg)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.mkv)
 
| (.mkv)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.webm)
 
| (.webm)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.bik)
 
| (.bik)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
| Video
+
| Quake3 Video
 
| (.roq)
 
| (.roq)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
+
| style="background:darkred; color:white;" | N  <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N  <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Directly supported in FTE. LH: supported w/ libavw also known as ffmpeg.
 +
 
 +
|-valign="top" style="background:#F8F8F8"
 +
| Quake2 Video
 +
| (.cin)
 +
| style="background:green; color:white;" | Y  <!-- FTE -->
 +
| style="background:green; color:white;" | Y  <!-- DP  -->
 +
| style="background:darkred; color:white;" | N  <!-- QS  -->
 +
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | Directly supported in FTE. LH: supported w/ libavw also known as ffmpeg.
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.flv)
 
| (.flv)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.wmv)
 
| (.wmv)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.ogv)
 
| (.ogv)
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N  <!-- MkV -->
 +
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
 
| style="text-align:left;" | LH: supported w/ libavw also known as ffmpeg.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.dpv)
 
| (.dpv)
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
 +
| style="background:darkred; color:white;" | N  <!-- VK  -->
 +
| style="background:darkred; color:white;" | N <!-- MkV -->
 +
| style="background:darkred; color:white;" | N <!-- EZ  -->
 
| style="text-align:left;" | LH: a weird little format I made ages ago for a commercial project that needed ultra-low CPU usage.
 
| style="text-align:left;" | LH: a weird little format I made ages ago for a commercial project that needed ultra-low CPU usage.
| none
 
| none
 
  
 
|-valign="top" style="background:#F8F8F8"
 
|-valign="top" style="background:#F8F8F8"
 
| Video
 
| Video
 
| (.jam)
 
| (.jam)
| style="background:black; color:white;" | ?
+
| style="background:darkred; color:white;" | N  <!-- FTE -->
| style="background:green; color:white;" | Y
+
| style="background:green; color:white;" | Y <!-- DP  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QS  -->
| style="background:darkred; color:white;" | N
+
| style="background:darkred; color:white;" | N  <!-- QSS -->
| style="text-align:left;" | LH: videos from the game Blood Omnicide: Legacy of Cain.
+
| style="background:darkred; color:white;" | N <!-- VK  -->
| none
+
| style="background:darkred; color:white;" | N <!-- MkV -->
| none
+
| style="background:darkred; color:white;" | N  <!-- EZ  -->
 +
| style="text-align:left;" | LH: videos from the game "Blood Omen: Legacy of Cain" for use in the DP port "Blood Omnicide: Legacy of Cain." Requires an original playstation game disc.
  
 
|}
 
|}

Revision as of 04:50, 25 October 2020

This is a list of all the file formats that can be used by FTEQW and some of the other commonly used engines. The engines are: FTEQW, DarkPlaces, Quakespasm, Quakespasm Spiked, VK Quake, Mark V, and EZ-Quake.

Model and/or Animation

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake1 (.mdl) Y Y Y Y Y Y Y Echo: These became known as Alias models, even though that‘s not correct. John Carmack always called these Alias models, so the name stuck.
Quake2 (.md2) Y Y N N N N N Swimmy when animating. Yuck.
Quake3 (.md3) Y Y N Y N N Y Echo: Support of md3 may be limited in some engines, such as tags and animations.
Inter-Quake Model (.iqm) Y Y N Y N N N Echo: The best choice for creating models & animations in FTE and DP. Skeletal animation support for 256 joints. Vertex animation and blendshapes are not supported, skeletal only.
Extended Inter-Quake Model (.vvm) Y N N N N N N Superset of iqm models that adds additional info, allowing for animation events, separate hitmesh, geomsets, and region-specific feedback/damage.
DarkPlaces Model (.dpm) Y Y N N N N N No framegroups/animations (just individual poses).
Unreal Interchange Model (.psk) Y Y N N N N N Slow to load (although easy to export). the separate .psa files contain the animation data in an external file.
GLTF2 / GLTF2 Binary (.gltf / .glb) Y N N N N N N Slower to load than iqm files, but more widely exportable and supports PBR materials. The binary .glb files generally embed all textures in a single file. FTE supports most of the spec, though does not fully conform in a few edge cases (which will result in warning messages). Additional format extensions may cause the model to fail to load.
Zymotic Model (.zym) Y Y N N N N N Only one bone influence per vertex.
MD5 Mesh (.md5mesh) Y N N N N N N Has no animation data.
MD5 Anim (.md5anim) Y N N N N N N Has no mesh data.
QuakeForge 16bit Alias (.???) Y N N N N N N Echo: The Alias model format (Quake1 .mdl) with 16-bit vertices. This gives models more precision, the vertices will show up in-game positioned more accurately.
Half-Life (.mdl) Y N N N N N N Boo Hiss.
Hexen2MP (.mdl) Y N N N N N N Only used in the missionpack.
External Anim (.???) Y N N N N N N Text format that allows extracting the animation data from numerous models, to combine with extracted mesh data. This allows you to use eg md5 models without using skeletal objects(csqc).
FTE Heightmap Map (.hmp) Y N N N N N N Echo: This format is for creating terrains in FTE, can be used by mappers to make large sandbox-style game levels. Sections are streamed in from disk as required. Models and bsps can be embedded as desired. Entities are really messy right now.
Wavefront (.obj) Y Y N N N N N DP can also use .obj as a map if you provide a .ent file.
Alias Triangle (.tri) N N N N N N N Echo: This is the real Alias model format. Obsolete, but old files exist. The original Quake1 models were converted from .tri to .mdl with the modelgen utility. Listed for informational purposes, no point to load it in engine.

Map Source File (load a .map without compiling it)

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake1 (.map) Y N N N N N N Texture alignment+size is dependant upon correct texture sizes. Replacement textures will generally appear zoomed in/wrong - texture wads are expected to follow halflife rules (ie: path is ignored, the wad must be id1/*.wad or moddir/*.wad). Don't expect good performance, especially with rtlights.
Quake2 (.map)  ? N N N N N N none
Quake3 (.map) Y N N N N N N FTE will display patches only using their control points.
Quake3 Brush-Plane (.map) N N N N N N N An alternative way of expressing texture coords.
Half-Life (.map) Y N N N N N N valve's 220 format allows more texture coords to be expressed more precisely.

Map Data File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake1 (.bsp) Y Y Y Y Y Y Y BSP29 Quake retail-release.
Hexen2 (.bsp) Y N N Y N N N Expect palette+hull issues when running in quake.
Quake1 2PSB (.bsp) Y Y Y Y  ?  ?  ? This format is now obsolete, don‘t use it. BSP2 replaced it.
Quake1 BSP2 (.bsp) Y Y Y Y Y Y Y All 16bit limits increased to 32bit (with the 16bit coords becoming floats).
Quake2 (.bsp) Y Y N N N N N Yellow.
Quake3 (.bsp) Y Y N N N N N So curvacious!
Half-Life (.bsp) Y Y N N N N Y Toolchain license issues.
Qfusion (.bsp) Y N N N N N N none
SOF2 (.bsp) Y N N N N N N Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
JK2 (.bsp) Y N N N N N N Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
JA (.bsp) Y N N N N N N Raven rbsp: Raven changed two lumps in the q3 format in SoF2/JK2/JA (brush sides and draw surfaces)
Quake1 Prerelease (.bsp) Y N N N N N N BSP28 Quake pre-release.
Quake1 Alpha/Pre-Alpha (.bsp) N N N N N N N BSP27 and earlier. Quake alpha-release.
Quake Live (.bsp) N Y N N N N N Spike: This is essentially a Q3 BSP w/ an additional lump for advertisements.
Wavefront (.obj) N Y N N N N N LH: DP can use .obj as a map if you provide a .ent file with it. You can also use it as a standard model in DP.
BSPX lump: RGBLIGHTING (.bsp) Y N N Y N N Y Allows embedding rgb lighting directly into a q1 bsp without needing an external .lit file. Compile with ericw's light util using the -bspxlit argument. Also supported by ezquake, so be sure to use this for any quakeworld-centric map as the lighting will survive being auto-downloaded.
BSPX lump: LIGHTING_E5BGR9 (.bsp) Y N N Y N N N Shared-exponent floats are slightly larger but allow for more precision as well as significantly more overbrighting. QSS will convert it to ldr on load.
BSPX lump: LIGHTINGDIR (.bsp) Y N N N N N N Equivelent to a .lux file, but embedded into the bsp itself. Compile with ericw's light util using the -bspxlux argument.
BSPX lump: LMSHIFT, LMOFFSET, LMSTYLE (.bsp) Y N N Y N N N Allows per-surface lightmap scaling, for higher resolution lightmaps. This is why .lit2 was basically abandoned.
BSPX lump: VERTEXNORMALS (.bsp) Y N N N N N N Allows rtlights+specular lighting effects to respect 'phong'/edge smoothing. ericw stripped support for this from his tool.
BSPX lump: BRUSHLIST (.bsp) Y N N N N N N Allows an engine to support collisions using arbitrary sizes. Compile with ericw's qbsp using the -wrbrushes argument.

Map Misc. Data File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake1 external lightmap (.lit) Y Y Y Y Y Y Y This is a hack to allow colored lighting in Quake1 maps.
Entity Replacement (.ent) Y Y Y Y Y Y Y LH: DP can use .obj as a map if you provide a .ent file with it. Can be used to fix z-fighting bugs, fix entities in walls, remove quad in small deathmatch maps, etc.
LightDirectionMap (.dlit) Y Y N N N N N LH: allows bumpmapping with lightmaps. Spike: .lux and .dlit are the same thing. Rename the file extension if you want.
DeluxeMap (.lux) Y N N N N N N Echo: DP doesn‘t load .lux so use .dlit the file format is identical.
RealtimeLights (.rtlights) Y Y N N N N N Spike: FTE supports spotlight rtlights and spinning static lights, DP doesn't, which may make format conversions necessary. You can use the spinning light w/ a cubeMap to make it fancy.
Vis Patches (.vis) Y N N N N Y N These files override the vis data of maps, allowing for transparent water on vanilla maps.

Texture File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake's gfx.wad (.wad) Y Y Y Y Y Y Y none
Lump (.lmp) Y Y Y Y Y Y Y none
Targa (.tga) Y Y Y Y Y Y Y none
Image (.pcx) Y Y Y Y Y Y Y none
Portable Network Graphics (.png) Y Y N Y N N N none
Image (.jpg) Y Y N Y N N N none


Quake2 Wall Texture (.wal) Y Y N N N N N none
Texture Wad (of other game) (.wad) Y Y N N N N Y Required for halflife bsp support.
DirectDraw Surface (.dds) Y Y N N N N N Spike: FTE supports this for bc1-7/dxt stuff. Allows for properly compressed textures for lower gpu memory usage. May have issues with npot texture mip sizes in opengl engines.
Khronos Texture (.ktx) Y N N N N N N Spike: FTE supports this for bc1-7/dxt/etc1/etc2/hdr. Allows for properly compressed textures even with npot textures for lower gpu memory/bandwidth use.
Microsoft Bitmap (.bmp) Y N N N N N N Not scanned for by default (but can be named explicitly).
Microsoft Icon (.ico) Y N N N N N N Not scanned for by default (but can be named explicitly).
Image (.pfm) Y N N N N N N Simple HDR format. Not scanned for by default (but can be named explicitly).
Gimp (.xcf) Y N N N N N N HDR or LDR. Many things are not supported, although layers are. Not scanned for by default (but can be named explicitly).
Photoshop Document (.psd) Y N N N N N N Only the base plane will load. Not scanned for by default (but can be named explicitly).
'Radiance' HDR. (.hdr) Y N N N N N N HDR RGBE format. Not scanned for by default (but can be named explicitly).
Gimp (.exr) Y N N N N N N HDR format. Requires external libIlmImf library. Not scanned for by default (but can be named explicitly).

Sprite File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake1 Sprite (.spr) Y Y Y Y Y Y Y QS is still buggy with regard to framegroups (fixed in QSS+FTE+DP). Quake defines more types of sprite than the number of sprites it actually shipped with.
Quake2 Sprite (.sp2) Y Y N N N N N none
Quake1 Sprite 32bit (.spr32) Y Y N Y N N N none
Half-Life Sprite (.spr) Y Y N N N N N none

Particle File

Format Ext FTE DP QS QSS VK MkV EZ Notes
FTE Particles (.cfg) Y N N Y N N N Language spec: https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/specs/particles.txt

example: https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/engine/partcfgs/

DarkPlaces Particles (.txt) Y Y N Y N N N Echo: It‘s easy to convert a DarkPlaces particleinfo.txt file to be used with FTE, but you must do it manually at the console. FTE and QSS can directly use these only when explcitly configured to do so - either r_particledesc effectinfo or a mod that explicitly calls particleeffectnum("effectinfo.something")

Shader File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake3 (.shader) Y Y N N N N N Q3 shaders were not designed with rtlights in mind but otherwise work correctly in FTE (and are quite explicit, so can result in other effects getting disabled). Not using the fte_program term can result in lower performance in FTE - especially for skeletal models. DP supports single stage shaders only. Many shaders from Q3 will not work in DP due to the multiple stages, and shaders designed only for DP are malformed as far as Q3+FTE are concerned (ie: expect weirdness).
GLSL (.glsl) Y N N N N N N Echo: FTE allows you to create shaders with GLSL. DP only uses GLSL internally. Use Q3 bsp & shader for compat w/ both.

Script File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Quake Config (.cfg) Y Y Y Y Y Y Y none

Sound Effect File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Waveform (.wav) Y Y Y Y Y Y Y DP+FTE support stereo wav files, QSS will average the channels and load game sounds as mono. FTE supports float wavs, the others do not.
Ogg Vorbis (.ogg) Y Y N Y N N N QS only supports oggs for music, not game sounds.
Ogg Opus (.opus) ffmpeg N N Y N N N QS only supports opus for music, not game sounds. FTE can load this audio formats via its ffmpeg plugin (and pretty much any other too).
MPEG 2 layer 3 (.mp3) Win / ffmpeg N N Y N N N FTE can use MP3 as a sound effect on windows, or via ffmpeg on other systems.

Music Track File

Format Ext FTE DP QS QSS VK MkV EZ Notes
CD Audio (none) Y Y N N N N N SDL2-based engines cannot support cd audio, and are likely to no longer support the 'cd' command too. FTE requires -cdaudio commandline arg, or 'cd on' arg to actually enable it.
Waveform (.wav) Y Y Y Y Y N N This is specific to MUSIC playback (hence some Ns here). FTE supports float wavs, the others do not. All supporting engines also support stereo wavs, which isn't necessarily also true for game sounds.
Ogg Vorbis (.ogg) Y Y Y Y Y N N QS only supports oggs for music, not game sounds. MKV only plays ogg vorbis music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak, so basically doesn't play them. They're otherwise the most widely supported compressed music format.
Ogg Opus (.opus) ffmpeg N Y Y Y N N QS only supports opus for music, not game sounds. FTE can load this audio formats via its ffmpeg plugin. MKV only plays ogg opus music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak.
MPEG 2 layer 3 (.mp3) Win / ffmpeg N Y Y Y Y N Engines will load id1/music/*.ogg in preference to mod/music/*.mp3, so this is only useful for users ripping their own fake-track audio. QS only supports mp3s for music, not game sounds. MKV cannot play mp3s inside pak files. FTE can fall back on its ffmpeg plugin for playback on non-windows.
FLAC (.flac) ffmpeg N Y Y Y N N MKV only plays ogg flac music when the files are misnamed as '.mp3', and is dependant upon system codecs, and cannot be inside a pak. So basically doesn't support it.

Video File

Format Ext FTE DP QS QSS VK MkV EZ Notes
Video (.avi) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mpg) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mpeg) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mp4) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mpeg4) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mjpeg) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.mkv) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.webm) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.bik) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Quake3 Video (.roq) Y Y N N N N N Directly supported in FTE. LH: supported w/ libavw also known as ffmpeg.
Quake2 Video (.cin) Y Y N N N N N Directly supported in FTE. LH: supported w/ libavw also known as ffmpeg.
Video (.flv) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.wmv) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.ogv) Y Y N N N N N LH: supported w/ libavw also known as ffmpeg.
Video (.dpv) N Y N N N N N LH: a weird little format I made ages ago for a commercial project that needed ultra-low CPU usage.
Video (.jam) N Y N N N N N LH: videos from the game "Blood Omen: Legacy of Cain" for use in the DP port "Blood Omnicide: Legacy of Cain." Requires an original playstation game disc.