EDGE

From DoomWiki.org

EDGE, 3DGE, Hyper3DGE, Dream3DGE
EDGE logo.png
Codebase DOSDoom
Developer(s) Corbin Annis (Chu), UsernameAK, Joseph Fenton, Hayden Kowalchuk, Rachael Alexanderson (Eruanna), Brendan Doe, Damir Srpčič, Maciej "CMatso" Kadlubowski, dashodanger, Andrew Apted, Andy Baker (darkknight), Darren Salt, Erik Sandberg, David "DaveEL" Leatherdale, John Cole, Kester Maddock, Martin Howe, Bruce Lewis
Contributor(s) Chris J. Mullen (CeeJay), gameblabla, Josh Pearson, Benjamin Moir, Luke Brennan (Lobo), Marc A. Pullen (Fanatic)
Initial release 1.22 (2000-06-20, 24 years ago)
Latest release 2.1.0-RC1.5 (2018-10-17, 6 years ago)
Development status Active
Written in C++, QuakeC (modified)
Target platform Cross-Platform
License GPLv2+
Website SourceForge
Source Repository GitHub

EDGE (Enhanced Doom Gaming Engine) is a collaborative open source project based upon the Doom source code. EDGE is derived from an earlier project called DOSDoom, and started development in early 1999 before its parent DOSDoom 0.65 was released. EDGE is sometimes referred to as 3DGE or hyper3DGE due to the long-standing development of the 3DGE fork, which was initially released on April 11, 2011; it was originally created to power the Hypertension TC, and absorbed back into EDGE seven years later. The first official EDGE version was released on June 20, 2000. The latest stable version is 2.0.4, released on December 13, 2016. The team releases development builds on a semi-regular basis via DRD Team.

EDGE has been compiled for many popular operating systems, including x86/x64 Windows, Linux, BeOS, Raspberry Pi/ARM64, Sega Dreamcast, and Mac OS X. The project is hardware-accelerated only, and also implements support for PowerVR2 CLX2 (through KallistiOS and the GLDC wrapper) for the Dreamcast platform. Previous versions of EDGE incorporated both software-rendered and hardware-accelerated versions, though the former was dropped with the release of version 1.29.

The most attractive feature of EDGE is its DDF system, which originated from DOSDoom. DDF describes all game behavior inside text files external to the executable file. As a result, it is popular among modders who use the extensibility to add many new weapons and features with many fewer of the limits present in other source ports. With DDF, for example, it is possible to create monsters which can possess multiple missile and melee attacks, or create custom pain and death states for monsters when hit by specific weapons or projectiles. Combined together with RTS and the more modular, modern language COAL, EDGE can rival what other popular ports are capable of through their respective scripting language implementations.

Dream3DGE was a Sega Dreamcast-only port of EDGE 1.29, and has high compatibility with pre-1.31 mods, but cannot currently run anything created with EDGE 1.31 or above. It must be built with KallistiOS. It contains most, if not all, functionality from the parent port. This branch (and EDGE 1.29, on which it was based) was abandoned officially, rewritten, and integrated back into 3DGE with version 2.0. The Dreamcast codebase utilizes GLdc, a wrapper for OpenGL functionality, instead of the previous usage (via LibGL) of raw PowerVR calls, for all rendering functions compatible with the SH-4 CPU.

Historical timeline[edit]

DOSDoom origins[edit]

DOSDoom began development in 1997, initially by Chi Hoang who coined the term source port. Andy Baker (darkknight) was a frequent collaborator, and soon amassed a team of developers known as the DOSDoom Team. The entirety of the DOSDoom team began developing pioneering systems that other ports did not have at the time, including DDF and RTS scripting languages, the first such human-readable systems for Doom. It is worth noting that the scripting systems were wholly different from DeHackEd at the time because they did not need to modify the executable directly, and were split into several different files that could control much more at a granular level than DeHackEd ever could. The DOSDoom Team consisted of Hoang, Baker, Erik Sandberg, Kester Maddock, Martin Howe, John Cole and David Leatherdale.

Into 1998, the source port community was growing rapidly, including the emergence of ZDoom, Doom Legacy, Boom and the first OpenGL accelerated engine, glDoom. glDoom especially made an impact on the team into 1999 as OpenGL was seen as a major advancement at the time; this would be highly influential later in development. DOSDoom continued to be a major powerhouse for modders well into development of its direct successor, EDGE.

Planned merger with TeamTNT[edit]

