SMMU: Difference between revisions

From Eternity Wiki
Jump to navigationJump to search
No edit summary
(3 intermediate revisions by the same user not shown)
Line 3: Line 3:
Features of SMMU:
Features of SMMU:


* FraggleScript
* FraggleScript (''later removed from Eternity due to design flaws'')
* [[List_of_console_commands|Console]]
* [[List_of_console_commands|Console]]
* Rewritten [[menu]], [[heads-up display]], and [[networking]] code
* Rewritten [[menu]], [[heads-up display]], and [[networking]] code
* Quake-style "start map", courtesy of [[Doom Wiki:Derek "Afterglow" MacDonald|Derek "Afterglow" MacDonald]]
* Quake-style "start map", courtesy of [[Doom Wiki:Derek "Afterglow" MacDonald|Derek "Afterglow" MacDonald]] (''later removed from Eternity due to dependence on scripting languages'')
* Windows, MS-DOS and Linux ports
* Windows, MS-DOS and Linux ports (''Eternity also runs on macOS'')
* Chasecam
* Chasecam
* Various demo features, including the ability to move cameras freely within demos while they are playing
* Various demo features, including the ability to move cameras freely within demos while they are playing
Line 16: Line 16:
SMMU is licensed under the [[Wikipedia:GPL|GNU GPL]].
SMMU is licensed under the [[Wikipedia:GPL|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 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.
Eternity also contains further support for a number of extra linedef types which will only work with it.
Line 22: Line 22:
{{smmuedit}}
{{smmuedit}}
==The level header==
==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".
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' has the name "start". Levels with nonstandard names can be accessed from the console using the "map" command: eg "map start".
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).
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==
==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 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.
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 also supports global MapInfo lumps.
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.'''


==Thing options==
==Thing options==
===Directions===
===Directions===
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.
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.
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.
Line 48: Line 48:
==Other==
==Other==
===Swirly flats===
===Swirly flats===
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.
The console variable <code>r_swirl</code>, 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.
You can specify when to use the 'swirl' effect on individual animated flats using the [[EDF animations]], the Boom [[ANIMATED]] resource or [[ANIMDEFS]]. For Boom ANIMATED, you can use the <code>SWANTBLS.EXE</code> 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.


===Sector Flags===
===Sector Flags===
Line 60: Line 60:
   by the sector.
   by the sector.


Anyway, looking at some levels, I found particularly annoying the way that
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. See [[Generalized sector types]].
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.


== Sources ==
== Sources ==

Revision as of 15:03, 26 November 2020

SMMU (Smack my Marine Up) is a source port created by Simon Howard. It is derived from MBF.

Features of SMMU:

  • FraggleScript (later removed from Eternity due to design flaws)
  • Console
  • 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)
  • Chasecam
  • 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.

Thing options

Directions

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.

Intermission cameras

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.

Other

Swirly flats

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 EDF animations, the Boom ANIMATED resource or ANIMDEFS. For Boom ANIMATED, 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.

Sector Flags

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. See Generalized sector types.

Sources

  • This article incorporates text from the open-content Doom Wiki article SMMU.
  • SMMUEDIT.TXT, supplied with the old Eternity documentation

External links