DOOM Mapping: Making an Auto-Doc
(Full view for animated frame)
I've been reading the DOOM Wiki again...it's given me some ideas.
So classic DOOM is a very simple game whose engine doesn't allow for more complex events to occur by design, yet, is open-ended enough that advanced techniques can be achieved by manipulating engine bugs. Here, we've used a well known bug, known as a Voodoo Doll, to create the illusion of a single-use "Auto-Doc" machine that heals the player upon stepping inside.
Figure 1: The design of the machine itself is largely cosmetic, utilizing lights and sleek metallic textures to create the look of a futuristic, clinical machine. In particular, we want the machine to be fully lit when 'ready' for use, and then dim when depleted. We do this through two methods...
Figure 2: This shows the editor directly. notice inside of the machine, on the platform, we've got 2 diagonal lines. Those lines are triggers. The first line triggers several floors to 'lower to highest floor' mean, lower until they are parallel with the highest adjacent floor. This serves two purposes. One, it moves our Voodoo Doll to create the healing effect (more on that later) and two, it raises up a super thin column of identical blue-light textures like the ones you see in figure 1. The identical blue lights are adjacent to a soon-to-be darker sector. When they rise, they create the illusion that the other, glowing blue lights have shut off when in reality, they've just been covered by dimmer light textures. This effect works because the floor that rises to create the new lights is being told to lower to the highest adjacent floor. But the highest floor, the other, brighter lights, is already higher. Since the floor can't go any lower, it immediately shoots up to be parallel to the other lights, with no animation or sound.
The second trigger line simply changes the overall brightness of the platform to match the lowest adjacent brightness, in order to make it look like the machine is no longer in service. The reason we couldn't just do that with the glowing lights is simply due to a limitation in the engine preventing glowing lights from being properly dimmed, thus, we have to cover them up instead, as described above. There is a 3rd trigger line at the front of the black mat. That line simply opens the door to the machine. Making a door out of a texture which utilizes transparency, like that grid pattern, is actually the product of another engine bug, but we won't bother explaining that for now.
Figure 3: The Voodoo doll! What is it? Well, if you place multiple Player Starts in a map, only the most recent player start is used as the true starting point, and that is the one the player will actually control. But the previous ones still remain, and if the player were to happen upon them, they would in fact see another Doomguy just standing there, motionless. But here's the thing - it's still you! Anything that happens to that other doomguy happens to the one you're currently controlling. If that doomguy takes damage, so to you. And if he picks up an item, you too acquire the item. Remember that trigger that raises the floor instantly? Well, in addition to raising the dim lights, it also raises our voodoo doll, who is hidden in a separate area of the map, reachable only by cheat codes. When the trigger inside of the machine raises the floor to the next higher floor, the Voodoo doll is placed in reach of the health bonus, which are actually 30 bonuses occupying the exact same spot. When the Doll touches the items, the 30 bonuses are given to the player.
Figure 4: Voila - through the magic of low-FPS gifs, we see how the effect will play out on screen, creating the illusion that the player was healed by this fancy machine - a machine that is, by all accounts, all but strictly aesthetic.
And that's just one way in which you can manipulate the Doom Engine to create some pretty cool effects
I've been reading the DOOM Wiki again...it's given me some ideas.
So classic DOOM is a very simple game whose engine doesn't allow for more complex events to occur by design, yet, is open-ended enough that advanced techniques can be achieved by manipulating engine bugs. Here, we've used a well known bug, known as a Voodoo Doll, to create the illusion of a single-use "Auto-Doc" machine that heals the player upon stepping inside.
Figure 1: The design of the machine itself is largely cosmetic, utilizing lights and sleek metallic textures to create the look of a futuristic, clinical machine. In particular, we want the machine to be fully lit when 'ready' for use, and then dim when depleted. We do this through two methods...
Figure 2: This shows the editor directly. notice inside of the machine, on the platform, we've got 2 diagonal lines. Those lines are triggers. The first line triggers several floors to 'lower to highest floor' mean, lower until they are parallel with the highest adjacent floor. This serves two purposes. One, it moves our Voodoo Doll to create the healing effect (more on that later) and two, it raises up a super thin column of identical blue-light textures like the ones you see in figure 1. The identical blue lights are adjacent to a soon-to-be darker sector. When they rise, they create the illusion that the other, glowing blue lights have shut off when in reality, they've just been covered by dimmer light textures. This effect works because the floor that rises to create the new lights is being told to lower to the highest adjacent floor. But the highest floor, the other, brighter lights, is already higher. Since the floor can't go any lower, it immediately shoots up to be parallel to the other lights, with no animation or sound.
The second trigger line simply changes the overall brightness of the platform to match the lowest adjacent brightness, in order to make it look like the machine is no longer in service. The reason we couldn't just do that with the glowing lights is simply due to a limitation in the engine preventing glowing lights from being properly dimmed, thus, we have to cover them up instead, as described above. There is a 3rd trigger line at the front of the black mat. That line simply opens the door to the machine. Making a door out of a texture which utilizes transparency, like that grid pattern, is actually the product of another engine bug, but we won't bother explaining that for now.
Figure 3: The Voodoo doll! What is it? Well, if you place multiple Player Starts in a map, only the most recent player start is used as the true starting point, and that is the one the player will actually control. But the previous ones still remain, and if the player were to happen upon them, they would in fact see another Doomguy just standing there, motionless. But here's the thing - it's still you! Anything that happens to that other doomguy happens to the one you're currently controlling. If that doomguy takes damage, so to you. And if he picks up an item, you too acquire the item. Remember that trigger that raises the floor instantly? Well, in addition to raising the dim lights, it also raises our voodoo doll, who is hidden in a separate area of the map, reachable only by cheat codes. When the trigger inside of the machine raises the floor to the next higher floor, the Voodoo doll is placed in reach of the health bonus, which are actually 30 bonuses occupying the exact same spot. When the Doll touches the items, the 30 bonuses are given to the player.
Figure 4: Voila - through the magic of low-FPS gifs, we see how the effect will play out on screen, creating the illusion that the player was healed by this fancy machine - a machine that is, by all accounts, all but strictly aesthetic.
And that's just one way in which you can manipulate the Doom Engine to create some pretty cool effects
Category All / All
Species Unspecified / Any
Size 1210 x 684px
File Size 883.1 kB
That Voodoo Doll glitch explains more about some of the Doom WADs I've seen than I think I ever needed to know. Pretty cool even still though.
Makes me wonder, can you delay or slow the interaction in such a way that the "doll" picks up 1 health up at a time rapidly, to simulate a charging health station ala Half-Life? I know nothing of Doom Engine design, but if we're talking Aesthetics that's certainly what comes to mind.
Makes me wonder, can you delay or slow the interaction in such a way that the "doll" picks up 1 health up at a time rapidly, to simulate a charging health station ala Half-Life? I know nothing of Doom Engine design, but if we're talking Aesthetics that's certainly what comes to mind.
Well in theory, you could make something of a spiral staircase that surrounds the voodoo doll, and put a bunch of bonuses on the stairs, and have the floor raise quickly, this time without the 'instantaneous' bug, and that would create the illusion of rapidly 'charging up' the player's health as it collected the bonus on its way to the top. But, if you're wanting it to be a situation where it starts and stops depending on if he's in the machine, I'm not sure you could do that because there's no way to stop a rising/falling floor in the middle of its process. So the health would have to be fully allocated regardless of if the player was still in the machine or not, and it could still only be used once. Additionally, the sound of the floor rising could in theory give away the illusion, since unlike the instant-rise bug, it would actually make the humming sound of rising, and the 'kachunk' sound of reaching its destination. That could be mitigated simply by playing it far enough away on the map to not be heard but it's still not ideal.
It does, however, have me wondering if doing some version of that effect might be visually and audibly more interesting despite the one-time use, just for the sake of the rapid 'boops' you'd experience as your health fills up. Might do more to elicit a 'how did they do that?' response out of a given player.
It does, however, have me wondering if doing some version of that effect might be visually and audibly more interesting despite the one-time use, just for the sake of the rapid 'boops' you'd experience as your health fills up. Might do more to elicit a 'how did they do that?' response out of a given player.
I see what you mean about the health being fully allocated. Though I do think the "how did they do that" aspect of it is a very powerful tool indeed. Speaking as someone who feels that way about 99% of doom wads.
Though, and this is just hypothetical. Would it be possible to simply lock doomguy into the auto doc while the doll is being raised? Make one of the triggers bring the gate back down. Which is on some kind of timer that matches the dolls ascent? It definitely gets more complicated, but hey, that's the fun part of creating mods isn't it.
Though, and this is just hypothetical. Would it be possible to simply lock doomguy into the auto doc while the doll is being raised? Make one of the triggers bring the gate back down. Which is on some kind of timer that matches the dolls ascent? It definitely gets more complicated, but hey, that's the fun part of creating mods isn't it.
While there are doors that can be shut and re-opened on a timer, all of the action-types are hardcoded into the engine and none of the timed doors are on a short enough timer for that to really work out. Shortest one is like, 30 seconds, I believe. For anything less I'd have to alter the source code itself and believe me, I'm not that caliber of nerd, I just like to tinker around with the existing assets.
I did try to do a version of the trick where the doll is lowered via a Lift/elevator action over a spiral staircase of various bonuses but for some reason the engine recorded him as picking those up at the same time, despite being on different heights. Might just be a case of how the engine handles the Z-axis. Not sure if you know this but the DOOM Engine thinks that it's playing a 2-dimensional top-down game, like you see on the automap. The visual tricks that allow for the concept of height-differences are just that - tricks.
I did try to do a version of the trick where the doll is lowered via a Lift/elevator action over a spiral staircase of various bonuses but for some reason the engine recorded him as picking those up at the same time, despite being on different heights. Might just be a case of how the engine handles the Z-axis. Not sure if you know this but the DOOM Engine thinks that it's playing a 2-dimensional top-down game, like you see on the automap. The visual tricks that allow for the concept of height-differences are just that - tricks.
Clever. Easy enough to guess how it works if you know of the tricks, but great job coming up with it! The look of it is pretty fab as well.
A variation came to mind for me. A booth that can give you a shield to protect you from X next hits: same setup but with medkits. They don't heal you above 100%, but every time you get hit, one of them is consumed to heal you back to 100%. (Of course contingent that the player doesn't have >100% health when he uses the booth)
A variation came to mind for me. A booth that can give you a shield to protect you from X next hits: same setup but with medkits. They don't heal you above 100%, but every time you get hit, one of them is consumed to heal you back to 100%. (Of course contingent that the player doesn't have >100% health when he uses the booth)
That was part of the problem I had to begin with when I considered using medkits for the effect, the player might not need the health when they get it, thus not even realizing they've used the machine, which can't be used more than once. That's why I went with Health Bonuses on the standard machine because those will be picked up no matter what, even if your health is maxed at 200%. Even if wasted, you know the effect was delivered. The other thing is that the message itself, "picked up a health bonus" is more vague and could apply to a machine like this. I considered an idea similar to what you suggested but the 'picked up a medkit' dialogue seemed like it might kind of betray the effect a little more.
That said, I was a little bummed that the health cap meant the medkits would often not be picked up because I also wanted to make a "Super-Doc" somewhere in the level that would do the same thing but, award a Supercharge instead. I can still do that but the overcharging effect of the Supercharge would have felt like a more dramatic enhancement over medkits, rather than the bonuses, which do the same thing just at a lower amount. Could award a Megasphere instead but again, that refers too much to the specific item unlike "supercharge" which refers only to the effect (this is the kind of neurotic shit I get hung up with all the time). I could potentially set up both a Supercharge and Mega Armor with one of the voodoo dolls, assuming I can get it to where it lists the Super Charge second so that's the message you get (though most source ports list multiple messages instead of circumventing old ones...ugh.
Anyway, I digress. Point is, we are in fact considering alternate Auto-X machines. Also considered doing one with a Berserk pack, an armor-repair booth, or a "cell charger" station for the plasma rifle.
That said, I was a little bummed that the health cap meant the medkits would often not be picked up because I also wanted to make a "Super-Doc" somewhere in the level that would do the same thing but, award a Supercharge instead. I can still do that but the overcharging effect of the Supercharge would have felt like a more dramatic enhancement over medkits, rather than the bonuses, which do the same thing just at a lower amount. Could award a Megasphere instead but again, that refers too much to the specific item unlike "supercharge" which refers only to the effect (this is the kind of neurotic shit I get hung up with all the time). I could potentially set up both a Supercharge and Mega Armor with one of the voodoo dolls, assuming I can get it to where it lists the Super Charge second so that's the message you get (though most source ports list multiple messages instead of circumventing old ones...ugh.
Anyway, I digress. Point is, we are in fact considering alternate Auto-X machines. Also considered doing one with a Berserk pack, an armor-repair booth, or a "cell charger" station for the plasma rifle.
FA+

Comments