In mid-1998, TeamTNT held discussions with the DOSDoom Team about merging their project, OGRE, directly into DOSDoom. The collaboration was announced in late 1998 by Ty Halderman and Andrew Baker, and generated much interest as TeamTNT had previously developed another groundbreaking port named Boom; discussions were even attended by John Carmack, which he wrote about in his .plan file in 1998. Captain Mellow also wrote about the potential merger with TeamTNT's port on August 2, 1998.

However, while early work was progressing by both teams, difficulties ensued as each had differing views of how development was to continue, with the DOSDoom Team's primary concern not to lose DOSDoom's identity. After a few months, the engine was abandoned. OGRE was arguably the direct progenitor of EDGE as several of the ideas both teams wanted to explore were further realized with the continued development of DOSDoom as EDGE. The failed merger didn't affect DOSDoom's ultimate community standing and the port continued to be popular; though, possibly as a result of the failed merger of DOSDoom and OGRE, Hoang left the DOSDoom Team and the Doom community after v0.63 was released, followed by other members of the team shortly thereafter.

Fork to EDGE[edit]

In early 1999, several more source ports were released, all offering their own features. 3D floors were pioneered with DOSDoom which generated much interest, but the DOSDoom Team began fragmenting as some members left the community altogether, or joined different projects. Andrew Baker and his team believed that a retrench of DOSDoom was inevitable, primarily because the port was no longer limited to the DOS operating system.

It was also around this time that Andrew Apted had joined the team; it was decided that the DOSDoom name would change to better reflect its status as the most advanced 3D source port of its time. "TADE" was seen as a possible name before the team ultimately settled on "EDGE"; the port was in development before DOSDoom saw its final public release.

DOSDoom v0.653 was released April 10, 1999, and would be its final version. The remaining members of the DOSDoom Team (Baker, Erik Sandberg, and David Leatherdale), with Andrew Apted, publicly formed the EDGE project from the existing codebase, though privately DOSDoom was already transitioning to EDGE. Bruce A. Lewis was also an early contributor.

Even though EDGE did not see public release until mid-2000, the port was in active development from 1999 (the first known internal version released was 1.16). Andrew Baker later admitted through his log file from September 1999 that transitioning the codebase was more work than the group initially realized; this observation remained true during the rest of the port's lifetime.

Initial release[edit]

EDGE was officially released with version 1.24 on June 20, 2000 after more than a year and a half of secretive development; it was seen as a milestone as the DDF and RTS systems were more fully realized, as well as becoming an early adopter of OpenGL rendering. At the time, EDGE was the most advanced source port as several other emergent technologies were realized in concert, including glBSP, the first true 3D node builder for Doom. In addition to OpenGL support, the team maintained backward compatibility with its software renderer, permitting users with no accelerated hardware to continue enjoying the port.

The development of Marc A. Pullen's QDoom was also seen as a major motivating factor for the EDGE team in its early years; its release was very popular and helped elevate EDGE's status as a true modder-centric engine. Cory Whittle was also a frequent developer of EDGE modifications that also kept the port healthy and the team motivated.

Post-release events[edit]

EDGE development continued into the next decade; while its early years were notable for EDGE being the unequivocal choice for modders and OpenGL enthusiasts, the team began to experience strain in the mid-2000s. As most members of the DOSDoom team had left by 2004, development was primarily being shouldered by Andrew Baker and Andrew Apted. With major rewrites of the engine taking place in 2004 and following most releases of the port up until 2008, development was shifted primarily between the last two active developers; because of this, the community was beginning to perceive the engine as somewhat unstable.

The first release to drastically change the project's direction was EDGE 1.29, released in 2007 after three years of development, which dropped the software renderer entirely. It was seen as both progressive and regressive: the community felt that the team was forcing modders and players to upgrade to OpenGL-compatible hardware in order to use the port. Nonetheless, the release saw other innovations, such as Ogg Vorbis playback, PNG sprite/patch replacements, and colored dynamic lighting. The final release was not without its faults, as the team chose to release many experimental versions during the long development cycle, which perhaps contributed to its initial signs of instability.

With the much-anticipated release of 1.31 in 2008, EDGE's standing once again improved and modders began returning to the engine, though at this point ZDoom was tearing much of the mind-share away as it began to see major milestones of its own, notably ACS for level scripting, which was more advanced than RTS. Andrew Apted's role shifted to being the primary developer of EDGE at this time, and 1.31 was well received due to its substantial bugfixes and its scripting enhancements.

