Thread of Vanilla Mapping Tricks

Recommended Posts

As you may or may not know, Vanilla Doom has some tricks and glitches that can be used to add some pretty cool effects to maps. I thought that I'd make a thread that explained a few, and I ask people to add more to the list. Keep in mind that many of these tricks won't work in OpenGL, and will be reported as errors by wad editors (because after all, they do use glitches).

I know that there's ways to make windows that block bullets, sliding and swinging doors, invisible platforms, 3D lifts, reverse stair building, solid looking 3D bridges that can be walked over and under (using dummy sectors and quick raising lifts). There's also the sky paradox which can be used to make horizons that appear to extend infinitely and some fake room above room (or window above window, I should say). I don't understand how to do any of those tricks so I won't try to explain them.

So please, feel free to add to this list. The things you add don't have to be glitches that do amazing things like room over room effects, they can just be fun and creative things to do in vanilla mapping in general. It'd also be cool if someone made an example map to demonstrate all of these.

---
Edit:
Quite a few example wads can be found here. One there that hasn't been mentioned yet is the ceiling fan.
--

Instant Death Trap:
This is the simplest one. Teleport the player into a voodoo doll (a second player 1 start). Instant telefrag.

Instant Raising Lift:
Set a linedef to perform action number 36. Set the target sector to be below the starting point. It will cause the lift to raise instantly.

Harmless Pain Elementals:
In vanilla Doom, there's a limit to 21 lost souls (for the Pain Elemental). If you trap that many in a room, it will make them harmless. There's a number of things that you could accomplish by doing this.

One is to have a bunch of them floating around harmlessly, and then have a crusher kill the lost souls so that they begin attacking. Pretty sure that this was done in some old megawad.

Monsters hidden in floor:

Just sink a pit into the ground and leave its sides untextured. Make sure that you raise the floor to release the monster, because if the player falls into the pit it will look terrible, and the player will be trapped.

Force Field:

Create an animated middle texture that looks like a force field. Place it in a map, and put a small damaging sector around it. Using dummy sectors you can make the force field "deactivate" but again I don't know how to do this so someone else will have to explain it.

Deep Water:

NOTICE: see Spleen's post later down the page for a better way to do this. My method will work, but only on very small areas, in certain situations and from certain angles.

1. Create a sector sunken into the floor, and apply textures to the sides.

2. Add a small sector inside this one as close to the sides of the larger sector as possible.

3. Sink the inside texture to the depth that you want the water to be at (the "water" has to be shallow, the player cannot completely submerge itself or he will be able to see HOM). Give this sector some sort of liquid flat.

4. Make sure that the inside of the pit is untextured, and it should work. This works the same way as the pit above.

There's a way to do this to where you can travel under the water without experiencing HOM, but I don't know how to do that.

Self Destruct Button:

Take a look at Doom 2 map 30. When the Icon of Sin is killed, the textures that make up the boss face are covered in explosions. Replace these textures with something else, and build a room or something that's going to explode using them. Replace the Icon of Sin's sounds with something else that gives the effect that you want. Now, create a switch that activates a crusher to crush the Icon of Sin, or replace the Icon of Sin's sprites with something that looks like a reactor so that you can shoot at it, place it behind a wall, or whatever. Be creative. When the Icon of Sin dies, you'll see explosions appear everyone, its a great effect when used properly.

Large Flats/Textures:
Large flats and texture can be made by combining smaller ones, take another look at map 30 again and you'll see a good example.

