Difference between revisions of "Comparison of source ports"

From DoomWiki.org

[unchecked revision][checked revision]
(Removed QZDoom now that it's biggest features are all merged into GZDoom, changed GZDoom license)
m (Comparison by features: some notes; the others I feel are self-explanatory especially with the header links)
(46 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Below is a rough '''comparison''' of the [[source port]]s that are currently active and popular.
+
Below is a rough '''comparison''' of the [[source port]]s that are currently active or popular.
  
 
==Comparison by general information==
 
==Comparison by general information==
Line 7: Line 7:
 
!style="abbr="Latest"        | Latest release date (yyyy-mm-dd)
 
!style="abbr="Latest"        | Latest release date (yyyy-mm-dd)
 
!Origin
 
!Origin
 +
!Source code repository
 +
!Homepage
 +
!Forum
 +
!Wiki
 
|-
 
|-
| {{Latest|Chocolate Doom}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code
+
| {{Latest|Chocolate Doom}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code || [https://github.com/chocolate-doom/chocolate-doom GitHub] || - || - || {{chocowiki|Chocolate Doom|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|Crispy Doom}} || [[Chocolate Doom]]
+
| {{Latest|Classic_RBDOOM_3_BFG|Classic RBDoom 3 BFG}} || [[RBDOOM-3-BFG|RBDoom 3 BFG]] || [https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG GitHub] || [https://maddecoder.github.io/Classic-RBDOOM-3-BFG Link] || - || [https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG/wiki Link]
 
|-
 
|-
| {{Latest|DelphiDoom}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code, [[Chocolate Strife]]
+
| {{Latest|Crispy Doom}} || [[Chocolate Doom]] || [https://github.com/fabiangreffrath/crispy-doom GitHub] || - || - || -
 
|-
 
|-
| {{Latest|Doomsday}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code
+
| {{Latest|DelphiDoom}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code, [[Chocolate Strife]] || [https://sourceforge.net/projects/delphidoom/ Sourceforge] || - || - || -
 
|-
 
|-
| {{Latest|Doom Legacy}}||[[DOSDoom]]
+
| {{Latest|Doomsday}} || [[Doom source code|Doom]]/[[Heretic source code|Heretic]]/[[Hexen source code|Hexen]] source code || [https://sourceforge.net/projects/deng/ Sourceforge] || [https://manual.dengine.net/ Link] || [https://talk.dengine.net/ Link] || {{dengwiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|Doom Retro}}||[[Chocolate Doom]]
+
| {{Latest|Doom Retro}} || [[Chocolate Doom]] || [https://github.com/bradharding/doomretro/ GitHub] || [https://www.doomretro.com/ Link] || - || [https://github.com/bradharding/doomretro/wiki Link]
 
|-
 
|-
| {{Latest|3DGE}} || [[EDGE]]
+
| {{Latest|EDGE}} || [[DOSDoom]] || [https://github.com/3dfxdev/hyper3DGE GitHub] || - || [https://www.tdgmods.net/smf/viewforum.php?f=3 Link] || {{edgewiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|Eternity Engine|Eternity}} || [[SMMU]]
+
| {{Latest|Eternity Engine|Eternity}} || [[SMMU]] || [https://github.com/team-eternity/eternity GitHub] || - || [https://www.doomworld.com/forum/25-eternity/ Link] || {{eterwiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|GZDoom}} || [[ZDoom]]
+
| {{Latest|GZDoom}} || [[ZDoom]] || [https://github.com/coelckers/gzdoom GitHub] || [https://zdoom.org/index Link] || [https://forum.zdoom.org/ Link] || {{zdoomwiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|Odamex}} || [[ZDoom]] 1.22 via [[csDoom]]
+
| {{Latest|Odamex}} || [[ZDoom]] 1.22 via [[csDoom]] || [https://github.com/odamex/odamex/ GitHub] || [https://odamex.net/ Link] || [https://odamex.net/boards/ Link] || {{odawiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|PrBoom+}} || [[PrBoom]]
+
| {{Latest|PrBoom+}} || [[PrBoom]] || [https://sourceforge.net/projects/prboom-plus/ Sourceforge] || [http://prboom-plus.sourceforge.net/ Link] || - || -
 
|-
 
|-
| {{Latest|ReMooD}} || [[Doom Legacy]] 1.42
+
| {{Latest|Risen3D}} || [[Doomsday]] || [http://risen3d.drdteam.org/source.htm Source] || [http://risen3d.drdteam.org/ Link] || - || -
 
|-
 
|-
| {{Latest|Risen3D}} || [[Doomsday]]
+
| {{Latest|Zandronum}} || [[ZDoom]] and [[GZDoom]] via [[Skulltag]] || [https://bitbucket.org/Torr_Samaho/zandronum Mercurial] || [https://zandronum.com/ Link] || [https://zandronum.com/forum/ Link] || {{zanwiki|Main Page|Link|linkonly=1}}
 
|-
 
|-
| {{Latest|Zandronum}} || [[ZDoom]] and [[GZDoom]] via [[Skulltag]]
+
| {{Latest|ZDaemon}} || [[ZDoom]] 1.22 via [[csDoom]] || - || [http://www.zdaemon.org/ Link] || [http://forums.zdaemon.org/ Link] || -
|-
 
| {{Latest|ZDaemon}} || [[ZDoom]] 1.22 via [[csDoom]]
 
 
|-
 
|-
 
!Name
 
!Name
 
!style="abbr="Version"        | Latest version
 
!style="abbr="Version"        | Latest version
 
!style="abbr="Latest"        | Latest release date (yyyy-mm-dd)
 
!style="abbr="Latest"        | Latest release date (yyyy-mm-dd)
! Origin
+
!Origin
 +
!Source code repository
 +
!Homepage
 +
!Forum
 +
!Wiki
 
|}
 
|}
  
 
==Comparison by license, programming language, platform and supported games==
 
==Comparison by license, programming language, platform and supported games==
Note that the "Games supported" list below refers to the latest versions of the games. Earlier versions may not function correctly or at all. The latest versions of the games are: [[Doom games]] v1.9, [[Heretic]] v1.3, [[Hexen]] v1.1, [[Strife]] v1.31 and [[Hacx]] v1.2. There is only one version of [[Chex Quest]] 1 (not including the version hidden on the CD with subtle differences). Patches for upgrading old versions are listed in the [[game patch]] article.
+
Note that the "Games supported" list below refers to the latest versions of the games. Earlier versions may not function correctly or at all. The latest versions of the games are: [[Doom games]] v1.9, [[Heretic]] v1.3, [[Hexen]] v1.1,[[Hexen:_Deathkings_of_the_Dark_Citadel|Hexen DK]] 1.1, [[Strife]] v1.31 and [[Hacx]] v1.2. There is only one version of [[Chex Quest]] 1 (not including the version hidden on the CD with subtle differences). Patches for upgrading old versions are listed in the [[game patch]] article.
  
Also note that the Chex Quest column below refers to Chex Quest 1 and not 2 or 3.
 
 
{| class="wikitable" style="font-size: 85%; text-align: center; width: auto"
 
{| class="wikitable" style="font-size: 85%; text-align: center; width: auto"
 
!colspan="3" |
 
!colspan="3" |
!colspan="3" | [[Wikipedia:Operating system|OS]] availability
+
!colspan="5" | [[Wikipedia:Operating system|OS]] availability
 
!colspan="6" | Games supported
 
!colspan="6" | Games supported
 
|-
 
|-
Line 59: Line 64:
 
![[Wikipedia:Linux|Linux]]
 
![[Wikipedia:Linux|Linux]]
 
![[Wikipedia:Mac OS|MacOS]]
 
![[Wikipedia:Mac OS|MacOS]]
![[Chex Quest|Chex]]
+
![[Wikipedia:Haiku (operating system)|Haiku]]
![[Doom games|Doom]]
+
![[Wikipedia:Android (operating system)|Android]]
 +
![[Chex Quest|Chex Quest 1]]
 +
![[Doom games|Doom 1,2 Final]]
 
![[Heretic]]
 
![[Heretic]]
![[Hexen]]
+
![[Hexen|Hexen, DK]]
 
![[Strife]]
 
![[Strife]]
 
![[Hacx]]
 
![[Hacx]]
 
|-
 
|-
| [[Chocolate Doom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || Yes || Yes || Yes || Yes || Yes || Yes || Yes
+
| [[Chocolate Doom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || Yes || Yes || Yes<ref name=dtouch>Via [[Delta Touch]].</ref> || Yes || Yes || Yes || Yes || Yes || Yes
 
|-
 
|-
| [[Crispy Doom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || ? || Yes || Yes || - || - || - || Yes
+
| [[Crispy Doom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || ? || ? || ? || Yes || Yes || - || - || - || Yes
 
|-
 
|-
| [[DelphiDoom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:Object Pascal|Delphi]] || Yes || - || - || Yes || Yes || Yes || Yes || Yes || -
+
| [[DelphiDoom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:Object Pascal|Delphi]] || Yes || - || - || ? || ? || Yes || Yes || Yes || Yes || Yes || -
 
|-
 
|-
| [[Doomsday]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]], [[Wikipedia:C++|C++]] || Yes || Yes || Yes || Yes || Yes || Yes || Yes || - || Yes
+
| [[Doomsday]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]], [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || Planned || Yes || Yes || Yes || Yes || - || Yes
 
|-
 
|-
| [[Doom Legacy]] || [[Wikipedia:GNU General Public License|GPL]], DSL (via Heretic) || [[Wikipedia:C (Programming Language)|C]]; ([[Wikipedia:C++|C++]] in development) || Yes || Yes || Yes || Partial || Yes || Yes || C++<ref>Only the defunct Doom Legacy C++ version supports native Hexen.</ref> || - || -
+
| [[Doom Retro]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || Yes || Yes || - || - || - || Yes
 
|-
 
|-
| [[Doom Retro]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || - || - || Yes || Yes || - || - || - || Yes
+
| [[EDGE]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]], [[Wikipedia:QuakeC|QuakeC]] || Yes || Yes || Yes || Planned || - || Yes || Yes || Yes || Planned || Planned || Yes
 
|-
 
|-
| [[3DGE]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]], [[Wikipedia:Lua_(programming_language)|Lua]], ASM || Yes || Yes || Yes || Yes || Yes || Yes || Planned || Planned || Yes
+
| [[Eternity Engine|Eternity]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes  || Yes || Yes || WIP || - || - || Yes || WIP || WIP || WIP || Yes
 
|-
 
|-
| [[Eternity Engine|Eternity]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || - || Yes || WIP || WIP || WIP || Yes
+
| [[GZDoom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || Yes || WIP || Planned || Yes<ref name=dtouch/> || Yes || Yes || Yes || Yes || Yes || Yes
 
|-
 
|-
| [[GZDoom]] || [[Wikipedia:GNU General Public License|GPL] || [[Wikipedia:C++|C++]] || Yes || Yes || WIP || Yes || Yes || Yes || Yes || Yes || Yes
+
| [[Odamex]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || ? || Yes || Yes || Planned || - || - || -
 
|-
 
|-
| [[Odamex]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || Yes || Yes || Planned || - || - || -
+
| [[PrBoom+]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || Yes || Yes || - || - || - || Yes
 
|-
 
|-
| [[PrBoom+]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]] || Yes || Yes || Yes || Yes || Yes || - || - || - || Yes
+
| [[Risen3D]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || - || - || ? || ? || - || Yes || - || - || - || -
 
|-
 
|-
| [[ReMooD]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C (Programming Language)|C]]; ([[Wikipedia:Java (Programming Language)|Java]] in development) || Yes || Yes || - || - || Yes || Partial || Planned || - || -
+
| [[Zandronum]] || DSL, custom || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || WIP || Yes || Yes || Yes || Yes || -
 
|-
 
|-
| [[Risen3D]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || - || - || - || Yes || - || - || - || -
+
| [[ZDaemon]] || DSL (closed) || [[Wikipedia:C++|C++]] || Yes || Server || Yes || ? || ? || - || Yes || Yes || Partial || - || -
 
|-
 
|-
| [[Zandronum]] || DSL, custom || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || WIP || Yes || Yes || Yes || Yes || -
+
| [[Classic_RBDOOM_3_BFG|Classic RBDoom 3 BFG]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C++|C++]] || Yes || Yes || untested || - || - || Partial || Yes || - || - || - || Yes
|-
 
| [[ZDaemon]] || DSL (closed) || [[Wikipedia:C++|C++]] || Yes || Server || Yes || - || Yes || Yes || Partial || - || -
 
 
|-
 
|-
 
!Name
 
!Name
Line 102: Line 107:
 
![[Wikipedia:Linux|Linux]]
 
![[Wikipedia:Linux|Linux]]
 
![[Wikipedia:Mac OS|MacOS]]
 
![[Wikipedia:Mac OS|MacOS]]
![[Chex Quest|Chex]]
+
![[Wikipedia:Haiku (operating system)|Haiku]]
![[Doom games|Doom]]
+
![[Wikipedia:Android (operating system)|Android]]
 +
![[Chex Quest|Chex Quest 1]]
 +
![[Doom games|Doom 1,2, Final]]
 
![[Heretic]]
 
![[Heretic]]
![[Hexen]]
+
![[Hexen|Hexen, DK]]
 
![[Strife]]
 
![[Strife]]
 
![[Hacx]]
 
![[Hacx]]
 
|-
 
|-
 
!colspan="3" |
 
!colspan="3" |
!colspan="3" | [[Wikipedia:Operating system|OS]] availability
+
!colspan="5" | [[Wikipedia:Operating system|OS]] availability
 
!colspan="6" | Games supported
 
!colspan="6" | Games supported
 
|}
 
|}
 +
 +
===Other games===
 +
In addition to the main six games that a good portion of source ports support or plan to support, some source ports have or plan to add support for other less common games:
 +
 +
====EDGE====
 +
* ''[[Wolfenstein 3D]]'' (WIP)
 +
* ''[[Rise of the Triad]]'' (WIP)
 +
* ''Blake Stone'' (WIP)
 +
 +
====Eternity Engine====
 +
* [[Sony PlayStation|PlayStation Doom]] (WIP)
 +
 +
====GZDoom/Zandronum====
 +
* [[Action Doom 2: Urban Brawl]]
 +
* [[Chex Quest 3]]
 +
* [[Harmony]]
 +
* [[The Adventures of Square]]
  
 
==Comparison by features==
 
==Comparison by features==
 +
Keywords:
 +
*'''Renderer''' means the way the game scenes are rendered. It does not cover how the rendered scene is then displayed to the screen or to a window. Most ports with software rendering are now using DirectX, OpenGL, or Vulkan to display the rendered frames.
 +
*The Doom engine updates the game 35 times per second. Ports with '''uncapped framerate''' keep this update rate, but can draw new frames more often. Usually requires implementing interpolation logic so that the effect can actually be noticeable.
 +
*Ports supporting '''custom content''' offer a [[content definition language]] that allows easy creation of additional actors, items, weapons, or other effects.
 
{| class="wikitable" style="font-size: 85%; text-align: center; width: auto"
 
{| class="wikitable" style="font-size: 85%; text-align: center; width: auto"
!colspan="4" |
+
!colspan="3" |
 
!colspan="5" | Special features
 
!colspan="5" | Special features
 
|-
 
|-
 
!Name
 
!Name
![[Multiplayer]]
 
 
!Renderer
 
!Renderer
 
![[Uncapped framerate]]
 
![[Uncapped framerate]]
Line 129: Line 156:
 
![[UDMF]] support
 
![[UDMF]] support
 
|-
 
|-
| [[Chocolate Doom]] || C/S || Software || No || - || - || - || [[ACS]] (Hexen), None (other games) || No
+
| [[Chocolate Doom]] || Software || No || - || - || - || [[ACS]] (Hexen), None (other games) || No
 
|-
 
|-
| [[Crispy Doom]] || C/S || Software || Yes || Yes || - || - || None || No
+
| [[Crispy Doom]] || Software || Yes || Yes || - || - || None || No
 
|-
 
|-
| [[DelphiDoom]] || ? || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || ACTORDEF, PascalScript || [[ACS]] (Hexen), PascalScript || WIP
+
| [[DelphiDoom]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || ACTORDEF, PascalScript || [[ACS]] (Hexen), PascalScript || WIP
 
|-
 
|-
| [[Doomsday]] || C/S and local splitscreen|| [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DED]]|| [[InFine]], [[XG]] || Planned
+
| [[Doomsday]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DED]]|| [[InFine]], [[XG]] || Planned
 
|-
 
|-
| [[Doom Legacy]] || C/S || Software, [[Wikipedia:OpenGL|OpenGL]] || ? || Yes || Yes || - || [[FraggleScript]] || -
+
| [[Doom Retro]] || Software || Yes || Yes || Yes || - || None || No
 
|-
 
|-
| [[Doom Retro]] || - || Software || Yes || Yes || Yes || - || None || -
+
| [[EDGE]] ||[[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DDF]], [[3dge:COAL|COAL]] || [[RTS]] || Yes
 
|-
 
|-
| [[3DGE]] || Local only (splitscreen) || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DDF]], [[3dge:COAL|COAL]] || [[RTS]] || Yes
+
| [[Eternity Engine|Eternity]] || Software || Yes || Yes || Yes || [[EDF]] || [[ACS]] || Yes
 
|-
 
|-
| [[Eternity Engine|Eternity]] || (W)LAN<ref>There's an experimental that also adds splitscreen support.</ref> || Software || Yes || Yes || Yes || [[EDF]] || [[ACS]] || Yes
+
| [[GZDoom]] || Software, [[Wikipedia:OpenGL|OpenGL]], [[Wikipedia:Vulkan_(API)|Vulkan]] || Yes || Yes || Yes || [[ZScript]], [[DECORATE]] || [[ZScript]], [[ACS]], [[FraggleScript]] || Yes
 
|-
 
|-
| [[GZDoom]] || (W)LAN || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DECORATE]] || [[ACS]], [[FraggleScript]] || Yes
+
| [[Odamex]] || Software || Yes || Yes || Yes || Yes || ACS || -
 
|-
 
|-
| [[Odamex]] || C/S || Software || Yes || Yes || Yes || Yes || ACS || -
+
| [[PrBoom+]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || - || - || None || No
 
|-
 
|-
| [[PrBoom+]] || P2P || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || - || - || None || No
+
| [[Risen3D]] || [[Wikipedia:OpenGL|OpenGL]], [[Wikipedia:Microsoft Direct3D|Direct3D]] || Yes || Yes || Yes || [[DED]] || [[SCP]], [[InFine]] || -
 
|-
 
|-
| [[ReMooD]] || Local only (splitscreen) || Software || No || Yes || Yes || - || [[FraggleScript]] || Planned
+
| [[Zandronum]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DECORATE]] || [[ACS]] || Yes
 
|-
 
|-
| [[Risen3D]] || None || [[Wikipedia:OpenGL|OpenGL]], [[Wikipedia:Microsoft Direct3D|Direct3D]] || Yes || Yes || Yes || [[DED]] || [[SCP]], [[InFine]] || -
+
| [[ZDaemon]] || Software || Yes || Yes || Yes || [[DEHSUPP]] || [[ACS]] || -
 
|-
 
|-
| [[Zandronum]] || C/S || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DECORATE]] || [[ACS]] || Yes
+
| [[Classic_RBDOOM_3_BFG|Classic RBDoom 3 BFG]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || EXPINFO || [https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG/wiki/9.-ActMap ActMap]
|-
+
|| Yes
| [[ZDaemon]] || C/S || Software || Yes || Yes || Yes || [[DEHSUPP]] || [[ACS]] || -
 
 
|-
 
|-
 
!Name
 
!Name
![[Multiplayer]]
 
 
!Renderer
 
!Renderer
 
![[Uncapped framerate]]
 
![[Uncapped framerate]]
Line 169: Line 194:
 
![[UDMF]] support
 
![[UDMF]] support
 
|-
 
|-
!colspan="4" |
+
!colspan="3" |
 
!colspan="5" | Special features
 
!colspan="5" | Special features
 +
|}
 +
 +
==Comparison by multiplayer functionality==
 +
 +
Keywords:
 +
* ''Synchronous'' means the network (typically) sends minimal amounts of traffic in exchange for only advancing based on available player input. Tends to work better over direct connections and requires a lot of accuracy in connection data to support in game joining. This method was used by Doom 1.9.
 +
* ''Asynchronous'' means a network protocol that relies on sending more complex data in exchange for allowing the client and server to advance independently. More efficient connection snapshots and individual clients cannot stall the server from connection issues.
 +
* ''C/S'' (short for Client/Server) means a connection protocol where all players communicate through and only to a central server.
 +
* ''P2P'' (short for Peer-to-Peer) means a connection protocol where all players communicate directly to each-other. This method was used by Doom 1.9.
 +
 +
{| class="wikitable" style="font-size: 85%; text-align: center; width: auto"
 +
!Name
 +
![[Splitscreen]]
 +
!Multiplayer Saves
 +
!Multiplayer Protocol
 +
!Late Joining
 +
!Origin
 +
![[CTF]]<ref>All listed CTF supported ports abide by the [[Capture_the_Flag#The_CTF_Standard|CTF standard]].</ref>
 +
|-
 +
| [[Chocolate Doom]] || No || Yes || C/S (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
| [[Crispy Doom]] || No || Yes || C/S (Synchronous) || No || Chocolate Doom || No
 +
|-
 +
| [[DelphiDoom]] || No || No || P2P (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
| [[Doomsday]] || Yes || No || C/S (Asynchronous) || Yes || Original || No
 +
|-
 +
| [[Doom Retro]] || No || - || - || - || - || -
 +
|-
 +
| [[EDGE]] || Yes || No || P2P (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
| [[Eternity Engine|Eternity]] || Yes<ref>There's an experimental branch that adds splitscreen support.[https://www.doomworld.com/forum/topic/91789-splitscreen-branch-downloadable-builds-v011/]</ref> || Yes || P2P (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
| [[GZDoom]] || No || Yes || P2P & C/S (Synchronous) || Saves only || Doom 1.9 || No
 +
|-
 +
| [[Odamex]] || No || No || C/S (Asynchronous) || Yes || [[csDoom]] || Yes
 +
|-
 +
| [[PrBoom+]] || No || Yes || C/S (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
| [[Risen3D]] || No || - || - || - || - || -
 +
|-
 +
| [[Zandronum]] || No || No || C/S (Asynchronous) || Yes || [[Skulltag]] ([[csDoom]]) || Yes
 +
|-
 +
| [[ZDaemon]] || No || No || C/S (Asynchronous) || Yes || [[csDoom]] || Yes
 +
|-
 +
| [[Classic_RBDOOM_3_BFG|Classic RBDoom 3 BFG]] || No || No || P2P (Synchronous) || No || Doom 1.9 || No
 +
|-
 +
!Name
 +
![[Splitscreen]]
 +
!Multiplayer Saves
 +
!Multiplayer Protocol
 +
!Late Joining
 +
!Origin
 +
![[CTF]]
 
|}
 
|}
  
Line 200: Line 279:
 
| [[Doomsday]] || Average || High || High || - || Partial || None
 
| [[Doomsday]] || Average || High || High || - || Partial || None
 
|-
 
|-
| [[Doom Legacy]] || Very low || - || - || - || Partial ||
+
| [[Doom Retro]] || Average || - || - || - || Yes || None
|-
 
| [[Doom Retro]] || Low || - || - || - || Yes || None
 
 
|-
 
|-
| [[3DGE]] || Low || Very low || - || - || Yes || Own (experimental)
+
| [[EDGE]] || Low || Very low || - || - || Yes || Own (experimental)
 
|-
 
|-
 
| [[Eternity Engine|Eternity]] || High || Average || - || - || Yes || Own, Doom 1.9 and Boom 2.02 (experimental)
 
| [[Eternity Engine|Eternity]] || High || Average || - || - || Yes || Own, Doom 1.9 and Boom 2.02 (experimental)
Line 213: Line 290:
 
|-
 
|-
 
| [[PrBoom+]] || Very high || - || - || - || Yes || Doom 1.2, 1.9, Boom 2.02, own, misc<ref>Historical demo compatibility is a main feature of PrBoom+, it also features support for Doom 1.666, [[DOSDoom]], Boom 2.01, [[MBF]], [[LxDoom]], and earlier versions of [[PrBoom]]</ref>
 
| [[PrBoom+]] || Very high || - || - || - || Yes || Doom 1.2, 1.9, Boom 2.02, own, misc<ref>Historical demo compatibility is a main feature of PrBoom+, it also features support for Doom 1.666, [[DOSDoom]], Boom 2.01, [[MBF]], [[LxDoom]], and earlier versions of [[PrBoom]]</ref>
|-
 
| [[ReMooD]] || Low || Very low || - || - || Partial || None
 
 
|-
 
|-
 
| [[Risen3D]] || Average || - || - || - || Mostly || Own
 
| [[Risen3D]] || Average || - || - || - || Mostly || Own
Line 221: Line 296:
 
|-
 
|-
 
| [[ZDaemon]] || Average || Average || Very low || - || Mostly || Own
 
| [[ZDaemon]] || Average || Average || Very low || - || Mostly || Own
 +
|-
 +
| [[Classic_RBDOOM_3_BFG|Classic RBDoom 3 BFG]] || high || - || - || - || Partial || Doom 1.9, 1.11
 
|-
 
|-
 
!Name
 
!Name

Revision as of 18:39, 27 October 2019

Below is a rough comparison of the source ports that are currently active or popular.

Comparison by general information

Name Latest version Latest release date (yyyy-mm-dd) Origin Source code repository Homepage Forum Wiki
Chocolate Doom 3.0.1 2020-06-25 (3 years ago) Doom/Heretic/Hexen source code GitHub - - Link
Classic RBDoom 3 BFG Classic RBDOOM 3 BFG/Version RBDoom 3 BFG GitHub Link - Link
Crispy Doom 6.0 2023-03-31 (11 months ago) Chocolate Doom GitHub - - -
DelphiDoom 2.0.7.733 2022-04-14 (23 months ago) Doom/Heretic/Hexen source code, Chocolate Strife Sourceforge - - -
Doomsday 2.3.1 2021-02-04 (3 years ago) Doom/Heretic/Hexen source code Sourceforge Link Link Link
Doom Retro 5.3 2024-03-03 (26 days ago) Chocolate Doom GitHub Link - Link
EDGE 2.1.0-RC1.5 2018-10-17 (5 years ago) DOSDoom GitHub - Link Link
Eternity 4.02.00 2021-01-27 (3 years ago) SMMU GitHub - Link Link
GZDoom 4.11.3 2023-10-26 (5 months ago) ZDoom GitHub Link Link Link
Odamex 10.4.0 2023-08-10 (7 months ago) ZDoom 1.22 via csDoom GitHub Link Link Link
PrBoom+ 2.6.66 2023-06-20 (9 months ago) PrBoom Sourceforge Link - -
Risen3D 2.2.35 2021-12-17 (2 years ago) Doomsday Source Link - -
Zandronum 3.1 2021-12-13 (2 years ago) ZDoom and GZDoom via Skulltag Mercurial Link Link Link
ZDaemon 1.10.24 2023-11-21 (4 months ago) ZDoom 1.22 via csDoom - Link Link -
Name Latest version Latest release date (yyyy-mm-dd) Origin Source code repository Homepage Forum Wiki

Comparison by license, programming language, platform and supported games

Note that the "Games supported" list below refers to the latest versions of the games. Earlier versions may not function correctly or at all. The latest versions of the games are: Doom games v1.9, Heretic v1.3, Hexen v1.1,Hexen DK 1.1, Strife v1.31 and Hacx v1.2. There is only one version of Chex Quest 1 (not including the version hidden on the CD with subtle differences). Patches for upgrading old versions are listed in the game patch article.

OS availability Games supported
Name License Written in Windows Linux MacOS Haiku Android Chex Quest 1 Doom 1,2 Final Heretic Hexen, DK Strife Hacx
Chocolate Doom GPL C Yes Yes Yes Yes Yes[1] Yes Yes Yes Yes Yes Yes
Crispy Doom GPL C Yes Yes  ?  ?  ? Yes Yes - - - Yes
DelphiDoom GPL Delphi Yes - -  ?  ? Yes Yes Yes Yes Yes -
Doomsday GPL C, C++ Yes Yes Yes  ? Planned Yes Yes Yes Yes - Yes
Doom Retro GPL C Yes Yes Yes  ? Yes[1] Yes Yes - - - Yes
EDGE GPL C++, QuakeC Yes Yes Yes Planned - Yes Yes Yes Planned Planned Yes
Eternity GPL C++ Yes Yes Yes WIP - - Yes WIP WIP WIP Yes
GZDoom GPL C++ Yes Yes WIP Planned Yes[1] Yes Yes Yes Yes Yes Yes
Odamex GPL C++ Yes Yes Yes  ?  ? Yes Yes Planned - - -
PrBoom+ GPL C Yes Yes Yes  ? Yes[1] Yes Yes - - - Yes
Risen3D GPL C++ Yes - -  ?  ? - Yes - - - -
Zandronum DSL, custom C++ Yes Yes Yes  ? Yes[1] WIP Yes Yes Yes Yes -
ZDaemon DSL (closed) C++ Yes Server Yes  ?  ? - Yes Yes Partial - -
Classic RBDoom 3 BFG GPL C++ Yes Yes untested - - Partial Yes - - - Yes
Name License Written in Windows Linux MacOS Haiku Android Chex Quest 1 Doom 1,2, Final Heretic Hexen, DK Strife Hacx
OS availability Games supported

Other games

In addition to the main six games that a good portion of source ports support or plan to support, some source ports have or plan to add support for other less common games:

EDGE

Eternity Engine

GZDoom/Zandronum

Comparison by features

Keywords:

  • Renderer means the way the game scenes are rendered. It does not cover how the rendered scene is then displayed to the screen or to a window. Most ports with software rendering are now using DirectX, OpenGL, or Vulkan to display the rendered frames.
  • The Doom engine updates the game 35 times per second. Ports with uncapped framerate keep this update rate, but can draw new frames more often. Usually requires implementing interpolation logic so that the effect can actually be noticeable.
  • Ports supporting custom content offer a content definition language that allows easy creation of additional actors, items, weapons, or other effects.
Special features
Name Renderer Uncapped framerate Limit-removing Console Custom content Map Scripting UDMF support
Chocolate Doom Software No - - - ACS (Hexen), None (other games) No
Crispy Doom Software Yes Yes - - None No
DelphiDoom Software, OpenGL Yes Yes Yes ACTORDEF, PascalScript ACS (Hexen), PascalScript WIP
Doomsday OpenGL Yes Yes Yes DED InFine, XG Planned
Doom Retro Software Yes Yes Yes - None No
EDGE OpenGL Yes Yes Yes DDF, COAL RTS Yes
Eternity Software Yes Yes Yes EDF ACS Yes
GZDoom Software, OpenGL, Vulkan Yes Yes Yes ZScript, DECORATE ZScript, ACS, FraggleScript Yes
Odamex Software Yes Yes Yes Yes ACS -
PrBoom+ Software, OpenGL Yes Yes - - None No
Risen3D OpenGL, Direct3D Yes Yes Yes DED SCP, InFine -
Zandronum Software, OpenGL Yes Yes Yes DECORATE ACS Yes
ZDaemon Software Yes Yes Yes DEHSUPP ACS -
Classic RBDoom 3 BFG OpenGL Yes Yes Yes EXPINFO ActMap Yes
Name Renderer Uncapped framerate Limit-removing Console Custom content Map Scripting UDMF support
Special features

Comparison by multiplayer functionality

Keywords:

  • Synchronous means the network (typically) sends minimal amounts of traffic in exchange for only advancing based on available player input. Tends to work better over direct connections and requires a lot of accuracy in connection data to support in game joining. This method was used by Doom 1.9.
  • Asynchronous means a network protocol that relies on sending more complex data in exchange for allowing the client and server to advance independently. More efficient connection snapshots and individual clients cannot stall the server from connection issues.
  • C/S (short for Client/Server) means a connection protocol where all players communicate through and only to a central server.
  • P2P (short for Peer-to-Peer) means a connection protocol where all players communicate directly to each-other. This method was used by Doom 1.9.
Name Splitscreen Multiplayer Saves Multiplayer Protocol Late Joining Origin CTF[2]
Chocolate Doom No Yes C/S (Synchronous) No Doom 1.9 No
Crispy Doom No Yes C/S (Synchronous) No Chocolate Doom No
DelphiDoom No No P2P (Synchronous) No Doom 1.9 No
Doomsday Yes No C/S (Asynchronous) Yes Original No
Doom Retro No - - - - -
EDGE Yes No P2P (Synchronous) No Doom 1.9 No
Eternity Yes[3] Yes P2P (Synchronous) No Doom 1.9 No
GZDoom No Yes P2P & C/S (Synchronous) Saves only Doom 1.9 No
Odamex No No C/S (Asynchronous) Yes csDoom Yes
PrBoom+ No Yes C/S (Synchronous) No Doom 1.9 No
Risen3D No - - - - -
Zandronum No No C/S (Asynchronous) Yes Skulltag (csDoom) Yes
ZDaemon No No C/S (Asynchronous) Yes csDoom Yes
Classic RBDoom 3 BFG No No P2P (Synchronous) No Doom 1.9 No
Name Splitscreen Multiplayer Saves Multiplayer Protocol Late Joining Origin CTF

Comparison by compatibility

Compatibility is judged primarily by the extent to which a source port supports vanilla gameplay behavior including the original quirks and bugs of the respective games, behavior of maps even when those maps are erroneously constructed, and demo compatibility. Factors which are not considered are simple support of higher resolutions, higher sound sample rates, or additional methods of input over the original games which do not change the actual gameplay experience or engine behavior. When gameplay changes are optional or otherwise configurable, it is the best compatibility profile (which is not necessarily the default configuration) that is considered. While the scale used is somewhat subjective, a rough guideline is as follows:

  • Very high compatibility is reserved for ports which perform partial emulation of a DOS machine's address space, behavior of x86-specific mathematical or logical operations, and overflow emulation based on reverse engineering of the segment layouts of the original games' executable files in order to attain as close to 100% compatibility as is possible. Almost all known vanilla demos sync, and the port will be adjusted if one is found which does not.
  • High indicates that the port is very compatible, but does not go as far as those ports in the Very high category in emulation of the original games' bugs. Vanilla demo support is in the range of good to excellent.
  • Average indicates that the port plays very closely to the originals, but unconditionally fixes most bugs and may make aesthetic compromises for more enjoyable play. Virtually all modifications for the original games still function as intended by their authors with ports in this category. Vanilla demo support is unlikely.
  • Low indicates that the port makes significant changes to gameplay and presentation. Some vanilla-targeted modifications may not work as intended. Demo support beyond the individual port's format is usually not present to any extent.
  • Very low indicates that the game is not entirely playable in the engine. This can be because support for the game is an unfinished work in progress, or that it is not a development priority.

Boom-compatibility has been a de facto standard for enhanced features in Doom ports. Yes means that the entire feature set is supported. Mostly means that some obscure and uncommonly-used features are not supported, but the port should still be able to handle correctly most existing Boom map sets. Partial indicates that support is incomplete and Boom map sets are not expected to play back correctly. No means that Boom features are not supported to any degree.

Name Vanilla Doom
accuracy
Vanilla Heretic
accuracy
Vanilla Hexen
accuracy
Vanilla Strife
accuracy
Boom-
compatible
Demo format
Chocolate Doom Very high Very high Very high Very high No Doom 1.9
Crispy Doom Very high - - - BEX only Doom 1.9
DelphiDoom Average Average Average Average Mostly
Doomsday Average High High - Partial None
Doom Retro Average - - - Yes None
EDGE Low Very low - - Yes Own (experimental)
Eternity High Average - - Yes Own, Doom 1.9 and Boom 2.02 (experimental)
GZDoom Low Low Low Low Mostly Own
Odamex High - - - Mostly
PrBoom+ Very high - - - Yes Doom 1.2, 1.9, Boom 2.02, own, misc[4]
Risen3D Average - - - Mostly Own
Zandronum Low Low Low Low Mostly Own
ZDaemon Average Average Very low - Mostly Own
Classic RBDoom 3 BFG high - - - Partial Doom 1.9, 1.11
Name Vanilla Doom
accuracy
Vanilla Heretic
accuracy
Vanilla Hexen
accuracy
Vanilla Strife
accuracy
Boom-
compatible
Demo format

Notes

  1. 1.0 1.1 1.2 1.3 1.4 Via Delta Touch.
  2. All listed CTF supported ports abide by the CTF standard.
  3. There's an experimental branch that adds splitscreen support.[1]
  4. Historical demo compatibility is a main feature of PrBoom+, it also features support for Doom 1.666, DOSDoom, Boom 2.01, MBF, LxDoom, and earlier versions of PrBoom