In late 2008, however, when Andrew Apted began yet another rewrite for a 1.32 release, he realized that he could not keep up with demand as the engine began to take its toll on him as the sole developer. That major branch of the engine, which included features such as a new node builder (TinyBSP), Lua scripting, and MD3 model rendering, was initially not received with much interest due to bad timing; it was also around this time that Andrew Baker had retired from the team. Possibly as a result of this, Andrew Apted grew frustrated and scrapped a large amount of work on the rewrite; he instead merged select features back into the far more stable 1.31 branch to produce version 1.34 in late 2009. Andrew Baker committed to finishing up their new scripting language, COAL.

He started to make plans to fix up any outstanding issues with EDGE and make the final release. Perhaps as a result of ZDoom's overwhelming popularity and rapid development, Andrew Apted could not keep up with all of the feature requests from the community, as he had invested much work and time into the 1.3x branches. He began hinting at his desire to shift to other projects, notably Eureka and OBLIGE, which were later released to much acclaim.

Into 2011, the community was well aware of Apted's plans to retire from EDGE. At the time, a major TC named Hypertension was perhaps the biggest project to be developed on the engine recently. The authors of that TC, Isotope SoftWorks, foresaw the closure, and development of a fork named 3DGE began production in early 2011 by that same team to ensure the retention of features required by their mod.

After much speculation, the presumed final release of EDGE, version 1.35, appeared on April 9th, 2011, and Andrew Apted formally retired from development, leaving EDGE without a maintainer. With the emergence of the 3DGE fork, EDGE development had closed its doors.

The EDGE 1.x team consisted of Andrew Apted and Andy Baker (darkknight) as the primary developers, and Marc A. Pullen (Fanatic) and Luke Brennan (Lobo) as distributors/promoters. Darren Salt was also a frequent developer and contributed a lot of code and bugfixes.

3DGE and subsequent history[edit]

Two days after Andrew Apted retired, the first version of 3DGE (1.35d) was released as a hotfix to 1.35, having forked from the abandoned rewrite of EDGE 1.32 two years earlier. Despite its early hiccups, what was left of the community warmed to it as it incorporated features that many were hoping to have been carried over from 1.32. The first evolutionary binaries began with v1.36 later in 2011 - it took nearly 3 and a half years before the final version of the 1.x branch was released in late 2014. The team decided the big advancements, namely framerate interpolation, would come later as there were numerous stability problems with the network code and renderer, especially due to the emergence of SDL2.

The 2.0x branch began almost immediately and first released the following year in early 2015. In retrospect, it is seen that EDGE development (under the name 3DGE) indeed continued from 2011 into the present, introducing major features long requested such as UDMF, improved BOOM compatibility, archive support, and GLSL shaders to name a few, which had come to be seen as standard for a modern modder-centric port. The DDF, RTS, and COAL subsystems were also much improved and expanded.

EDGE's persistent popularity and perseverance earned the respect of, and occasional code contributions from, several other major developers in the community including GZDoom programmers Magnus Norddahl (dpJudas), Rachael Alexanderson (Eruanna) and Graf Zahl. Andrew Apted would occasionally assist the team by providing consultation and bugfixes as needed.

This team, which included the aforementioned ZDoom developers, made its last full release on April 24, 2016 with v2.0.4-Final, which would be the final version of EDGE using its former namesake, but a great deal of hard work was put into the port before the milestone; despite its age, it is currently seen as the most stable release build.

Recent work[edit]

On September 18th, 2018, Corbin Annis (Chu) announced the next major version of EDGE, which will thereby become the first full version released by the team since 2016. With Andrew Apted's support and blessing, the separated 3DGE fork (long thought confusing due to the name and independently assigned version numbers) was formally absorbed back into EDGE. As before, big changes were planned for incorporation and due to this, the team has been unable to make an official release package due to re-introduced stability problems.

The impending launch of EDGE 2.1.0-Final will mark the first version of EDGE under its original namesake since 2011. EDGE's release history is therefore split into two distinct categories, the 1.x branches and the 2.x branches.

The 2.1x branch has seen regular development build releases throughout the years, with Release Candidates made available on GitHub. Currently, the team is working hard to finish big features and iron out potential stability problems, which was introduced when Rise of the Triad support was announced. In addition, most of the team who worked on the 2.0x branch is no longer actively contributing, forcing newcomers to step in for further rewrites.

The EDGE team currently consists of Corbin Annis (Chu), UsernameAK, and Joseph Fenton as the main programmers, with programming assistance from Rachael Alexanderson (Eruanna), Brendan Doe, Damir Srpčič, and Maciej "CMatso" Kadlubowski. In addition, the source port has a host of additional team contributors.

