Difference between revisions of "Comparison of source ports"
From DoomWiki.org
[checked revision] | [checked revision] |
(→Comparison by general information: https links, update dengwiki homepage) |
m (→Comparison by general information: rm Legacy self reference) |
||
(19 intermediate revisions by 13 users not shown) | |||
Line 2: | Line 2: | ||
==Comparison by general information== | ==Comparison by general information== | ||
− | {| class="wikitable" style="font-size: 85%"; text-align: center; width: auto | + | {| class="wikitable sortable" style="font-size: 85%"; text-align: center; width: auto |
! Name | ! Name | ||
!style="abbr="Version" | Latest version | !style="abbr="Version" | Latest version | ||
Line 21: | Line 21: | ||
|- | |- | ||
| {{Latest|DOOM BFA}} || [[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|DOOM BFA}} || [[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|Doom Legacy}} || [[DOSDoom]] [[Doom source code|Doom]]/[[Heretic source code|Heretic]] source code || [https://sourceforge.net/projects/doomlegacy/ Sourceforge] || [https://doomlegacy.sourceforge.net/ Link] || - || - | ||
|- | |- | ||
| {{Latest|Doom Retro}} || [[Chocolate Doom]] || [https://github.com/bradharding/doomretro/ GitHub] || [https://www.doomretro.com/ Link] || - || [https://github.com/bradharding/doomretro/wiki Link] | | {{Latest|Doom Retro}} || [[Chocolate Doom]] || [https://github.com/bradharding/doomretro/ GitHub] || [https://www.doomretro.com/ Link] || - || [https://github.com/bradharding/doomretro/wiki Link] | ||
Line 35: | Line 37: | ||
|- | |- | ||
| {{Latest|Risen3D}} || [[Doomsday]] || [https://risen3d.drdteam.org/source.htm Source] || [https://risen3d.drdteam.org/ Link] || - || - | | {{Latest|Risen3D}} || [[Doomsday]] || [https://risen3d.drdteam.org/source.htm Source] || [https://risen3d.drdteam.org/ Link] || - || - | ||
+ | |- | ||
+ | | {{Latest|Woof!}} || [[WinMBF]] || [https://github.com/fabiangreffrath/woof GitHub] || - || - || - | ||
|- | |- | ||
| {{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]] || [https://bitbucket.org/Torr_Samaho/zandronum Mercurial] || [https://zandronum.com/ Link] || [https://zandronum.com/forum/ Link] || {{zanwiki|Main Page|Link|linkonly=1}} | ||
Line 73: | Line 77: | ||
![[Hacx]] | ![[Hacx]] | ||
|- | |- | ||
− | | [[Chocolate Doom]] || [[Wikipedia:GNU General Public License|GPL]] || [[Wikipedia:C ( | + | | [[Chocolate Doom]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[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 v2]] || [[Wikipedia:C (programming language)|C]] || Yes || Yes || ? || ? || ? || Yes || Yes || Yes || Yes || Yes || Yes | ||
+ | |- | ||
+ | | [[DelphiDoom]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:Object Pascal|Delphi]] || Yes || - || - || ? || ? || Yes || Yes || Yes || Yes || Yes || Yes | ||
|- | |- | ||
− | | [[ | + | | [[Doomsday]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C (programming language)|C]], [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || Planned || Yes || Yes || Yes || Yes || - || Yes |
|- | |- | ||
− | | [[ | + | | [[DOOM BFA]] || [[Wikipedia:GNU General Public License|GPL v3]] || [[Wikipedia:C++|C++]] || Yes || Yes || untested || - || - || Partial || Yes || - || - || - || Yes |
|- | |- | ||
− | | [[ | + | | [[Doom Legacy]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C (programming language)|C]] || Yes || Yes || Yes || - || - || Yes || Yes || Yes || - || - || Yes |
|- | |- | ||
− | | [[ | + | | [[Doom Retro]] || [[Wikipedia:GNU General Public License|GPL v3]] || [[Wikipedia:C (programming language)|C]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || Yes || Yes || - || - || - || Yes |
|- | |- | ||
− | | [[ | + | | [[EDGE]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C++|C++]], [[Wikipedia:QuakeC|QuakeC]] || Yes || Yes || Yes || Planned || - || Yes || Yes || Yes || Planned || Planned || Yes |
|- | |- | ||
− | | [[ | + | | [[Eternity Engine|Eternity]] || [[Wikipedia:GNU General Public License|GPL v3]] || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || WIP || - || - || Yes || WIP || WIP || WIP || Yes |
|- | |- | ||
− | | [[ | + | | [[GZDoom]] || [[Wikipedia:GNU General Public License|GPL v3]] || [[Wikipedia:C++|C++]] || Yes || Yes || WIP || Planned || Yes<ref name=dtouch/> || Yes || Yes || Yes || Yes || Yes || Yes |
|- | |- | ||
− | | [[ | + | | [[Odamex]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || ? || Yes || Yes || Planned || - || - || Yes |
|- | |- | ||
− | | [[ | + | | [[PrBoom+]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C (programming language)|C]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || Yes || Yes || - || - || - || Yes |
|- | |- | ||
− | | [[ | + | | [[Risen3D]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C++|C++]] || Yes || - || - || ? || ? || - || Yes || - || - || - || - |
|- | |- | ||
− | | [[ | + | | [[Woof!]] || [[Wikipedia:GNU General Public License|GPL v2]] || [[Wikipedia:C (programming language)|C]] || Yes || Yes || ? || ? || ? || Yes || Yes || - || - || - || Yes |
|- | |- | ||
| [[Zandronum]] || DSL, custom || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || WIP || Yes || Yes || Yes || Yes || - | | [[Zandronum]] || DSL, custom || [[Wikipedia:C++|C++]] || Yes || Yes || Yes || ? || Yes<ref name=dtouch/> || WIP || Yes || Yes || Yes || Yes || - | ||
Line 160: | Line 168: | ||
| [[Crispy Doom]] || Software || Yes || Yes || - || - || None || No | | [[Crispy Doom]] || Software || Yes || Yes || - || - || None || No | ||
|- | |- | ||
− | | [[DelphiDoom]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || ACTORDEF, PascalScript || [[ACS]] | + | | [[DelphiDoom]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || ACTORDEF, PascalScript || [[ACS]], PascalScript || Yes |
|- | |- | ||
| [[Doomsday]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DED]]|| [[InFine]], [[XG]] || Planned | | [[Doomsday]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DED]]|| [[InFine]], [[XG]] || Planned | ||
|- | |- | ||
| [[DOOM BFA]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || EXPINFO || [https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG/wiki/9.-ActMap ActMap] || Yes | | [[DOOM BFA]] || [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || EXPINFO || [https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG/wiki/9.-ActMap ActMap] || Yes | ||
+ | |- | ||
+ | | [[Doom Legacy]] || Software, [[Wikipedia:OpenGL|OpenGL]] || No || Yes || Yes || - || [[FraggleScript]] || - | ||
|- | |- | ||
| [[Doom Retro]] || Software || Yes || Yes || Yes || - || None || No | | [[Doom Retro]] || Software || Yes || Yes || Yes || - || None || No | ||
Line 179: | Line 189: | ||
|- | |- | ||
| [[Risen3D]] || [[Wikipedia:OpenGL|OpenGL]], [[Wikipedia:Microsoft Direct3D|Direct3D]] || Yes || Yes || Yes || [[DED]] || [[SCP]], [[InFine]] || - | | [[Risen3D]] || [[Wikipedia:OpenGL|OpenGL]], [[Wikipedia:Microsoft Direct3D|Direct3D]] || Yes || Yes || Yes || [[DED]] || [[SCP]], [[InFine]] || - | ||
+ | |- | ||
+ | | [[Woof!]] || Software || Yes || Yes || - || - || None || No | ||
|- | |- | ||
| [[Zandronum]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DECORATE]] || [[ACS]] || Yes | | [[Zandronum]] || Software, [[Wikipedia:OpenGL|OpenGL]] || Yes || Yes || Yes || [[DECORATE]] || [[ACS]] || Yes | ||
Line 205: | Line 217: | ||
* ''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. | * ''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" | + | {| class="wikitable sortable" style="font-size: 85%; text-align: center; width: auto" |
!Name | !Name | ||
![[Splitscreen]] | ![[Splitscreen]] | ||
Line 223: | Line 235: | ||
|- | |- | ||
| [[DOOM BFA]] || No || No || P2P (Synchronous) || No || Doom 1.9 || No | | [[DOOM BFA]] || No || No || P2P (Synchronous) || No || Doom 1.9 || No | ||
+ | |- | ||
+ | | [[Doom Legacy]] || Yes || No || C/S (Synchronous) || Yes || Doom 1.9 || No | ||
|- | |- | ||
| [[Doom Retro]] || No || - || - || - || - || - | | [[Doom Retro]] || No || - || - || - || - || - | ||
Line 237: | Line 251: | ||
|- | |- | ||
| [[Risen3D]] || No || - || - || - || - || - | | [[Risen3D]] || No || - || - || - || - || - | ||
+ | |- | ||
+ | | [[Woof!]] || No || Yes || C/S (Synchronous) || No || Chocolate Doom || No | ||
|- | |- | ||
| [[Zandronum]] || No || No || C/S (Asynchronous) || Yes || [[Skulltag]] ([[csDoom]]) || Yes | | [[Zandronum]] || No || No || C/S (Asynchronous) || Yes || [[Skulltag]] ([[csDoom]]) || Yes | ||
Line 253: | Line 269: | ||
==Comparison by compatibility== | ==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: | 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 | + | * ''Very high'' compatibility is reserved for ports which aim for rigorous bug-compatibility: these may include 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. In general, the port should crash when vanilla would crash, and errors should be exhibited just as they would occur in vanilla. Exceptions exist for dangerous bugs or security holes (e.g., a crash in vanilla which would have crashed DOS itself should not crash a modern OS like Windows or Linux). Almost all known vanilla demos sync, and desyncs for any reason are considered a bug to be fixed in the port. |
* ''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. | * ''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. | * ''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. | ||
Line 261: | Line 277: | ||
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. | 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. | ||
− | {| class="wikitable" style="font-size: 85%; text-align: center; width: auto" | + | {| class="wikitable sortable" style="font-size: 85%; text-align: center; width: auto" |
!Name | !Name | ||
![[Vanilla Doom]]<br />accuracy | ![[Vanilla Doom]]<br />accuracy | ||
Line 272: | Line 288: | ||
| [[Chocolate Doom]] || Very high || Very high || Very high || Very high || No || Doom 1.666, 1.7, 1.8, 1.9<ref>Different compatibilities available with command line -gameversion</ref> | | [[Chocolate Doom]] || Very high || Very high || Very high || Very high || No || Doom 1.666, 1.7, 1.8, 1.9<ref>Different compatibilities available with command line -gameversion</ref> | ||
|- | |- | ||
− | | [[Crispy Doom]] || Very high || | + | | [[Crispy Doom]] || Very high || Very high || Very high || Very high || [[BEX]] only || Doom 1.9 |
|- | |- | ||
− | | [[DelphiDoom]] || Average || Average || Average || Average || Mostly || | + | | [[DelphiDoom]] || Average || Average || Average || Average || Mostly || Own |
|- | |- | ||
| [[Doomsday]] || Average || High || High || - || Partial || None | | [[Doomsday]] || Average || High || High || - || Partial || None | ||
|- | |- | ||
− | | [[DOOM BFA]] || | + | | [[DOOM BFA]] || High || - || - || - || Partial || Doom 1.9, 1.11 |
+ | |- | ||
+ | | [[Doom Legacy]] || Average || Average || - || - || Yes || Own, Doom 1.9, Boom 2.02 | ||
|- | |- | ||
| [[Doom Retro]] || Average || - || - || - || Yes || None | | [[Doom Retro]] || Average || - || - || - || Yes || None | ||
Line 293: | Line 311: | ||
|- | |- | ||
| [[Risen3D]] || Average || - || - || - || Mostly || Own | | [[Risen3D]] || Average || - || - || - || Mostly || Own | ||
+ | |- | ||
+ | | [[Woof!]] || Very high || - || - || - || Yes || Doom 1.9, Boom 2.02, MBF, [[MBF21]] | ||
|- | |- | ||
| [[Zandronum]] || Low || Low || Low || Low || Mostly || Own | | [[Zandronum]] || Low || Low || Low || Low || Mostly || Own |
Latest revision as of 06:58, 30 December 2023
Below is a rough comparison of the source ports that are currently active or popular.
Contents
Comparison by general information[edit]
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 |
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 BFA | 1.2.8 | 2021-10-29 (2 years ago) | RBDoom 3 BFG | GitHub | Link | - | Link |
Doom Legacy | 1.48.14 | 2023-12-29 (2 months ago) | DOSDoom Doom/Heretic source code | Sourceforge | 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 | - | - |
Woof! | 14.3.0 | 2024-03-15 (14 days ago) | WinMBF | GitHub | - | - | - |
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[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, 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 v2 | C | Yes | Yes | Yes | Yes | Yes[1] | Yes | Yes | Yes | Yes | Yes | Yes |
Crispy Doom | GPL v2 | C | Yes | Yes | ? | ? | ? | Yes | Yes | Yes | Yes | Yes | Yes |
DelphiDoom | GPL v2 | Delphi | Yes | - | - | ? | ? | Yes | Yes | Yes | Yes | Yes | Yes |
Doomsday | GPL v2 | C, C++ | Yes | Yes | Yes | ? | Planned | Yes | Yes | Yes | Yes | - | Yes |
DOOM BFA | GPL v3 | C++ | Yes | Yes | untested | - | - | Partial | Yes | - | - | - | Yes |
Doom Legacy | GPL v2 | C | Yes | Yes | Yes | - | - | Yes | Yes | Yes | - | - | Yes |
Doom Retro | GPL v3 | C | Yes | Yes | Yes | ? | Yes[1] | Yes | Yes | - | - | - | Yes |
EDGE | GPL v2 | C++, QuakeC | Yes | Yes | Yes | Planned | - | Yes | Yes | Yes | Planned | Planned | Yes |
Eternity | GPL v3 | C++ | Yes | Yes | Yes | WIP | - | - | Yes | WIP | WIP | WIP | Yes |
GZDoom | GPL v3 | C++ | Yes | Yes | WIP | Planned | Yes[1] | Yes | Yes | Yes | Yes | Yes | Yes |
Odamex | GPL v2 | C++ | Yes | Yes | Yes | ? | ? | Yes | Yes | Planned | - | - | Yes |
PrBoom+ | GPL v2 | C | Yes | Yes | Yes | ? | Yes[1] | Yes | Yes | - | - | - | Yes |
Risen3D | GPL v2 | C++ | Yes | - | - | ? | ? | - | Yes | - | - | - | - |
Woof! | GPL v2 | C | Yes | Yes | ? | ? | ? | Yes | 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 | - | - |
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[edit]
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[edit]
- Wolfenstein 3D (WIP)
- Rise of the Triad (WIP)
- Blake Stone (WIP)
Eternity Engine[edit]
- PlayStation Doom (WIP)
GZDoom/Zandronum[edit]
Comparison by features[edit]
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, PascalScript | Yes |
Doomsday | OpenGL | Yes | Yes | Yes | DED | InFine, XG | Planned |
DOOM BFA | OpenGL | Yes | Yes | Yes | EXPINFO | ActMap | Yes |
Doom Legacy | Software, OpenGL | No | Yes | Yes | - | FraggleScript | - |
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 | - |
Woof! | Software | Yes | Yes | - | - | None | No |
Zandronum | Software, OpenGL | Yes | Yes | Yes | DECORATE | ACS | Yes |
ZDaemon | Software | Yes | Yes | Yes | DEHSUPP | ACS | - |
Name | Renderer | Uncapped framerate | Limit-removing | Console | Custom content | Map Scripting | UDMF support |
Special features |
Comparison by multiplayer functionality[edit]
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 BFA | No | No | P2P (Synchronous) | No | Doom 1.9 | No |
Doom Legacy | Yes | No | C/S (Synchronous) | Yes | Doom 1.9 | 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 | - | - | - | - | - |
Woof! | No | Yes | C/S (Synchronous) | No | Chocolate Doom | No |
Zandronum | No | No | C/S (Asynchronous) | Yes | Skulltag (csDoom) | Yes |
ZDaemon | No | No | C/S (Asynchronous) | Yes | csDoom | Yes |
Name | Splitscreen | Multiplayer Saves | Multiplayer Protocol | Late Joining | Origin | CTF |
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 aim for rigorous bug-compatibility: these may include 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. In general, the port should crash when vanilla would crash, and errors should be exhibited just as they would occur in vanilla. Exceptions exist for dangerous bugs or security holes (e.g., a crash in vanilla which would have crashed DOS itself should not crash a modern OS like Windows or Linux). Almost all known vanilla demos sync, and desyncs for any reason are considered a bug to be fixed in the port.
- 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.666, 1.7, 1.8, 1.9[4] |
Crispy Doom | Very high | Very high | Very high | Very high | BEX only | Doom 1.9 |
DelphiDoom | Average | Average | Average | Average | Mostly | Own |
Doomsday | Average | High | High | - | Partial | None |
DOOM BFA | High | - | - | - | Partial | Doom 1.9, 1.11 |
Doom Legacy | Average | Average | - | - | Yes | Own, Doom 1.9, Boom 2.02 |
Doom Retro | Average | - | - | - | Yes | None |
EDGE | Low | Very low | - | - | Yes | Own (experimental) |
Eternity | High | Very low | - | - | 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[5] |
Risen3D | Average | - | - | - | Mostly | Own |
Woof! | Very high | - | - | - | Yes | Doom 1.9, Boom 2.02, MBF, MBF21 |
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.0 1.1 1.2 1.3 1.4 Via Delta Touch.
- ↑ All listed CTF supported ports abide by the CTF standard.
- ↑ There's an experimental branch that adds splitscreen support.
- ↑ Different compatibilities available with command line -gameversion
- ↑ 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