Comparison of source ports

From DoomWiki.org

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

Comparison by general information[edit]

Name Latest version Latest release date (yyyy-mm-dd) Origin
Chocolate Doom 2.3.0 2016-12-29 Doom/Heretic/Hexen source code
Crispy Doom 4.0 2017-03-11 Chocolate Doom 2.2.0
DelphiDoom 2.0.1 2016-12-22 Doom/Heretic/Hexen source code, Chocolate Strife
Doomsday 1.15 2015-06-06 Doom/Heretic/Hexen source code
Doom Legacy 1.46.2 2017-12-22 DOSDoom
Doom Retro 2.4.4 2017-03-27 Chocolate Doom
3DGE 2.1.0-Test2 2016-08-22 EDGE
Eternity 3.40.46 2014-01-19 SMMU
GZDoom 2.4.0 2017-03-19 ZDoom
Odamex 0.7.0 2014-03-27 ZDoom 1.22 via csDoom
PrBoom+ 2.5.1.4 2016-01-10 PrBoom
QZDoom 1.3.0 2017-03-19 GZDoom
ReMooD 0.9a 2016-08-23 Doom Legacy 1.42
Risen3D 2.2.31 2016-12-14 Doomsday
Zandronum 2.1.2 2015-07-19 ZDoom and GZDoom via Skulltag
ZDaemon 1.10b07 2015-10-14 ZDoom 1.22 via csDoom
Name Latest version Latest release date (yyyy-mm-dd) Origin

Comparison by license, programming language, platform and supported games[edit]

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.

Also note that the Chex Quest column below refers to Chex Quest 1 and not 2 or 3.

OS availability Games supported
Name License Written in Windows Linux MacOS Chex Doom Heretic Hexen Strife Hacx
Chocolate Doom GPL C Yes Yes Yes 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 Yes Yes Yes Yes - Yes
Doom Legacy GPL, DSL (via Heretic) C; (C++ in development) Yes Yes Yes Partial Yes Yes C++[1] - -
Doom Retro GPL C Yes - - Yes Yes - - - Yes
3DGE GPL C++, Lua, ASM Yes Yes Yes Yes Yes Yes Planned Planned Yes
Eternity GPL C++ Yes Yes Yes - Yes WIP WIP WIP Yes
GZDoom DSL (open), BSD C++ Yes Yes WIP Yes Yes Yes Yes Yes Yes
Odamex GPL C++ Yes Yes Yes Yes Yes Planned - - -
PrBoom+ GPL C Yes Yes Yes Yes Yes - - - Yes
QZDoom DSL (open), BSD, Build C++ Yes Yes Yes Yes Yes Yes Yes Yes Yes
ReMooD GPL C; (Java in development) Yes Yes - - Yes Partial Planned - -
Risen3D GPL C++ Yes - - - Yes - - - -
Zandronum DSL, custom C++ Yes Yes Yes WIP Yes Yes Yes Yes -
ZDaemon DSL (closed) C++ Yes Server Yes - Yes Yes Partial - -
Name License Written in Windows Linux MacOS Chex Doom Heretic Hexen Strife Hacx
OS availability Games supported

Comparison by features[edit]

Special features
Name Multiplayer Renderer Uncapped framerate Limit-removing Console Custom content Map Scripting UDMF support
Chocolate Doom C/S Software No - - - ACS (Hexen), None (other games) No
Crispy Doom C/S Software Yes Yes - - None No
DelphiDoom  ? Software, OpenGL Yes Yes Yes ACTORDEF, PascalScript ACS (Hexen), PascalScript WIP
Doomsday C/S and local splitscreen OpenGL Yes Yes Yes DED InFine, XG Planned
Doom Legacy C/S Software, OpenGL  ? Yes Yes - FraggleScript -
Doom Retro - Software Yes Yes Yes - None -
3DGE Local only (splitscreen) OpenGL Yes Yes Yes DDF, COAL RTS Yes
Eternity (W)LAN[2] Software Yes Yes Yes EDF ACS Yes
GZDoom (W)LAN Software, OpenGL Yes Yes Yes DECORATE ACS, FraggleScript Yes
Odamex C/S Software Yes Yes Yes Yes ACS -
PrBoom+ P2P Software, OpenGL Yes Yes - - None No
QZDoom P2P Software Yes Yes Yes DECORATE ACS, FraggleScript Yes
ReMooD Local only (splitscreen) Software No Yes Yes - FraggleScript Planned
Risen3D None OpenGL, Direct3D Yes Yes Yes DED SCP, InFine -
Zandronum C/S Software, OpenGL Yes Yes Yes DECORATE ACS Yes
ZDaemon C/S Software Yes Yes Yes DEHSUPP ACS -
Name Multiplayer Renderer Uncapped framerate Limit-removing Console Custom content Map Scripting UDMF support
Special features

Comparison by compatibility[edit]

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 Very high Very high Very high BEX only Doom 1.9
DelphiDoom Average Average Average Average Mostly
Doomsday Average High High - Partial None
Doom Legacy Very low - - - Partial
Doom Retro Low - - - Yes None
3DGE 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[3]
QZDoom Low Low Low Low Mostly Own
ReMooD Low Very low - - Partial None
Risen3D Average - - - Mostly Own
Zandronum Low Low Low Low Mostly Own
ZDaemon Average Average Very low - Mostly Own
Name Vanilla Doom
accuracy
Vanilla Heretic
accuracy
Vanilla Hexen
accuracy
Vanilla Strife
accuracy
Boom-
compatible
Demo format

Notes[edit]

  1. Only the defunct Doom Legacy C++ version supports native Hexen.
  2. There's an experimental that also adds splitscreen support.
  3. 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