Scrollers are linedef types that scroll textures or flats in a certain direction. Also, players standing on a scrolling sector or climbing on scrolling walls will be carried with the scroller. The most notable use for scrollers are conveyor belts, which are a great way of changing up the gameplay flow a bit. Apart from that, there are several other uses and implementations of this effect, depending on the used linedef types. This tutorial explains how to use them.
There are three different techniques for scrolling walls, each with a slightly different setup. However, all of them only scroll the front textures of the target linedef. The back textures cannot be scrolled. All linedef scrollers carry players that are climbing on the walls with them.
Linedef type 500 and linedef type 501 simply scroll the walls to left and right, respectively, at a default speed. They are directly applied to the linedefs whose walls should be scrolled. If the speed needs to be specified, linedef type 502 is used. For this, a control sector is created, and one of its linedefs is given the same tag as the target linedef that should be scrolled. The length and direction of the control linedef determine scrolling speed and direction of the target linedef, respectively.
For walls that should scroll vertically or diagonally, linedef type 505 or linedef type 506 is used. Linedef type 505 specifies the scrolling speed through the front side offsets. The X offset determines horizontal speed and the Y offset determines vertical speed. Positive values make the textures scroll right/up, while negative values make them scroll left/down. If the front side offsets are already used for texture alignment, linedef type 506 can be used, which uses the back side offsets instead.
Plane scrollers scroll flats instead of textures. Depending on the linedef type used, they scroll either the ceiling or the floor. Additionally, one can specify if the flat is scrolled, the player is carried or both. In most cases, linedef type 530 is used for floor scrollers and linedef type 533 for ceiling scrollers, which are used in reverse gravity situations or to scroll the top of an FOF. These both scroll the flat and carry the player, making them ideal for conveyor belts. For purely visual effects, like scrolling water surfaces for example, linedef type 510 and linedef type 513 are used. If you want only the carrying effects without scrolling, use linedef type 520 and linedef type 523.
If the player should be carried, the target sector that will be scrolled must have the Conveyor Belt sector special – sector type 1024. This is used for making the game handle the scrolling correctly. If not used, players will use their walking animation on the belt even if standing still. By itself, however, the sector type does nothing.
The next step is to set up the control sector. Everything is controlled by the linedef with the linedef special that should be tagged to the target sector. Speed is specified by the length of the linedef. The direction is determined by the direction the linedef is facing. This can be a bit tricky to figure out: Every linedef has a small notch in the middle of it. This notch is always facing to the right of the linedef. That means that if you have a notch facing east, your linedef is facing north.
If you have multiple scrolling sectors after another that are supposed to carry the player, you should check the Not Climbable on the control linedefs. Then any neighboring scrollers are grouped together as if they were one. This prevents the player from being pushed slightly faster over sector borders.
Conveyor belt visuals
Typical conveyor belts such as the ones seen in Techno Hill Zone use the flats
THZFLR16 is designed for conveyor belts going north/south, and
THZFLR17 is designed for conveyor belts going west/east. Another option is
CONVEY1 (north/south) or
When making conveyor belts that have a higher floor height than the sector(s) around them, it is a good idea to use
THZCONV3 as linedef textures. Those are the textures used in Techno Hill Zone Act 2 and most THZ-themed custom maps that look like the ending and middle parts of a real conveyor belt. For an example of how they look, and how to set them up, try the example WAD that can be found at the bottom of the article.
Accelerative scrollers work differently from regular scrollers. Instead of continually scrolling at a fixed speed, they can accelerate and decelerate or even stop completely and reverse direction. These scrollers move according to changes made to the ceiling height of the control sector. The distance from the original height determines the speed of the scroller. With the use of linedef type 407, the ceiling can be raised gradually, which will speed up the scroller gradually. The higher the ceiling is in contrast to its original height, the faster the scroller will move. By using linedef type 401 to instantly change the ceiling height, you can also modify the speed instantly instead of accelerating gradually. If you lower the ceiling below its initial height, the scroller will change direction.
Displacement scrollers are controlled with distance rather than speed. Like accelerative scrollers, they move according to changes made to the ceiling height of the control sector, but the scroller only moves as long as the ceiling is being moved. For example, when the ceiling height is changed by one fracunit, the scroller will move by one fracunit. Thus, when used with linedef type 407, the speed of the ceiling movement determines the scroller speed, and once the ceiling stops moving, the scroller stops too. With linedef type 401, you can move the scroller instantly by a fixed value, but this is not recommended, since it has little practical usage.
List of scrollers
- Linedef type 500: Scroll Front Wall Left
- Linedef type 501: Scroll Front Wall Right
- Linedef type 502: Scroll Tagged Wall
- Linedef type 503: Scroll Tagged Wall (Accelerative)
- Linedef type 504: Scroll Tagged Wall (Displacement)
- Linedef type 505: Scroll Front Wall by Front Side Offsets
- Linedef type 506: Scroll Front Wall by Back Side Offsets
- Linedef type 507: Scroll Back Wall by Front Side Offsets
- Linedef type 508: Scroll Back Wall by Back Side Offsets
- Linedef type 510: Scroll Floor Texture
- Linedef type 511: Scroll Floor Texture (Accelerative)
- Linedef type 512: Scroll Floor Texture (Displacement)
- Linedef type 513: Scroll Ceiling Texture
- Linedef type 514: Scroll Ceiling Texture (Accelerative)
- Linedef type 515: Scroll Ceiling Texture (Displacement)
- Linedef type 520: Carry Objects on Floor
- Linedef type 521: Carry Objects on Floor (Accelerative)
- Linedef type 522: Carry Objects on Floor (Displacement)
- Linedef type 523: Carry Objects on Ceiling
- Linedef type 524: Carry Objects on Ceiling (Accelerative)
- Linedef type 525: Carry Objects on Ceiling (Displacement)
- Linedef type 530: Scroll Floor Texture and Carry Objects
- Linedef type 531: Scroll Floor Texture and Carry Objects (Accelerative)
- Linedef type 532: Scroll Floor Texture and Carry Objects (Displacement)
- Linedef type 533: Scroll Ceiling Texture and Carry Objects
- Linedef type 534: Scroll Ceiling Texture and Carry Objects (Accelerative)
- Linedef type 535: Scroll Ceiling Texture and Carry Objects (Displacement)
- Example file: ex_ld502_scrollwall.wad (MAP01)
- This shows a horizontal wall scroller with adjustable speed.
|How to use|
- Example file: ex_ld506_scrolltexturebybacksideoffsets.wad (MAP01)
- This shows a diagonal wall scroller with additional starting offsets.
|How to use|
- Example file: ex_ld530_scrollfloortextureandcarryobjects.wad (MAP01)
- This shows four regular conveyor belts, each going into one horizontal direction.
|How to use|
- Example file: ex ld531 scrollfloortextureandcarryobjects accelerative.wad (MAP01)
- This shows an accelerative conveyor belt that can be moved into both directions and sped up with the use of arrow buttons.
|How to use|
- Example file: ex ld532 scrollfloortextureandcarryobjects displacement.wad (MAP01)
- This shows a displacement conveyor belt that can be moved into both directions with the use of arrow buttons.
|How to use|