Doom monster
A Slightly Condensed Genealogy of DOOM Source Ports
By James 'Quasar' Haley
Lead Programmer, Team Eternity

A Tragedy and the GPL

On other fronts, efforts were underway to move DOOM into more operating systems. Linux and Windows versions appeared and quickly diversified. Also, the effort to create an OpenGL-based version of DOOM, which had been born in the mind of Bernd Kreimeier, and was subsequently encouraged by John Carmack, began in earnest. One of the first DOOM ports to achieve meaningful results with OpenGL was glDoom by Bruce Lewis.

However, not long into development, the source code for glDoom was lost in a hard drive failure. With the DOOM source having been released under a proprietary, educational-use license, it was not uncommon at this time for source ports to keep their source code locked away and unavailable to the general public. glDoom was one such port, and since Bruce Lewis didn't have appropriate backups, once his drive failed, his efforts were put to an end.

Talk of changing the DOOM source license had started some time earlier on the OGRE forum, where John Carmack was involved in some preliminary discussions. He was unhappy with the current license, and also with the unwillingness of some ports to share their code, which was only available in the first place because of id's generosity.

After persuasion by some community members, including Linguica of Doomworld fame, Carmack gave permission for the DOOM source to have its terms of distribution changed to the GNU General Public License, which is the most- used open-source, free-software license in the world. It requires, among other things, that any released modification of a GPL work must either include the source code or an offer to obtain it freely. While source ports currently in progress could not be retroactively forced to convert to the GPL license, any new ports basing themselves off the relicensed source would have to obey its terms. The obvious hope was to avoid another glDoom situation, and to guarantee that DOOM source port development would remain a process of sharing and mutual benefits. Most source ports converted to the GPL without being asked, and the vast majority use it today.

ZDOOM Rising

On March 6, 1998, Randy Heit released the first public version of his ZDOOM port. It was a cross-breeding of the Linux DOOM v1.10 source with a couple of the primitive Windows ports which had sprung up earlier, including ATB DOOM and NTDOOM.

ZDOOM has had an incredible history of development, often with over 50 beta releases between each major version. It has integrated code from numerous sources. Despite not being based on BOOM, it has almost 100% BOOM compatibility. It also has almost 100% Heretic and Hexen support, and its native map format is actually that of Hexen. The term "ZDOOM-Hexen format" has emerged to describe these maps meant to work with ZDOOM.

The port includes several features still not found in any other software-based port, such as mirrors and slopes (although efforts to duplicate or even surpass these are underway in a small number of ports).

ZDOOM has both influenced and been influenced by almost every existing source port. It is currently the most popular port for editing, and its offspring ports, including ZDaemon and Skulltag, dominate the multiplayer community. Earlier in its development, ZDOOM enjoyed some controversy due to the amount of code it was perceived to have used directly from other projects (despite the fact that open source and free software are all about sharing in the first place). One particularly famous incident is when fraggle of SMMU fame thought that Randy Heit had taken SMMU's swirling flat code without giving him credit, when in actuality it was just a coincidence that they were working on it at the same time.

ZDOOM is an exception to the licensing trend of DOOM ports. Due to complex licensing issues caused by use of code from Heretic, Hexen, Quake, and Ken Silverman's BUILD engine, ZDOOM cannot be released under the GPL. It is, however, under a liberal license called BSD, which allows at least some of its source code to be used in GPL ports.

It appears that Heit's current goal is to transform ZDOOM into a strong, general, software 3D game engine, and this has almost been achieved. ZDOOM will most likely remain at the top of the source port heap for a long time to come.

Children of BOOM

Development of the BOOM source itself did not stop when the BOOM team broke up. One final version of BOOM, v2.02, was released by the remnants of the BOOM team. At the same time they were working, Lee Killough had begun his own effort to achieve some of his personal goals for BOOM Phase II, as well as finishing some work which he wasn't satisfied with in BOOM. At first, he had the idea of creating a BOOM variant which could emulate the alpha and pre-beta versions of DOOM. This was the almost exclusive goal of "Beta DOOM" for several months.

As time went on, however, Lee started to work more and more on other issues and features in the engine, and he finally decided to release his work as a new source port, to be called Marine's Best Friend. This interesting name was inspired by the helper dogs which Lee added to show off the new friendly monster logic he painstakingly added.

Although it seemed that Lee intended to continue work on MBF for some time to come, he ended up resigning and leaving the DOOM community entirely just before its one and only release at v2.03. Lee's departure from the community was very shocking to some, and remains an occasional subject of chatroom gossip.

Around the same time, BOOM was also expanding in another direction. It too was growing to new operating systems, and one of the ports taking it there was proff's PRBOOM. At first, it was a simple port of BOOM to Windows. Later, after merging with the older Linux ports LxDOOM, and LSDLDoom, which was written by SDL author Sam Lantinga, PRBOOM quickly accelerated.

PRBOOM is currently known as the most compatible DOOM source port, and it has 99.9% flawless v1.9 demo playback. Although not all of its options are set for DOOM purity out of the box, it can be easily set to emulate almost any version of DOOM, even ones older than v1.9. Colin Phipps maintains a list of bugs, including demo compatibility issues, at his website. Other contemporary ports have made use of this information to improve their own compatibility extensively.

Not too long after MBF development ceased, Simon Howard, also known as fraggle, began work on his "Smack My Marine Up" port, known as SMMU for short. SMMU retained all the compatibility of BOOM and MBF, but it also added a lot of bolder features such as mouselook, a fully functional console, DOS-based client-server networking, and finally, a from-scratch scripting system known lovingly as FraggleScript.

After fraggle abandoned his efforts with SMMU, Team Eternity decided to make the custom source modification for their Eternity TC project into a stand-alone source port project, to be called the Eternity Engine. It had started out as a modification of BOOM, then MBF, and then finally SMMU v3.21.

The Eternity Engine is still going strong at v3.31 beta 4, and is now available on multiple platforms. It still retains excellent compatibility, almost as high as that of PRBOOM. It also boasts high stability, and a number of important new features, including EDF, which makes almost all of the static data from inside of the executable editable, and ExtraData, which allows infinite expansion of the map format through use of a special text script. It currently lacks netplay, however, due in part to its violent family history.

Next -->