Difference between revisions of "Vanilla Doom engine mapping reference"

From DoomWiki.org

[unchecked revision][unchecked revision]
(Created page with "Mapping for vanilla Doom requires awareness of various engine limitations and oddities that many source ports have eliminated. This article assumes a basic knowledge of Doom ...")
 
(Limitations: Chocorenderlimits info)
Line 2: Line 2:
  
 
== Limitations ==
 
== Limitations ==
 +
Vanilla Doom has several [[static limits]] on various map elements. [[Chocorenderlimits]], a modified version of [[Chocolate Doom]], can display the current number of these elements in real time while playing a level.
  
 
=== 256 Segs ===
 
=== 256 Segs ===
Line 10: Line 11:
 
=== 128 Visplanes ===
 
=== 128 Visplanes ===
 
Unlike the seg limitation, which is merely cosmetic, the 128 [[visplane]] limit will cause the game to exit with an error. Reducing the number of unique sector heights, [[flat]]s and light levels visible from a particular scene will drop the visplane count.
 
Unlike the seg limitation, which is merely cosmetic, the 128 [[visplane]] limit will cause the game to exit with an error. Reducing the number of unique sector heights, [[flat]]s and light levels visible from a particular scene will drop the visplane count.
 +
 +
Hitting F6 in Chocorenderlimits can toggle between three different visplane displays, making it much easier to diagnose areas that are being split into an excessive number of visplanes.
  
 
=== 30 Plats ===
 
=== 30 Plats ===

Revision as of 14:50, 4 April 2012

Mapping for vanilla Doom requires awareness of various engine limitations and oddities that many source ports have eliminated. This article assumes a basic knowledge of Doom map creation and is intended to be a quick reference to commonly encountered vanilla Doom behaviors. A comprehensive list of bugs is available in the Engine bug article.

Limitations

Vanilla Doom has several static limits on various map elements. Chocorenderlimits, a modified version of Chocolate Doom, can display the current number of these elements in real time while playing a level.

256 Segs

If the seg count in a particular scene exceeds 256, additional segs will not be drawn, which causes a Hall of Mirrors effect. This limitation was even lower in version 1.0 and HOMs could be seen from the outside area of E1M8: Phobos Anomaly.

Because segs are the result of running a map through a node builder, there is no way to directly control the seg count from a map editor. Reducing the complexity of a map's architecture, so that fewer subsectors are required, is the best way to drop the seg count.

128 Visplanes

Unlike the seg limitation, which is merely cosmetic, the 128 visplane limit will cause the game to exit with an error. Reducing the number of unique sector heights, flats and light levels visible from a particular scene will drop the visplane count.

Hitting F6 in Chocorenderlimits can toggle between three different visplane displays, making it much easier to diagnose areas that are being split into an excessive number of visplanes.

30 Plats

Only 30 plats (sectors with moving floors; elevators) can be active at once or the game will exit with an error. Avoiding this one is as simple as making sure 30 moving floors cannot be active in separate sectors at the same time.

128 Sprites

Similar to segs, if more than 128 sprites are visible in a scene, they will not be drawn. The corresponding things still exist and will behave as normal, but will be invisible.

Rendering oddities

Tutti-frutti

The Tutti-frutti effect has two different causes: Attempting to make a texture shorter than 128 pixels tile vertically or attempting to use a texture with transparent sections as anything other than a two-sided middle texture. Pay attention to texture heights when applying them to walls and lower sector heights or change textures if necessary. Do not allow any transparent sections of textures to be seen on one-sided middle or upper or lower textures.

A common way of accidentally causing a tutti-frutti effect, even while being mindful of the causes, is by setting the lower unpegged flag on a lower texture which is using one of the 8 or 16 pixel tall step textures.

Medusa effect

If a multi-patch texture is used as a middle texture on a two sided linedef it will cause a Medusa effect. The texture will not render correctly and it can cause massive slow down in the game.

Gameplay oddities

Infinitely tall things

All blocking things in vanilla Doom are infinitely tall, meaning they will obstruct the player's movement regardless of their defined height and how far above or below the player they are. Some source ports change this behavior and perform an actual height check on these things, for example allowing a player to move under a Cacodemon floating above them, or move over a floor lamp below them. Most often this behavior change becomes apparent with the hanging gore decorations, some of which have both blocking and non-blocking variants. A port that performs a height check will allow the player to pass under the blocking decoration, but vanilla will not.

In an opposite scenario, decorations which do not block projectiles in vanilla Doom may do so in source ports. This is because most decorations have their height set at 16 and rely on the infinitely tall behavior to prevent the player from passing them. Projectiles, however, can pass through these decorations as long as they don't collide with the bottom 16 units.

Monsters attacking across tall ledges

In vanilla Doom, no height check is made on monster hitscan or melee attacks. This means that a monster which cannot be seen, and therefore unable to be targeted by the player, will be able to attack the player as long as the player is adjacent to the monster.

Monsters cannot cross drop offs

Some source ports allow monsters to descend from heights which vanilla Doom will not let them.

Monsters stuck on door tracks

A commonly observed phenomenon in vanilla Doom is a monster that is stuck on a door track. See the linked article for an in-depth analysis of why this occurs. The behavior is unavoidable in vanilla Doom.

Monsters stuck on lifts

Similar to the above, if a monster was crossing a line when a lift raised or lowered, the monster will be stuck in that position until the lift finishes ascending or descending.

Shooting through things

Commonly called the Blockmap bug, only the center of a thing is checked for hitscan collision, not the thing's radius. As a result of this, shots can appear to pass directly through a monster due to the monster's center being in a different block than the one the hitscan passed through.