Difference between revisions of "DelphiDoom"

From DoomWiki.org

[checked revision][checked revision]
(Rephrasing and a little bit of cleaning up.)
(italicize non-core titles, add links)
 
(11 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{InfoboxSourcePort
+
{{InfoboxSoftware
|developer=Jim Valavanis
+
|developer=[[Jim Valavanis (Jval)]]
 
|platform=Windows
 
|platform=Windows
 
|license = {{GPL||2+}}
 
|license = {{GPL||2+}}
 
}}
 
}}
'''DelphiDoom''' is a port of the Linux Doom code to the {{wp|Object Pascal|Delphi programming language}} by Jim Valavanis. It features an advanced software renderer and also supports Chex Quest, Heretic, Hexen, and Strife. DelphiDoom is licensed under the terms of the GNU General Public License.
+
'''DelphiDoom''' is a port of the Linux Doom code to the {{wp|Object Pascal|Delphi programming language}} by [[Jim Valavanis (Jval)]]. It features an advanced software renderer and also supports [[Chex Quest]], [[Heretic]], [[Hexen]], and [[Strife]]. DelphiDoom is licensed under the terms of the {{wp|GNU General Public License}}.
  
 
==General features==
 
==General features==
* Limit-removing engine.
+
* [[Limit-removing]] engine.
 
* Advanced software renderer.
 
* Advanced software renderer.
* OpenGL renderer.
+
* {{wp|OpenGL}} renderer.
* Widescreen support.
+
* [[Widescreen]] support.
* Frame interpolation exceeding the built-in 35Hz ticrate (both software and OpenGL renderers).
+
* Frame interpolation exceeding the built-in 35Hz [[tic]]rate (both software and OpenGL renderers).
* [[Console]] for setting enviroment variables and executing commands.
+
* [[Console]] for setting environment variables and executing commands.
 
* [[Automap]] rotation and overlay.
 
* [[Automap]] rotation and overlay.
 
* Textured automap.
 
* Textured automap.
 
* Custom actor definition via ACTORDEF lumps.
 
* Custom actor definition via ACTORDEF lumps.
* Custom MP3 and MIDI music support.
+
* Custom MP3 and [[MIDI]] music support.
* Voxel support.
+
* {{wp|Voxel}} support.
 
* [[DeHackEd]] and [[BEX]] support.
 
* [[DeHackEd]] and [[BEX]] support.
 +
* Support for the [[UMAPINFO]], [[DEHEXTRA]], and [[MBF21]] standards.
 
* A straightforward launcher.
 
* A straightforward launcher.
* Sloped floors and ceilings.
+
* [[Slope]]d floors and ceilings.
 
* Three-dimensional middle floors (currently only one per sector).
 
* Three-dimensional middle floors (currently only one per sector).
* Advanced PascalScript to customize levels and actors.
+
* Advanced {{wp|Pascal Script}} to customize levels and actors.
* Support for HI_START & HI_END namespace inside PWADs.
+
* Support for HI_START & HI_END namespace inside [[PWAD]]s.
 +
 
 +
==Examples==
 +
In order to demonstrate DelphiDoom capabilities, Valavanis has created several tech demonstrators, illustrating the following:
 +
* A version of ''{{wp|Arkanoid}}'' as a minigame
 +
* A version of {{wp|Snake (video game genre)|Snake}} as a minigame
 +
* A version of {{wp|Mahjong}} in a level
 +
* [[3D floor]]s
 +
* Floating sectors
 +
* Dynamic slopes
 +
* Advanced {{c|.dll}} scripting through Pascal Script
 +
* Procedural trees
 +
* 3D models
  
 
==Rendering engine==
 
==Rendering engine==
Line 33: Line 46:
 
* Texture filtering (optional).
 
* Texture filtering (optional).
 
