Features of SMMU:
- Rewritten menu, heads-up display, and networking code
- Quake-style "start map", courtesy of Derek "Afterglow" MacDonald
- Windows, MS-DOS and Linux ports
- 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
By 'the level header', I mean 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' has the name "start". Levels with nonstandard names can be accessed from the console using the "map" command: eg "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 Eternity, the level header is used to hold information about the level. The format is a simple ascii 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 also supports global MapInfo lumps.
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.
Anyway, looking at some levels, I found particularly annoying the way that 3-D bridges 'clunked' when you walked over them. So I decided to implement the sector flags which the boom team planned to implement. You may now use bits 10 and 11 in your wads as you please.
- This article incorporates text from the open-content Doom Wiki article SMMU.
- SMMUEDIT.TXT, supplied with the old Eternity documentation