"Transferred" Lighting:
Create sector and make it brighter that the surrounding ones. Move the floor down as little as possible, and leave the sides untextured. The lighting will now appear on the ceiling but not on the floor. You can do the reverse if you wan the lights to appear on the floor instead. Works best in small areas. If you want to do it for a larger area, you can use self referencing sectors (see Spleen's post further down the page).

Some General Tips:

You obviously can't have to much sector based detail in vanilla, so new textures and middle textures can go a long way. Stacking middle textures can create the illusion of a solid structure.

Take a look at Suspended in Dusk and other, similar vanilla wads. A lot of them use the tricks described here.

The main problem with this, since this is a vanilla mapping tricks thread, is that building fake slopes with tiny stairs eats up a ridiculous number of visplanes and drawsegs, even for a relatively small slope. The result is that it becomes extremely difficult to avoid VPOs and HOMs in the surrounding areas of the map, even if it's kept relatively bare.

Share this post

Link to post

Yes, I probably should have mentioned that. I wanted to make the slope in the demo map a lot steeper with more sectors, to make the effect more noticeable, but I had to simplify it to make it vanilla compatible. Which brings me to a question and another mapping tip.

First the question. I used to have a special version of Chocolate Doom, "Choco Render Limits" or something similar, that you use in the development of KDiKDiZD. Do you still have the download link?

And now the mapping tip.

Vanilla Compatibility:

This is more of a guideline than a trick. If you claim that your map is vanilla compatible, you should always test it with either the original exe or Chocolate Doom.

Share this post

Link to post

Visplanes
The most famous limit of them all, there are 128, and each one represents a unique combination of floor or ceiling height, light level, and texture present in a rendered scene. In the worst case each subsector will generate at least two visplanes if its floor and ceiling are in view, but these may be merged -or split- as the game engine draws the scene. The only ways to get rid of this are to make your level less detailed in areas visible from the spot it happens, add sight-obstructing walls, or move areas up or down vertically so that the floors or ceilings aren't visible.

Vissprites
DOOM won't draw more than 128 sprites at one time. If you have too many, the extra ones will flicker in and out of view, depending on the sorting order.

Drawsegs
DOOM won't render more than 256 segs (128 in earlier versions) in a single scene. The rest will become HOM. DOOM draws from front to back, so the furthest lines away from the player will typically disappear first.

Blockmap
The blockmap for a vanilla map cannot exceed 65536 bytes in size. Even a relatively simple map with only 4 linedefs can exceed the blockmap limit if it is made to cover enough area, because the size of the blockmap is a function of both the number of linedefs in the map, AND the amount of area it covers in 128x128 blocks. Maps that exceed the blockmap limit can crash vanilla DOOM.

Segs/Sides/Lines/Subsectors/Nodes
The number of none of these things can exceed 32768 due to hard data type size limits in the map format. Practically speaking, the segs limit is always the first one hit, and thus imposes an even more stringent limit on the other entities, of which the number of segs is partially a function.

Plats & Ceilings
Only 30 platform actions can be active at one time. Exceeding this limit will cause a bomb-out with error message. There can also only be 30 active ceiling effects at a time, and if this limit is exceeded, the map can behave strangely.

Buttons
If more than 16 switches are activated at once, the game will bomb out.

Spechits
Crossing more than 8 special linedefs in a single tic will cause an internal overflow, and undefined behavior will result.

Intercepts
If a bullet tracer crosses too many things and lines (more than 128), an internal overflow will happen, causing undefined behavior. This sometimes results in the bug known as "All-Ghosts".

Savegame
Savegames are limited in size to around 180 KB. If the saved memory footprint of your map is larger than this, including because of dynamically spawned objects such as missiles or boss brain monsters, the game will bomb out.

Openings/Solidsegs
The number of alternating regions of solid and transparent linedefs have some esoteric limits. If this exceeded, for instance with too many fenceposts, the game will crash.

Share this post

Link to post

Instantaneous Teleport Trap:
Set up a standard teleport trap (I'll assume you know how to do the "monster closet outside of the map with a teleporter" thing) and make the following modifications to it:
- Place only a single monster in the closet and make the sector as small as possible (such that the monster cannot move but isn't stuck inside a wall).
- Create an adjacent sector and raise its floor by 25 units (the minimum height required to block an enemy/player from stepping to it).
- Place the teleport line inside the first sector (not on the border between the two sectors) so that it crosses perfectly through the monster's center of mass.
- Move the teleport line 1 unit toward the raised sector.

To activate the trap, simply set a trigger that lowers the raised sector. Because of the placement of the teleport line is only a single unit away and the lowering sector only has to lower 1 unit to allow the monster to step across the line, the monster will appear to teleport instantly (assuming the monster has heard the player, of course). Works great for perfectly-timed ambushes.

Share this post

Link to post

MAXVISSPRITES is 128 in the released source code. IIRC some earlier versions of DOOM had a lower limit though, which might be what you're thinking of. IIRC it was versions prior to and possibly including 1.4 - many of the internal limits seem to have been expanded for the purpose of DOOM II development.

Essel: good catch ;) Having more than 64 scrolling lines will either bomb out or crash - I don't remember which.

Also here's a limit I forgot: Any floor moving action which targets the "next highest floor" must not apply to a sector with more than 20 adjoining sectors. If it does, undefined behavior will result in some versions of the EXE. Some - including the released source - stop considering any sectors after the 20th.

Share this post

Link to post

Do tricks involving DEHACKED count? You can use DEHACKED to make Cyberdemons a "must-kill" monster on Doom 2 maps by giving them the Commander Keen death codepointer, and making a "door" sector with the 666 tag and no linedef actions.

Also, I always thought deep water was done using self-referencing sectors.

Share this post

Link to post

Raise free platforms to any height. Doom uses "raise to next level sector" and such. But a single platform that has nothing to raise to will go to the ceiling.
Make 2 sectors off map. One sector has same floor height as unraised platform and the other the same height as what you want it to raise to. Then link/join lower sector to lower sector off map.

Share this post

Link to post

Do tricks involving DEHACKED count? You can use DEHACKED to make Cyberdemons a "must-kill" monster on Doom 2 maps by giving them the Commander Keen death codepointer, and making a "door" sector with the 666 tag and no linedef actions.

I don't see why not, as long as they work in vanilla (can't use Boom or MBF stuff).

Also, I always thought deep water was done using self-referencing sectors.

It probably works better using self-referencing sectors, but I'm to dense to explain how to do it that way (or figure out how to do it myself). So how do these dummy sectors and self referencing sectors work?

I think I read somewhere that it's possible to have mirrors in vanilla, anyone know something about that?

Share this post

Link to post

I think I read somewhere that it's possible to have mirrors in vanilla, anyone know something about that?

Make one sector inside another. Take the outer sidedefs of the lines surrounding the inside sector, and manually set their sector to be the inside sector instead of the outside sector.

Making the inside sector's floor lower than the outside sector gives you deep water, and making the inside sector's floor higher than the outside sector gives you invisible raised platforms. You can put some midtextures around it, making it look sort of like a bridge.

Share this post

Link to post

Raise free platforms to any height. Doom uses "raise to next level sector" and such. But a single platform that has nothing to raise to will go to the ceiling.
Make 2 sectors off map. One sector has same floor height as unraised platform and the other the same height as what you want it to raise to. Then link/join lower sector to lower sector off map.

Linking sectors to other sectors outside the map has all kinds of uses. I used that trick in my NDCP map to sync a whole room full of strobes so they would all lower to the same light level(and pissed a lot of people off in the process).

Share this post

Link to post

Raise free platforms to any height. Doom uses "raise to next level sector" and such. But a single platform that has nothing to raise to will go to the ceiling.
Make 2 sectors off map. One sector has same floor height as unraised platform and the other the same height as what you want it to raise to. Then link/join lower sector to lower sector off map.

Share this post

Link to post

The equivalent thread over at newdoom shouldnt be better than this one.

Slime Trails!
Slime trails can use various tricks to minimize or completely remove. Some lifts depending on wall length, height and area at bottom can make trails. Just making the lift have a one or two unit gap between lift and wall can get rid of trails. Also make the edge silent so monsters at bottom do not wake up.

Corners without lifts have a few methods. Can make an extra sector surrounding corner, use mid textures to hide the new sector, and make impassible. This will cause the slime trail to show up only in the hidden unreachable sector. Can also raise the hidden sector higher than player's view height if needed.

Share this post

Link to post

Here is an interisting one taken from MAP07 Rock the Building Plutonia 2, its like the instant teleport trap:

Crazy Teleporting Monster:
Works well with fast monsters. Make 2 sectors, put a monster, like arch vile in 1 of sectors, lower your grid to 4 to be accurate, now move the lines very close to him untill they touch him not in him, then take him to the other sector and move the lines just as before.

Now tag a sector 1 and the other 2, put the teleport thing in the middle of the sectors, its important the teleport thing to be in the middle. Now put the WR Teleport actions on the lines of sector tagged 1 and their target to be on the sector tagged 2, do vice versa on the other lines. Make sure the arch vile/monster is in the correct middle of any sectors.