One of the first programs -- if not the first -- that allowed the editing of Doom game levels. The editor was written by Brendon Wyber and Raphael Quinet. It was later extended to become DETH, the Doom Editor for Total Headcases.
The ability to edit levels was one of the features that contributed to Doom's extreme popularity. But this ability itself depended upon the labor of a number of volunteers, who, with id Software's permission and some of their help, reverse-engineered Doom. The people who wrote DEU are to thank, as well as Matt Fell, the author of the Unofficial Doom Specs.
Doom itself was written by JohnCarmack and many others at IdSoftware.
Is there any .wad file for the Doom II engine that is a major improvement on the original, even in single-player mode?
DoomWorld (http://www.doomworld.com) recently ran a contest asking people to produce the best level they could using only 10 sectors. Some of those levels were amazing, IMHO, but many were made to run on enhanced Doom source ports such as PRBoom.
Doom II v1.666 has 32 levels, of which only level 30 is really poor - as it's too diffficult,lacks variety, has no exit switch, and gives you no indication of when you are about to succeed. There is, however, plenty of scope for more interesting graphics, better sound, and more entertainment, perhaps coupled with having fewer demons about, as merely shooting demons is not particularly interesting. This would be a substantial challenge, even with the standard engine, which seems reasonably capable.
Sometimes I think there could be a book, Everything I Need To Know About Programming I Learned From The Doom Editing Utility. Well, I didn't really learn everything about programming from DEU, but I learned a lot. DEU was the first C program of that size I had ever seen. It was DEU that showed me how to use the mouse in a DOS program; that knowledge became obsolete later, but it was priceless in its day.
DEU taught me something about data structures, too. In Doom, every linedef references two vertices and two sidedefs. Every sidedef references a sector. It was DEU (and Doom) that showed me that when you have a bunch of interconnected objects, you can store them all in arrays, let them refer to each other by their array indices, and "collect garbage" under user control. This can be much more controllable for the user than using the language's native "pointer" or "reference" type, even if the language has its own garbage collector. You can also delete any element by swapping it with the last element and deleting the last element. -- EdwardKiser [Tue Apr 10 2001, 2:45 PM UTC]
See also DoomEditorLanguageTest.