Features of SMMU:
- FraggleScript (later removed from Eternity due to design flaws)
- Rewritten menu, heads-up display, and networking code
- Quake-style "start map", courtesy of Derek "Afterglow" MacDonald (later removed from Eternity due to dependence on scripting languages)
- Windows, MS-DOS and Linux ports (Eternity also runs on macOS)
- Various demo features, including the ability to move cameras freely within demos while they are playing
- Text-mode rendering
After the project was abandoned, the Eternity Engine emerged as a derivative of the SMMU codebase.
SMMU is licensed under the GNU GPL.
Eternity is based upon SMMU, and therefore contains support for most SMMU features, as well standard BOOM and MBF linedef and sector types, Dehacked lumps, etc. Basically anything they can do, Eternity can do.
Eternity also contains further support for a number of extra linedef types which will only work with it.
- Back to Eternity Engine
- This section incorporates text from the SMMUEDIT.TXT documentation.
The level header
A 'level header' is the wad resource which starts a level. For example, the level headers for all the original doom levels were all in the format MAPxy or ExMy.
In Eternity, the level header can take any name, for example, the Eternity 'start map' had the name START. Levels with nonstandard names can be accessed from the console using the "map" command, e.g. "map start".
Additionally, Eternity automatically detects new levels loaded from wads and will start on the appropriate level when the 'new game' option is chosen from the main menu (only if the "start new game on first new map" option on the Eternity Options menu is set to "yes", and only in DOOM II).
The level info lump
In original Doom, the level header resource was empty: it was always 0 bytes long. This is not to say that it had to be 0 bytes long: any data in the level header was simply ignored.
In SMMU, the level header was used to hold information about the level. The format is a simple text file, similar in style to the '.ini' files which are found in a typical Windows directory.
See the Eternity Engine MapInfo Reference for full information. As of Eternity Engine v3.31 'Delta', Eternity supports global MapInfo lumps. Setting MapInfo data in the level header lump is now deprecated.
In original Doom, you could place things in levels, but their directions were rounded down to the nearest 45 degrees. However, in Eternity you can specify any angle right down to the nearest degree.
This does not require any kind of change in wad format. The original system allowed you to specify angles that were not 45 degree 'aligned'. However these were simply rounded down. Eternity has greater accuracy so you can specify any angle.
Eternity allows you to change the background in intermission screens but there is also a more advanced system that allows you to see a view of the after you have left it. If you place a thing of type 5003 in the level, when you get to the intermission screen you will see a view from that point rather than the standard 'still' background.
Placing more than one camera in a level works, also. If you make more than one camera, one of them is simply chosen at random.
The console variable 'r_swirl', when set to 1, will stop all animated flats from animating and instead give them a 'swirling' effect similar to the quake water effect. However, this affects all flats and for some animated flats it doesn't look right.
You can specify when to use the 'swirl' effect on individual animated flats using the boom ANIMATED resource. You can use the SWANTBLS.EXE program to create your own set of animated flats. If the delay between flat frames is set greater than 65535, that flat will be given the swirl effect.
Boom once promised two extra sector flags, if you look in boomref.txt:
Bits 10 and 11 are not implemented yet, but are reserved for use in sound control. Bit 10 will suppress all sounds within the sector, while bit 11 will disable any sounds due to floor or ceiling motion by the sector.
In some levels, fake vanilla-compatible 3D bridges may "clunk" when you walk over them (due to the instant floor move specials). SMMU thus implemented sector flags which block mechanical sounds (or alternatively, all sounds) coming from them. You may now use bits 10 and 11 in your wads for the generalized sector types. Modern editors should offer this feature in the sector properties dialog box.
- This article incorporates text from the open-content Doom Wiki article SMMU.
- SMMUEDIT.TXT, supplied with the old Eternity documentation