Current features[edit]

  • OpenGL 1.1/3.1 Renderer Paths, with Mipmapping, Smoothing, Dynamic Lighting, mirrors, portals, and GLSL shader support (bump-mapping/GLSL is only supported in the 3.1 rendering path)
  • 64-bit processor support
  • Raspberry Pi 4 (ARM64) support
  • SDL2 integration
  • UDMF support
  • PAK/PK3/PK7/EPK archive support
  • Rendering interpolation and vsync support
  • JPEG, PNG, TGA, BMP, PSD, GIF, HDR, PIC, PNM high-res textures, including support for TX_START/TX_END and HI_START/HI_END texture namespaces, and grAb offset support for PNG images
  • OPL synth playback (using nukeyT's OPLlib)
  • Basic shadows restored from EDGE 1.27
  • Integration of ZDBSP for UDMF and improvements to EDGE's built-in glBSP, including building nodes from archives; overall better 3D rendering of both existing Doom levels and newer levels
  • Several major and minor bugs squashed from the EDGE 1.x releases
  • Heretic/Chex Quest IWAD support
  • MD3 and MD5 model support
  • Two-player splitscreen co-op or deathmatch (local only)
  • RoQ video support for cinematics
  • Runs on the Sega Dreamcast console
  • Normal, specular and bright-map support on models
  • DDF/RTS/COAL enhancements and bugfixes
  • Polyobjects (more types will be supported in the future)
  • Camera-Man scripts: New scripting language which utilizes cameras for complete camera control
  • Support for up to 64 defined weapons at once through DDF
  • 16 ammo types: BULLETS, SHELLS, ROCKETS, CELLS, and AMMO5 to AMMO16 (EDGE 1.29 only; AMMO1 to AMMO4 can be used as aliases for the four main ammo types)
  • Extrafloors feature allows modders to create submersible liquids, room-over-room, or catwalks, as well as vertically moving platforms not embedded into the floor
  • Four armor types: GREEN (33% reduction), BLUE (50% reduction), YELLOW (75% reduction) and RED (90% reduction)
  • Automap can be made to be stationary instead of rotating with the player's facing angle, through COAL. Automap can also be applied as a secondary layer over the normal viewing screen opposed to replacing it, allowing the player to fight enemies and keep track of their position at one time
  • Weapons can have secondary attacks. weapons can also be made to be manually reloaded, or have idle stats as well. Integration through COAL and RTS means weapons and animations can be granularly customized
  • Support for MUS, MIDI, IT/MOD, and Ogg Vorbis music formats
  • DDF files allow the editing of many features (such as monsters, attacks, and levels)
  • Sprites can be viewed from 16 angles
  • RTS scripting format includes an option known as "Start_Map ALL" that allows global scripts to be created that affect all maps in the game without copying the script under each individual map
  • COAL virtual machine scripting language allows a more powerful alternative to functions normally found in DDF/RTS, as well as controlling the entirety of the HUD module
  • Sliding doors, which are implemented natively without using polyobjects

Features in development[edit]

  • OpenAL for audio subsystem (being restored from EDGE 1.28, replacing SDL2), which will allow for various 3D environmental effects
  • FFmpeg for video playback support (which will replace EDGE's built-in RoQ player), expected to accept any video format that FFmpeg does
  • New DDF types: Terrains.ddf, Sprites.ddf, Inventory.ddf and Shaders.ddf
  • Cross-platform IWAD selector
  • Dynamic GLSL shader compilation
  • Normal, specular, and brightmap support on world textures
  • True inventory support
  • Dynamic planar shadow system for dynamic lights
  • AssImp 3D model back-end support for more model formats
  • Quake III Arena style shader-based sky system
  • Better Boom compatibility
  • Decals on all surfaces (using planned Decals.ddf)
  • Wolfenstein 3D support (WLF_*)
  • Rise of the Triad support (RT_*)
  • Blake Stone support (BLK_*)
  • Strife support

Heretic support is being finalized, and is in beta as of version 2.1.0 test 3, using a similarly named definition file called HDF (Heretic Definition File). The HDF definitions were written initially by CeeJay, before the 3DGE Team took over to write proper IWAD support.

Popular add-ons[edit]

EDGE also brings its own unique set of popular add-ons to the Doom community. Although some dislike EDGE for its perceived instability, the following mods have in one way or another made their mark on the community.

A few notable mods in active development are Duke it Out in DOOM and Doom Forever, both by Chris J. Mullen (CeeJay), and a sequel to the Marc A. Pullen (Fanatic) mod QDOOM. SLaVE and Hypertension: Harmony of Darkness are two commercial products using this engine, both being developed by Isotope Softworks and published by Goat Store Publishing.

Note that, as with any port enjoying such a long lifespan, backward compatibility for older mods can be hit and miss. Certain mods might run only with the application version they were designed for; the move to EDGE 2.x in particular is known to have broken support for a number of mods. Keep this in mind, and report any problems encountered if any of the below legacy mods are not running correctly.

  • Don's Challenge — Created by Cory Whittle, Don's Challenge is a 3-episode modification based around the supernatural adventures of Don P. Tello, a veteran cop who is summoned into Hell by Mortis, the incarnation of Death, to challenge thousands of hellspawned creatures that his soul might be deemed worthy by her as a vessel. At the end of Episode 1, Don transforms Mortis into a cat. However, her brother Fate summons Mortis to Hell and takes Don with her. In the third episode, Don and Mortis return to Earth, only to find it overrun by Demons and Don's own family dead; Don and Mortis attempt to take vengeance for the deaths. This mod became popular due to the use of new monsters, weapons, and levels. One weapon (cigarettes) could even be used to heal the player. Another weapon (Booze) could be used to increase armor value, but took away a small portion of health as well. As of 2005, only one episode is fully released, but Episode 2 is reportedly on the way.
  • Immoral Conduct — Created by Cory Whittle, Immoral Conduct is a weapons modification for both EDGE and ZDoom (although the ZDoom version does not have as many features as its EDGE counterpart). The EDGE version contains the following: Knife, .45 Pistols, Stock 12g Pump Shotgun, Customized Pump Shotgun (fires "slasher rounds"), 12g Hand Cannon, 9mm Uzi SMG, Fragment Hand Grenades, 40mm Grenade/Tear Gas Gun, Assault Rifle with M203, Infantry Rifle with Bayonet, Minigun, 12g Sawed-off Shotgun, Beretta 9mm Pistol, Chrome Magnum Revolver, Sentry Turret Kit (summons helper turrets to attack enemies), Gas-Powered Chainsaw, Remote/Proximity Satchel Charges, and Marking/Visibility Flares. New items include a 50% medikit and Nightvision Goggles. New helper monsters included the Marine Corporal and Marine Private. Monsters are also modified (for example, the baron of Hell's blood is green), and shells are ejected from weapons. It is a partial conversion, sometimes mistaken for a total conversion, and in Whittle's words, "With my stuff, you have all the millions of user-made Doom and Doom II levels at your disposal to be enhanced with new weapons and items."
  • GoldenEye Doom2 — A fairly large in-progress TC, featuring a load of weapons in both single and multiplayer maps. Multiple versions are available: a single player DEH version compatible with Doom Legacy and ZDoom 1.22; multiplayer levels for standard Doom II; and an enhanced single player EDGE 1.27+ version. The latter contains the following weapons: punch/kick, Knives, Watch lazer, _Soviet_Tank_, Silencedable PP7, Dostovie, Cougar Magnum, Automatic Shotgun, pathetic Klobb, Duestch, Zmg, KF7, Sniper Rifle, Ak47, Moon Raker Laser, RCP-90, Golden Gun, Golden PP7, Rocket Launcher, and Grenades. Most of the weapons have alternate firing modes and some weapons can be dual wielded.
  • Cold Hard Cash — A unique weapons mod offering a larger variety of weapons. Cold Hard Cash's spin on the weapons mod is that instead of just finding weapons laying around or dropped from enemies, the player must mug monsters for money to use at special weapons dispensers, which replace the original weapons and sometimes artifacts, and appear in their place. An example is that the Chainsaw is now a dispenser that allows the player to buy a Knife, a Crowbar, and other melee-type items. Most dispensers have a special offer affixed, usually an upgrade to an existing weapon, which requires the said weapon to be held by the player before they can use it. It is also the first EDGE mod to use the "Start_Map ALL" RTS function, introduced in the 3rd release candidate of EDGE 1.29, which allows the same scripts to be usable on all maps instead of having to add the same ones to each map individually.

Sources[edit]

External links[edit]

  • Mapsets and add-ons:


Source code genealogy
Based on Name Base for
DOSDoom EDGE 1.x 3DGE
Dream3DGE
EDGE-Classic
Based on Name Base for
EDGE 1.x 3DGE EDGE 2.x
EDGE 1.x Dream3DGE None