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.
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
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
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
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.