Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Linguica

Did you know you can make a voodoo conveyor belt in vanilla Doom

Recommended Posts

I still see a barrel potentially turning the player into a voodoo zombie. 

Share this post


Link to post

If only there was an ouchface like icon....

Share this post


Link to post

Really? No one else thinks this is interesting? Isn't this, like, the vanilla-compat holy grail, being able to do Boom-esque scripted events?

Share this post


Link to post

I will certainly keep this in mind for the future, although I'd imagine it won't work in every source port.

glares at the ZDoom family

Share this post


Link to post
4 hours ago, Xyzzy01 said:

I will certainly keep this in mind for the future, although I'd imagine it won't work in every source port.

glares at the ZDoom family

Then just put a warning or disclaimer "not compatible with GZDoom, sorry 🙁" in the text file. 

Share this post


Link to post
6 hours ago, Xyzzy01 said:

I will certainly keep this in mind for the future, although I'd imagine it won't work in every source port.

glares at the ZDoom family

 

 

I haven't checked, but to be blunt, if it doesn't work in ZDoom-derived ports and that just keeps a single mapper from using it as a "feature", I'd consider it a good thing. Maps that depend on engine glitches are an utter nightmare for engine developers that do not put their focus on perfect demo compatibility.

 

And trading the small crowd of Chocolate Doom users for the much larger crowd of users of all modern non-demo-compatible ports combined surely sounds like a bad trade when the same thing can be achieved far more reliably with Boom specials which have a much larger built-in audience.

 

Also, does this really need a sector height overflow? The "keeps moving " part looks suspiciously like any actor moving along the edge of a sector not losing any momentum.

 

Share this post


Link to post
Posted (edited)

@Graf Zahl Ideally there should be mapping and modding features which only activate in GZDoom (i.e. proper GZDoom stuff put in place to replace the vanilla hacks), without crashing vanilla Doom by their existence. That should keep all sides happy. 

Share this post


Link to post

In the vanilla source is it *just* the player object that can activate remote door, floor etc linedef types? Or is it that monster things are excluded?

 

i know monsters can activate walkover lift types but not walkover doors, floors etc.

Share this post


Link to post
1 hour ago, Graf Zahl said:

I haven't checked, but to be blunt, if it doesn't work in ZDoom-derived ports and that just keeps a single mapper from using it as a "feature", I'd consider it a good thing. Maps that depend on engine glitches are an utter nightmare for engine developers that do not put their focus on perfect demo compatibility.

 

 

If I understood correctly how this works, the voodoo doll keeps falling through an "infinite height/depth pit" and moves sideways thanks to momentum imparted by the barrel's explosion. The latter mechanism should be intrinsic to any Doom source port, really, no matter how divergent. The other is, yes, debatable, and relies on keeping original structures and (lacks of) checks.

 

As to it being used in actual vanilla maps...well...who can totally say that it hasn't been already, even if accidentally? Cyberdreams would have been a prime candidate for such tricks. Also, who really knows how the idea for conveyor belts and voodoo doll scripting originally came about...it might be nothing more than a refinement of this trick ;-)

Share this post


Link to post
Posted (edited)
28 minutes ago, traversd said:

In the vanilla source is it *just* the player object that can activate remote door, floor etc linedef types? Or is it that monster things are excluded?

 

i know monsters can activate walkover lift types but not walkover doors, floors etc.

 

Looks to be pretty limited.

 

//	Triggers that other things can activate
    if (!thing->player)
    {
	// Things that should NOT trigger specials...
	switch(thing->type)
	{
	  case MT_ROCKET:
	  case MT_PLASMA:
	  case MT_BFG:
	  case MT_TROOPSHOT:
	  case MT_HEADSHOT:
	  case MT_BRUISERSHOT:
	    return;
	    break;
	    
	  default: break;
	}
		
	ok = 0;
	switch(line->special)
	{
	  case 39:	// TELEPORT TRIGGER
	  case 97:	// TELEPORT RETRIGGER
	  case 125:	// TELEPORT MONSTERONLY TRIGGER
	  case 126:	// TELEPORT MONSTERONLY RETRIGGER
	  case 4:	// RAISE DOOR
	  case 10:	// PLAT DOWN-WAIT-UP-STAY TRIGGER
	  case 88:	// PLAT DOWN-WAIT-UP-STAY RETRIGGER
	    ok = 1;
	    break;
	}
	if (!ok)
	    return;
}

 