* Voxels (clipped like sprites). ([https://www.youtube.com/watch?v=jHGIP8zbUKo Video demonstration])  
 
* Voxels (clipped like sprites). ([https://www.youtube.com/watch?v=jHGIP8zbUKo Video demonstration])  
* Post-processing effect to eliminate perspective distortion (similar to the {{wp|keystone effect}}) with mouselook. ([https://www.youtube.com/watch?v=pYnOMg-LClg Video demonstration])
+
* Post-processing effect to eliminate perspective distortion (similar to the {{wp|keystone effect}}) with [[mouselook]]. ([https://www.youtube.com/watch?v=pYnOMg-LClg Video demonstration])
 
* Supports up to 256 logical CPUs in multithreading mode.
 
* Supports up to 256 logical CPUs in multithreading mode.
 
* Optimized column rendering.
 
* Optimized column rendering.
Line 41: Line 54:
  
 
====True color====
 
====True color====
DelphiDoom's software renderer has full true color support, including external true color textures, custom colormaps for fake flat effect (Doom branch only), sprite and wall transparency and dynamic lights. It also uses various techniques to emulate all the palette swapping effects of the original engine.
+
DelphiDoom's software renderer has full true color support, including external true color textures, custom [[colormap]]s for fake flat effect (Doom branch only), sprite and wall transparency and [[dynamic light]]s. It also uses various techniques to emulate all the palette swapping effects of the original engine.
  
 
Screenshots of the software renderer using the [https://github.com/KuriKai/DHTP DHTP] texture pack:
 
Screenshots of the software renderer using the [https://github.com/KuriKai/DHTP DHTP] texture pack:
<gallery>
+
<gallery mode=nolines widths=160px>
 
DelphiDoom_True_Color_Software_Renderer_2.jpg|(Doom E1M1)
 
DelphiDoom_True_Color_Software_Renderer_2.jpg|(Doom E1M1)
DelphiDoom_True_Color_SoftwareRenderer_1.jpg|(Plutonia MAP18)
+
DelphiDoom_True_Color_Software_Renderer_1.jpg|(Plutonia MAP18)
 
</gallery>
 
</gallery>
  
 
====Performance====
 
====Performance====
To take advantage of all the software renderer's advanced features, a modern PC with at least 4 logical CPUs is highly recommented.  
+
To take advantage of all the software renderer's advanced features, a modern PC with at least 4 logical CPUs is highly recommended.
  
 
===OpenGL===
 
===OpenGL===
DelphiDoom also features an OpenGL support, with the following features:  
+
DelphiDoom also features OpenGL support, with the following features:  
* MD2 (Quake2) models.
+
* MD2 (''{{wp|Quake II}}'') models.
 
* Voxels (handled as an optimized polygon mesh).  
 
* Voxels (handled as an optimized polygon mesh).  
 
* External hi-res textures.
 
* External hi-res textures.
Line 67: Line 80:
 
* Walls
 
* Walls
 
* Flats
 
* Flats
* UI Screens
+
* UI screens
  
Software renderer resizes textures with dimensions bigger than 1024x1024 for walls, 512x512 for flats, and the display width and height for UI Screens. OpenGL renderer resizes textures with dimensions bigger than the largest texture the video card can handle.
+
Software renderer resizes textures with dimensions bigger than 1024x1024 for walls, 512x512 for flats, and the display width and height for UI screens. The OpenGL renderer resizes textures with dimensions bigger than the largest texture the video card can handle.
  
 
Supported image formats include:
 
Supported image formats include:
Line 78: Line 91:
 
*PCX
 
*PCX
  
External textures must be placed inside a PK3/ZIP or PAK (Quake) file and loaded with the -pakfile command line parameter. They can also be loaded at runtime using the combination of 'addpakfile' and 'clearcache' console commands.
+
External textures must be placed inside a [[PK3]]/ZIP or PAK (''[[Quake]]'') file and loaded with the -pakfile command line parameter. They can also be loaded at runtime using the combination of 'addpakfile' and 'clearcache' console commands.
 
   
 
   
 
====Voxels====
 
====Voxels====
Following version 1.1.4.580, DelphiDoom supports voxel rendering. They are available in both software and OpenGL renderers. The engine does not use them only as a sprite replacement technique. Instead it supports more that one voxel objects to each mobj state. DelphiDoom's voxel pack is included in the [[Doom voxel project]]. Valid Voxel types are the KVX and slab6 VOX file format (256 colors), and DDVOX and DDMESH file formats (true color). The latter can be created with the [https://sourceforge.net/projects/delphidoom/files/DDVoxels/ DDVOXEL] tool. DDVOX has a simple text file format and DDMESH has binary format including pre-calculated data to speed-up the OpenGL renderer.
+
Following version 1.1.4.580, DelphiDoom supports {{wp|voxel}} rendering. They are available in both software and OpenGL renderers. The engine does not use them only as a sprite replacement technique. Instead it supports more that one voxel objects to each [[mobj]] state. DelphiDoom's voxel pack is included in the [[Doom voxel project]]. Valid Voxel types are the KVX and slab6 VOX file format (256 colors), and DDVOX and DDMESH file formats (true color). The latter can be created with the [https://sourceforge.net/projects/delphidoom/files/DDVoxels/ DDVOXEL] tool. DDVOX has a simple text file format and DDMESH has binary format including pre-calculated data to speed-up the OpenGL renderer.
  
 
====MD2 models====
 
====MD2 models====
MD2 (Quake) models are supported in OpenGL mode only.  
+
MD2 (''Quake II'') models are supported in OpenGL mode only.
  
 
==Compatibility==
 
==Compatibility==
* Good compatibility with the original game demos (Doom branch only). Some demos may get out of sync.  
+
* Good compatibility with the original game [[demo]]s (Doom branch only). Some demos may get out of sync.  
 
* Demo playback compatibility and load/save game compatibility with former releases.
 
* Demo playback compatibility and load/save game compatibility with former releases.
 
* Nearly all [[Boom]] features (Doom branch only).
 
* Nearly all [[Boom]] features (Doom branch only).
* Also supports the very first official shareware version of Doom (0.99), Heretic wide area beta, shareware Heretic, shareware Hexen and Strife teasers (1.0 & 1.1).
+
* Also supports the very first official [[shareware]] version of Doom (0.99), Heretic wide area beta, shareware Heretic, shareware Hexen and Strife teasers (1.0 & 1.1).
  
 
==Branches==
 
==Branches==
Line 99: Line 112:
  
 
==Further developments==
 
==Further developments==
* DelphiDoom is utilized as the basis for a {{wp|game engine recreation|engine remake}} of the {{wp|MS-DOS|DOS}} game {{wp|Radix: Beyond the Void}}, a title featuring a renderer engine similar to Doom's. This engine is caled ''RAD'', developed with the intention to bring Radix to modern operating systems, in addition to providing the ability to create custom levels using existing Doom [[level editor]]s (currently, a [[Doom Builder]] plug-in exists to supplement level creation).
+
* A sister project aimed for the more mainstream {{wp|Free Pascal Compiler}} and {{wp|Lazarus (software)|Lazarus}} is also developed by Valavanis, under the moniker [[FPCDoom]].
+
* DelphiDoom is utilized as the basis for a {{wp|game engine recreation|engine remake}} of the {{wp|MS-DOS|DOS}} game ''{{wp|Radix: Beyond the Void}}'', a title featuring a renderer engine similar to Doom's. This engine is called ''RAD'', developed with the intention to bring Radix to modern operating systems, in addition to providing the ability to create custom levels using existing Doom [[level editor]]s (currently, a [[Doom Builder]] plug-in exists to supplement level creation).
 +
 
 
==External links==
 
==External links==
 
* [https://sourceforge.net/projects/delphidoom/ Project page] on SourceForge
 
* [https://sourceforge.net/projects/delphidoom/ Project page] on SourceForge
 +
* [https://github.com/jval1972/DD_EXAMPLES DelphiDoom demo examples] on SourceForge
 
* [https://sourceforge.net/projects/rad-x/ RAD Engine project page] on SourceForge
 
* [https://sourceforge.net/projects/rad-x/ RAD Engine project page] on SourceForge
  
 
{{s-start}}
 
{{s-start}}
 
{{s-port}}
 
{{s-port}}
{{s-bef|before=[[Linux Doom]]}}
+
{{s-cond}}
{{s-ttl|title=DelphiDoom}}
+
{{s-bef|rows=3|before=[[Linux Doom]]}}
{{s-non|reason=Active}}
+
{{s-ttl|rows=3|title=DelphiDoom}}
 +
{{s-aft-cond|after=Active}}
 +
{{s-aft-cond|after=[[FPCDoom]]}}
 +
{{s-aft-cond|after=RAD}}
 
{{s-end}}
 
{{s-end}}
  
[[Category:Doom ports]][[Category:Heretic ports]][[Category:Hexen ports]][[Category:Strife ports]]
+
[[Category:Doom ports]]
 +
[[Category:Heretic ports]]
 +
[[Category:Hexen ports]]
 +
[[Category:Strife ports]]
 
[[Category:Limit removing source ports]]
 
[[Category:Limit removing source ports]]
[[Category:Source ports]]
+
[[Category:Source ports by name]]

Latest revision as of 06:49, 16 February 2024

DelphiDoom
Developer(s) Jim Valavanis (Jval)
Latest release 2.0.7.733 (2022-04-14, 23 months ago)
Target Platform Windows
License GNU General Public License v2+

DelphiDoom is a port of the Linux Doom code to the Delphi programming language by Jim Valavanis (Jval). It features an advanced software renderer and also supports Chex Quest, Heretic, Hexen, and Strife. DelphiDoom is licensed under the terms of the GNU General Public License.

General features[edit]

  • Limit-removing engine.
  • Advanced software renderer.
  • OpenGL renderer.
  • Widescreen support.
  • Frame interpolation exceeding the built-in 35Hz ticrate (both software and OpenGL renderers).
  • Console for setting environment variables and executing commands.
  • Automap rotation and overlay.
  • Textured automap.
  • Custom actor definition via ACTORDEF lumps.
  • Custom MP3 and MIDI music support.
  • Voxel support.
  • DeHackEd and BEX support.
  • Support for the UMAPINFO, DEHEXTRA, and MBF21 standards.
  • A straightforward launcher.
  • Sloped floors and ceilings.
  • Three-dimensional middle floors (currently only one per sector).
  • Advanced Pascal Script to customize levels and actors.
  • Support for HI_START & HI_END namespace inside PWADs.

Examples[edit]

In order to demonstrate DelphiDoom capabilities, Valavanis has created several tech demonstrators, illustrating the following:

  • A version of Arkanoid as a minigame
  • A version of Snake as a minigame
  • A version of Mahjong in a level
  • 3D floors
  • Floating sectors
  • Dynamic slopes
  • Advanced .dll scripting through Pascal Script
  • Procedural trees
  • 3D models

Rendering engine[edit]

Software[edit]

DelphiDoom has the following major features in its software renderer:

  • External hi-res textures.
  • Advanced 32-bit color mode (default).
  • Texture filtering (optional).
  • Voxels (clipped like sprites). (Video demonstration)
  • Post-processing effect to eliminate perspective distortion (similar to the keystone effect) with mouselook. (Video demonstration)
  • Supports up to 256 logical CPUs in multithreading mode.
  • Optimized column rendering.

Perspective correction[edit]

Perspective correction attempts to eliminate the zaxisshift distortion. This feature was first added in version 0.8.308 (September 3, 2007). The module was redesigned in version 1.1.4.574. See also the original post at the Doomworld thread.

True color[edit]

DelphiDoom's software renderer has full true color support, including external true color textures, custom colormaps for fake flat effect (Doom branch only), sprite and wall transparency and dynamic lights. It also uses various techniques to emulate all the palette swapping effects of the original engine.

Screenshots of the software renderer using the DHTP texture pack:

Performance[edit]

To take advantage of all the software renderer's advanced features, a modern PC with at least 4 logical CPUs is highly recommended.

OpenGL[edit]

DelphiDoom also features OpenGL support, with the following features:

  • MD2 (Quake II) models.
  • Voxels (handled as an optimized polygon mesh).
  • External hi-res textures.
  • Dynamic lightmaps.
  • Simple shadows.

A video demonstrating these OpenGL renderer features can be watched here.

Rendering add-ons[edit]

External textures[edit]

External textures are supported in both software and OpenGL renderers. They can be used to replace:

  • Walls
  • Flats
  • UI screens

Software renderer resizes textures with dimensions bigger than 1024x1024 for walls, 512x512 for flats, and the display width and height for UI screens. The OpenGL renderer resizes textures with dimensions bigger than the largest texture the video card can handle.

Supported image formats include:

  • TGA
  • JPG
  • BMP
  • PNG
  • PCX

External textures must be placed inside a PK3/ZIP or PAK (Quake) file and loaded with the -pakfile command line parameter. They can also be loaded at runtime using the combination of 'addpakfile' and 'clearcache' console commands.

Voxels[edit]

Following version 1.1.4.580, DelphiDoom supports voxel rendering. They are available in both software and OpenGL renderers. The engine does not use them only as a sprite replacement technique. Instead it supports more that one voxel objects to each mobj state. DelphiDoom's voxel pack is included in the Doom voxel project. Valid Voxel types are the KVX and slab6 VOX file format (256 colors), and DDVOX and DDMESH file formats (true color). The latter can be created with the DDVOXEL tool. DDVOX has a simple text file format and DDMESH has binary format including pre-calculated data to speed-up the OpenGL renderer.

MD2 models[edit]

MD2 (Quake II) models are supported in OpenGL mode only.

Compatibility[edit]

  • Good compatibility with the original game demos (Doom branch only). Some demos may get out of sync.
  • Demo playback compatibility and load/save game compatibility with former releases.
  • Nearly all Boom features (Doom branch only).
  • Also supports the very first official shareware version of Doom (0.99), Heretic wide area beta, shareware Heretic, shareware Hexen and Strife teasers (1.0 & 1.1).

Branches[edit]

  • DelphiDoom (primary branch)
  • DelphiHeretic
  • DelphiHexen
  • DelphiStrife

Further developments[edit]

  • A sister project aimed for the more mainstream Free Pascal Compiler and Lazarus is also developed by Valavanis, under the moniker FPCDoom.
  • DelphiDoom is utilized as the basis for a engine remake of the DOS game Radix: Beyond the Void, a title featuring a renderer engine similar to Doom's. This engine is called RAD, developed with the intention to bring Radix to modern operating systems, in addition to providing the ability to create custom levels using existing Doom level editors (currently, a Doom Builder plug-in exists to supplement level creation).

External links[edit]

Source code genealogy
Based on Name Base for
Based on
Linux Doom
DelphiDoom Active
FPCDoom
RAD