Difference between revisions of "Portal"

From DoomWiki.org

[checked revision][checked revision]
(Portals were at one point considered as a technology for the Doom engine.)
m (Flows better up here)
Line 13: Line 13:
 
==Portal engine==
 
==Portal engine==
 
The phrase '''portal engine''' is or '''portal renderer''' is sometimes used when discussing approaches to software rendering. This represents an alternative to the {{wp|Binary space partitioning|BSP}}-based approach in the [[Doom rendering engine#Node building|Doom rendering engine]]. In a portal engine, every two-sided line is effectively a portal between the two sectors it connects, and the renderer will recursively process the content of each sector in view, this approach has the benefit that it requires very little work to support "non-Euclidian" architecture as the renderer does not need for the sectors to actually touch. The {{wp|Build engine}}, used notably in ''[[Duke Nukem 3D]]'', is an example of a portal renderer. Other examples include the {{wp|Jedi (game engine)|Jedi engine}} used in ''{{wp|Star Wars: Dark Forces}}'', and the engine developed for ''{{wp|Marathon (video game)|Marathon}}''.
 
The phrase '''portal engine''' is or '''portal renderer''' is sometimes used when discussing approaches to software rendering. This represents an alternative to the {{wp|Binary space partitioning|BSP}}-based approach in the [[Doom rendering engine#Node building|Doom rendering engine]]. In a portal engine, every two-sided line is effectively a portal between the two sectors it connects, and the renderer will recursively process the content of each sector in view, this approach has the benefit that it requires very little work to support "non-Euclidian" architecture as the renderer does not need for the sectors to actually touch. The {{wp|Build engine}}, used notably in ''[[Duke Nukem 3D]]'', is an example of a portal renderer. Other examples include the {{wp|Jedi (game engine)|Jedi engine}} used in ''{{wp|Star Wars: Dark Forces}}'', and the engine developed for ''{{wp|Marathon (video game)|Marathon}}''.
 +
 +
===Original intent for Doom===
 +
According to [[John Romero]], [[John Carmack]] originally intended to include portal rendering in the Doom engine:
 +
{{extquote|Carmack talked early on, for Doom, about having a teleporter that you could look through and see another area. They would have been portals, or sectors, that let you look into another part of the level, and [the engine] would have rendered beginning at that point and onward.|John Romero|{{cite web text|author=Craddock, David|title=Rocket Jump: Quake and the Golden Age of First-Person Shooters. Chapter 14: Arenas|url=https://www.shacknews.com/article/101156/rocket-jump-quake-and-the-golden-age-of-first-person-shooters?page{{=}}15|publication=Shacknews|publishdate=4 December 2017|accessdate=12 December 2019}}}}
  
 
==BSP hack portals==
 
==BSP hack portals==
Line 22: Line 26:
 
* [[ZDoom]] and derivatives — see {{Zdoomwiki|Skybox|skybox|linkonly=1}}, {{Zdoomwiki|Stacked_sectors|stacked sectors|linkonly=1}} and {{Zdoomwiki|Line_SetPortal|line portals}}.
 
* [[ZDoom]] and derivatives — see {{Zdoomwiki|Skybox|skybox|linkonly=1}}, {{Zdoomwiki|Stacked_sectors|stacked sectors|linkonly=1}} and {{Zdoomwiki|Line_SetPortal|line portals}}.
 
* [[Vavoom]] — see {{Zdoomwiki|Skybox|skybox|linkonly=1}} and {{Zdoomwiki|Stacked_sectors|stacked sectors}}
 
* [[Vavoom]] — see {{Zdoomwiki|Skybox|skybox|linkonly=1}} and {{Zdoomwiki|Stacked_sectors|stacked sectors}}
 
==Original intent for Doom==
 
According to [[John Romero]], [[John Carmack]] originally intended to include portal rendering in the Doom engine:
 
{{extquote|Carmack talked early on, for Doom, about having a teleporter that you could look through and see another area. They would have been portals, or sectors, that let you look into another part of the level, and [the engine] would have rendered beginning at that point and onward.|John Romero|{{cite web text|author=Craddock, David|title=Rocket Jump: Quake and the Golden Age of First-Person Shooters. Chapter 14: Arenas|url=https://www.shacknews.com/article/101156/rocket-jump-quake-and-the-golden-age-of-first-person-shooters?page{{=}}15|publication=Shacknews|publishdate=4 December 2017|accessdate=12 December 2019}}}}
 
  
 
==References==
 
==References==

Revision as of 09:41, 12 December 2019

Portals allow a map to have a geometry not normally possible in a "2.5D" engine such as Doom. A few ports have implemented portals. A surface, such as a wall, a floor, or a ceiling, becomes a "window" allowing to see another part of the level. The difference between a portal and a camera texture is that the angle and pitch of the viewpoint always match that of the player looking through the portal. In a way, the sky in Doom can be thought of as a type of floor/ceiling portal, since the ceiling or floor does not display its flat in the normal manner, but instead shows a projected wall texture from a fixed viewpoint.

There are several types of portals:

Sight-only portal
When looking at a portal surface, instead of seeing the surface, the player sees another part of the map. However, the portal remains impossible to pass through; and no-clipping through it shows that there is actually nothing.
Pass-through portal
Passing through such a portal is possible and allows to seamlessly get to the associated area. Also known as a linked portal.
Wall portal
The portal's surface is on a wall.
Floor or ceiling portal
The portal's surface is on a floor or ceiling. Often used for skyboxes.
Fixed-point portal
The view from the portal is always from the same point, usually chosen by a "camera" object in the reference sector. Skyboxes usually are of this type.
Moving-point portal
The portal's camera moves along with the player. This allows to create "room-over-room" effect, however the mapper needs to make sure that the camera will always be at a valid position for any point where the portal surface can be seen; otherwise a hall of mirrors effect will appear as if the player had noclipped into the void.

For more information on what types of portals are supported, how they are implemented, and the limitations they have; refer to the documentation of the source port used.

Portal engine

The phrase portal engine is or portal renderer is sometimes used when discussing approaches to software rendering. This represents an alternative to the BSP-based approach in the Doom rendering engine. In a portal engine, every two-sided line is effectively a portal between the two sectors it connects, and the renderer will recursively process the content of each sector in view, this approach has the benefit that it requires very little work to support "non-Euclidian" architecture as the renderer does not need for the sectors to actually touch. The Build engine, used notably in Duke Nukem 3D, is an example of a portal renderer. Other examples include the Jedi engine used in Star Wars: Dark Forces, and the engine developed for Marathon.

Original intent for Doom

According to John Romero, John Carmack originally intended to include portal rendering in the Doom engine:

"Carmack talked early on, for Doom, about having a teleporter that you could look through and see another area. They would have been portals, or sectors, that let you look into another part of the level, and [the engine] would have rendered beginning at that point and onward."
―John Romero [1]

BSP hack portals

By hacking the BSP structure of a level, it is possible to create visual wall portals. This effect, called a linguortal after its pioneer Andrew Stine (Linguica), can work with vanilla Doom though it may be broken by source ports depending on changes brought to the renderer. However, since displaying the walls of the projected area requires hacking the segs to change their position in the map to where they will be shown instead of where they actually are, the effect should only be used for viewing areas that cannot be visited.

Source ports with portals

References

  1. Craddock, David (4 December 2017). "Rocket Jump: Quake and the Golden Age of First-Person Shooters. Chapter 14: Arenas." Shacknews. Retrieved 12 December 2019.