Share this post


Link to post
9 hours ago, Linguica said:

Really? No one else thinks this is interesting? Isn't this, like, the vanilla-compat holy grail, being able to do Boom-esque scripted events?

Can you predict the speed of the doll? It looks unwieldy if you want to script events. On the other hand it could be a godsend if you want a bit of randomness :-D

 

Also what @Dark Pulse said. Having this back in the 90's might have completely leveled the landscape heh.

Share this post


Link to post
Posted (edited)
22 minutes ago, Kira said:

Can you predict the speed of the doll?

 

Good point... I suppose you could stack enough barrels to max out the speed that a player object can acquire (42 map units/sec, or 30 in either direction) but I'm not sure if that limit applies to voodoo dolls as well. Plus, both the dummy and the player would need to survive the onslaught. Then again, if precise timing is not important but you just need for an event to occur, say, anytime between 5 and 10 seconds after the trigger has been activated, then it doesn't matter.

 

But then again, the kind of "scripting" that you can achieve in vanilla with this trick, couldn't you also achieve them with e.g. a crusher exploding a barrel and simply pushing the voodoo doll past a certain linedef? The crusher's timing would be far more predictable than the voodoo doll's traveling sideways through mikoportal. Just wondering....then again you could conceivably place multiple triggers down the mikoportal's path, so there's that, and also it might be easier to implement some type of resettability, if the voodoo doll teleports back to the beginning and you have another barrel or different means to propel it.

Share this post


Link to post
3 minutes ago, Maes said:

But then again, the kind of "scripting" that you can achieve in vanilla with this trick, couldn't you also achieve them with e.g. a crusher exploding a barrel and simply pushing the voodoo doll past a certain linedef? The crusher's timing would be far more predictable than the voodoo doll's traveling sideways through mikoportal. Just wondering....

I can see it having its uses if you want the doll crossing multiple linedefs over time for e.g. complex level transformations.

Share this post


Link to post
Posted (edited)

FWIW, there was a thread long ago where someone (entryway?) had posted a map where a floating icon of sin was propelled and steered by the player by shooting it. Unlike e.g. shooting a voodoo doll, the thing kept its momentum. The goal was to keep it from crossing out of a confined area and guide it to a goal. Same concept as a voodoo doll, if you think about it, minus the mikoportal and barrel.

 

I'm not aware if that map was vanilla compatible and/or whether it used DEHACKED to achieve that effect, though.

Share this post


Link to post
21 minutes ago, Maes said:

FWIW, there was a thread long ago where someone (entryway?) had posted a map where a floating icon of sin was propelled and steered by the player by shooting it. Unlike e.g. shooting a voodoo doll, the thing kept its momentum. The goal was to keep it from crossing out of a confined area and guide it to a goal. Same concept as a voodoo doll, if you think about it, minus the mikoportal and barrel.

 

I'm not aware if that map was vanilla compatible and/or whether it used DEHACKED to achieve that effect, though.

Ah, I remember that!

https://www.doomworld.com/idgames/levels/doom2/s-u/teledest
This was by TimeOfDeath, and uses a DEH patch.

Share this post


Link to post

I don't understand what the problem is wrt port compatibility. If Graf doesn't wanna make this work in his port, then the worst case is that people will say the map "breaks", in which case you simply redirect them here and recommend using a different port.

 

With regards to timing certain events, you can always time the moment when a barrel is getting crushed, rather than relying on the momentum gained by the explosion itself. And if you want an alternative to using ceiling heights as timers while still making a larger number of events happen in a set and predictable sequence, you can always "chain" however many barrels you need to get the desired delay for individual "conveyors", assuming you want an entire series of events to happen in sequence based on a single trigger in a map. Let's also not forget that an actor can activate more than one linedef action per tic, so you can easily use one doll to make 4 different things happen at once, which in and of itself is more than enough of a reason to think about a situation where it can be put to use.

If there's anything about this setup that limits its use in some way, then it's that it's slightly "dirty", and by that I don't mean what Graf is concerned about but rather the fact that players will notice that they set the machine in motion because it relies on inflicting damage, and that's what makes it difficult to "hide".

 

As as side note, if you don't wanna use the miko-portal method, keep in mind that you can still knock a doll from a very high point into a very deep pit. So, while the doll is in midair, enjoying its adrenaline rush, it can still trigger linedef actions, because for example in Vanilla these don't care about how high above ground the actor is, and after all the mikoportal basically simulates a free-fall without friction. With that said, I suppose mappers who wanna make sure their stuff runs in Graf's engine as well, there's an alternative that may not be as elegant and might not allow for very complex scripts, but it's an option worth keeping in the back of your head regardless.

Share this post


Link to post

It doesn't have a cool or a wow factor. It doesn't look like he falls through the ceiling and he's barely moving, but kudos you did it. There's just not much wow factor to a casual viewer.

Share this post


Link to post

The "not looking like he's falling part" looks more like an artifact of frame rate/actual dropping speed stabilizing, much like seeing a fan starting under a strobe light. YMMV with different ports and/or machines.

Share this post


Link to post
Posted (edited)
3 hours ago, Maes said:

But then again, the kind of "scripting" that you can achieve in vanilla with this trick, couldn't you also achieve them with e.g. a crusher exploding a barrel and simply pushing the voodoo doll past a certain linedef? The crusher's timing would be far more predictable than the voodoo doll's traveling sideways through mikoportal. Just wondering....then again you could conceivably place multiple triggers down the mikoportal's path, so there's that, and also it might be easier to implement some type of resettability, if the voodoo doll teleports back to the beginning and you have another barrel or different means to propel it.

 

I think to use this practically you'd want to control the time during the level when the damage was occurring to the voodoo doll, so you could mitigate it, or try to explain it in the narrative (perhaps the player is in a map area that is exploding or something so there's some rationale for them taking damage). So you'd want to set this up once, rather than nearer the time that you want events triggered.

 

What isn't clear to me from the video is whether the doll's momentum is constant. If so, you could adjust for its velocity with linedef spacing, etc. If not (I guess it can't be slowing down, but it might be accelerating), things could be more chaotic.

 

Voodoo dolls can pick up items, so you could stack medikits/stimpaks under it (they don't pickup until they are moving). (I just wrote a quick wadc script to confirm this, surprising myself that I hadn't seen it in a live map ever. Has anyone used this? It's kinda weird, you can give the player weapons that way for example)

Share this post


Link to post
Posted (edited)
9 minutes ago, Jon said:

Voodoo dolls can pick up items, so you could stack medikits/stimpaks under it (they don't pickup until they are moving). (I just wrote a quick wadc script to confirm this, surprising myself that I hadn't seen it in a live map ever. Has anyone used this? It's kinda weird, you can give the player weapons that way for example)

 

I'm pretty sure that's been used as a trick even in Final Doom (Plutonia MAP28 and/or TNT MAP15 I think) so it's far from new.

Share this post


Link to post

Wow, one guy's getting cold feet because he doesn't like it when people use engine quirks in creative ways, the next guy doesn't read the op and has no idea what a miko-portal is, and then there's another guy who says it's far from new, except it's never been done in vanilla on a conveyor that allows for voodoo-scripting.... this is great...

Share this post


Link to post

@Linguica This is holy grail to me. Doom was made in 1993!, but still have something new to show and can kick to modern source port's ass: "Big deal... i can do that too".

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×