Jump to content

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


Recommended Posts

I quickly messed around with it a bit, and here's an iteration that works with taking only one point worth of damage, so it should be "immune" to difficulty settings.
miko_02.zip

Important edit here: Strike the part about difficulty settings, I actually just took 0 damage lol :/

 

I tested this only in PrBoom+, so I can't say much about Eternity for example, but the idea was to put the doll on a diagonal linedef, so it doesn't need to get nudged as hard.

Edit: the speed of the doll in this case seems to be pretty close to half a map unit per second. I "tested" this by putting health bonuses at 32 mu distance apart and looking at PrBoom's ingame clock when they were picked up. So it's by no means "hyper precise", but maybe good enough to build something around.

 

Another edit: I made another version that uses the same principle as above, but it has even less ground beneath the doll (sharper angle). As a consequence the doll travels along the "mikoveyor" significantly faster than in version_02:

miko_03.zip

 

I guess it stands to reason that if anybody wanted to use this trick more frequently, they would do well to create a prefab in Doombuilder, so they have a "constant" they can work with over time. Personally I'd probably use a "fast" prefab, because it's more flexible in the long run and it's easy to just make the mikoveyor longer if needed. (oh and I also put in a blue armour because I wanted to see if the armour would affect speed, but doesn't seem like it does that)

Edited by Nine Inch Heels

Share this post


Link to post
52 minutes ago, Nine Inch Heels said:

I guess it stands to reason that if anybody wanted to use this trick more frequently, they would do well to create a prefab in Doombuilder,

 

That would be the idea, if we can develop a "idiomatic" vanilla conveyor belt with known properties that people can paste into their maps. For instance if you wanted an "arena battle" you could paste in a voodoo script, lengthen it to last 60 seconds or whatever, and then add line specials in that duration to open new doors or raise/lower sectors at certain times.

Share this post


Link to post

theoretically, if this didn't work in modern ports could one simply make two copies of the closet: this vanilla version + a boom scrolling version (that could disable the vanilla one in addition to its other tasks)? That way you'd have voodoo-scripting functionality that works everywhere (assuming vanilla exes safely ignore boom actions).

Share this post


Link to post

The conveyor belt made in vanilla is very interesting. However pushing a voodoo doll with an explosion so it triggers an action was done before. I always considered it to be a sort of trademark of the russian mappers, to my knowledge those were the only ones to use this, and with this method in limit-removing they make some actions that won't be normally possible in that format. It was done in ALT and Epic 2, for example.

Share this post


Link to post

Vanilla shouldn't have any problem on unknown specials, due to the way walkover vs. use specials are implemented. The only trouble I forsee with that is timing, but with enough work it should be possible to do and make maps that makes everyone happy!

 

Seriously though this is some fucking clever application of interesting glitches folk have discovered, and it serious disappoints me that every. last. fucking. thread. about a cool trick devolves into complaining about how it doesn't work on x source port. it's okay, I have multiple versions of four engines on my machine ready to handle anything... I get that GZ can't do it due to floating point but I seriously don't think that needs to be a reason to say "okay don't do it" because I can just load up choco, prboom+, or eternity if I want to play a really cool map that uses it.

 

Hmm, I wonder how hard it would be to modify an engine to print the velocity of a given voodoo doll, with that it would be easy to make precise timings.

 

gaspe: Yeah, hence why Ling mentioned prior art. This is ultimately just clever application of things that have been known for varying amounts of time.

Edited by SaladBadger

Share this post


Link to post
3 minutes ago, gaspe said:

The conveyor belt made in vanilla is very interesting. However pushing a voodoo doll with an explosion so it triggers an action was done before.

 

Oh, I know.

 

On 4/1/2019 at 6:09 PM, Linguica said:

Well did you know you can very easily combine it with prior art

 

@Mechadon had a lot of trouble getting voodoo scripting to work more-or-less reliably in Doom 64 for Doom 2 so that was where my memory went first.

Share this post


Link to post

I will be honest--at first, I didn't comprehend what was going on until I saw the discussion regarding momentum imparted by the explosion. Now, I have to say that this is brilliant. It would take a fair amount of work to be able to properly "script" events down to the instant, but it would still make rough scripting possible in vanilla. And, awesomely, it allows for multiple triggers, which, to my knowledge, hasn't been done before.

 

1 hour ago, Ribbiks said:

theoretically, if this didn't work in modern ports could one simply make two copies of the closet: this vanilla version + a boom scrolling version (that could disable the vanilla one in addition to its other tasks)? That way you'd have voodoo-scripting functionality that works everywhere (assuming vanilla exes safely ignore boom actions).

 

I like this idea. It's a bit more elegant than NIH's idea to have a voodoo doll fall into a deep pit, triggering linedefs on the way down. You could just do something like have a conveyor belt take a voodoo doll across a line that lowers a wall between the barrel(s) and the other voodoo doll(s), thus preventing the "mikoveyor" triggers from every being activated. If you loaded it up in Chocolate or Crispy, the conveyor belt just wouldn't work--it wouldn't crash the level. It's a little extra work, but I like the idea.

 

56 minutes ago, Linguica said:

 

@Mechadon had a lot of trouble getting voodoo scripting to work more-or-less reliably in Doom 64 for Doom 2 so that was where my memory went first.

 

 

I also initially thought about Doom 64 for Doom 2 and some of the "scripted" events that took place.

Share this post


Link to post

@Nine Inch Heels spent some time experimenting with one of the stumbling blocks to developing a "universal" mikoveyor, which is that its timing relies on damaging a voodoo doll, but skill 1 and skill 2 deal different amounts of damage. This wouldn't be insurmountable except that skill 1 and 2 also share the same map thing placement so you can't even make a separate device for skill 1. NIH made a crude test concept to try and reroute the voodoo doll on skill 1, which is maybe workable, but I am going to have to think about any other possible differences I could exploit.

 

mikoveyor_itydt_fork_poc.wad.zip

Share this post


Link to post

If you want it to move faster you can deal more damage to it. The speed it moves is not terribly important so long as it's consistent and predictable. Making it go as slow as possible is nice in that it minimizes the amount of damage it has to cause to the player, and it doesn't need a whole lot of space to have a long timer if you wanted one for some reason.

Share this post


Link to post

This is kinda cool, though I haven't the slightest clue what a voodoo doll is in Doom let alone how to use it, but it looks cool if a bit slow, but as stated, more damage = more speed.

Share this post


Link to post
1 minute ago, wolfmcbeard said:

I haven't the slightest clue what a voodoo doll is in Doom let alone how to use it

there are several use cases for dolls. one is to simply allow a single switch to do several different things in a map "at once". another use case is to time events in a certain manner for staged fights. Basically the dolls can trigger actions instead of the player, and that's what makes them so good.

Share this post


Link to post

Welp, time to spend some quality time in DB figuring out dolls then, because I would love to use that kind of thing over linedef triggers in certain circumstances.

Share this post


Link to post

This is very cool stuff and has some interesting potential. Great way to simulate a conveyor belt with minimal risk to player health, which is something the classic barrel + voodoo doll technique lacked, and with a frictionless twist as well!

Share this post


Link to post

Okay this is pretty damn amazing. I'd love to see someone commit to making an actual map utilising a lot of recent discoveries. The 'infinite falling' mechanic in a playable space, these conveyors, lingortals, etc!

Share this post


Link to post

This is very cool! After getting used to the boom format I really missed the tricks with conveyor belts. Thanks Linguica and Nine Inch Heels!

Share this post


Link to post

I presume Dehacked features are not worthwhile in this space to try and mitigate or remove the damage to the viewport player object?

Share this post


Link to post
9 minutes ago, traversd said:

I presume Dehacked features are not worthwhile in this space to try and mitigate or remove the damage to the viewport player object?

There is no dehacked feature that can do such a thing. Namely, you cannot push an object in any way without dealing at least 1 point of damage.

However, what could be done is the 3rd entry in the PLAYPAL could be modified to look normal, thus make the effect less apparent.

Edited by Edward850

Share this post


Link to post

Or, if you are desperate to mask it, maybe you can put the main trigger under a damaging floor area. I think it's alright with some health pickups nearby.

Edited by Noiser

Share this post


Link to post
On 4/2/2019 at 4:29 PM, 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?

I do. Cool as hell.

Share this post


Link to post
56 minutes ago, Noiser said:

Or, if you are desperate to mask it, maybe you can put the main trigger under a damaging floor area. I think it's alright with some health pickups nearby.

Yeh did think that, could even start the sequence maybe as a player runs over a damaging floor earlier in the map?

Share this post


Link to post

Alright, did some more messing around, and ended up with something that might serve as a prefab for those who are eager to try this in their own maps, but don't want to spend so much time on getting things going. For the sake of keeping this short-ish but providing at least some insight, I made a couple screenshots to give a basic explanation about how things are put together, and how you can use this very early prefab: mikovey_early_prefab_v01.zip


<<Make sure you read both these spoilers before starting to play around with this.>>
 

Some basics:

Spoiler

 

Right here is the current iteration of the "mikoveyor":

mikovey_01.jpg.b97d6139b06d0e93fca229221b3fe1cd.jpg

Green square is the doll, the light blue one on the right side is the barrel. And the highlighted linedef is an exit linedef set to 1 minute after the barrel explodes. Notice that there are 3 more linedefs to the right of the highlighted linedef. Each one of those will trigger an event 15 seconds earlier than the previous one. And on the far left, there's the 2 minute mark, in case you want to use that for something.mikovey_02.jpg.14dfa7c4198ef2fa51dceda08dab4efd.jpg

Each one of the red linedefs is 54 map units in length, and the highlighted yellow one is 216 map units. So, we can indeed determine the "speed" of the doll to a relatively precise degree: 1 minute = 216 map units. Unfortunately that's a slightly ugly number when divided by 60 seconds, which is why I'll do some more experimenting with this in the next days to see if I can get something that is less awkward to calculate. For the time being, the 1 minute and 15 second indexes of the prefab should at least help you to get a rough idea in terms of how to space your triggers for more intricate setups.

 

Beneath the doll there are 2 trigger lines, which are mandatory to have for this prefab, especially for those of you who want to work within strict vanilla limits:

mikovey_03.jpg.bdbcba8989e19876829d5db4118febf2.jpg
You will need to have both these linedefs in there, because one of them is there to stop the crushers (important for strict vanilla), and the other is there to make this prefab "immune" to the 50% less damage taken on Itytd. It walls off another barrel (wall is highlighted in screenie below):mikovey_08.jpg.1c95e1678ae4bbbeb3ec0424755cd991.jpg

With that said, be sure to give both these linedefs a look in the editor, so you get a better understanding of what the hell I'm talking about. ;-)

 



How to use the prefab:
 

Spoiler

 

For convenience's sake I moved all actions the prefab currently uses and needs (all 2 of them) to tag 501 (starts and stops the crushers), and 502 (walls off the itytd barrel). Hopefully this will make it easy enough to insert this into any work in progress vanilla format map you may have by staying away from the usual tag ranges I've seen people use. For testing purposes I left in the walkover trigger and the switch, so if you wanna do some science, the walkover trigger is a very reliable way to start setups at a precise point in time. If you don't like science, just remove the walkover trigger and the switch.


Simply put in whatever actions you want along the mikoveyor, experiment with it a little bit if needed, and keep in mind that the doll moves at relatively slow speeds. So if you want to have lots of stuff happen in short succession, you may need to get a little creative with your linedef placement (or change barrel placement to get more speed at the expense of dealing more damage - be sure to not just kill players accidentally with your trigger). After setting up your desired actions on the mikoveyor, you're done with all difficulty settings except for itytd. In order to make this itytd compatible, you just drag-select the entire mikoveyor like so, and copy it:
mikovey_04.jpg.a55e3d73c79aff400745010679b5a0f1.jpg
When it's copied, look for the small triangle I placed, it's there to help you get the whole thing pasted and moved in the proper position, if you want to support itytd, that is (itytd doll and barrel are already pre-placed for your convenience):mikovey_05.jpg.fc403f6bbc08f20ba0cec8a23811777f.jpg

After pasting, while still in edit selection mode (happens automatically when pasting) make sure you line up the copied mikoveyor like so:
mikovey_06.jpg.2b748c77d954b939a08413eb39cc936b.jpg

And this is pretty much how your prefab should look like when zoomed out a little:
mikovey_07.jpg.f7ee08bb6a64edb12b4f382a5fc2bd1c.jpg
Now you have a vanilla compatible boom-esque setup for all your chaotic gameplay purposes. In the bottom you have anything that happens on "Hey not too rough" or higher, and the upper mikoveyor is there for "I'm too young to die". Due to the copy pasting, and the delay of the upper itytd barrel, actions on itytd will happen with about half a second delay, if you really want/need more precision, just move the triggers on the mikoveyor a few map units towards the doll to compensate for the delay.

Also note that you don't have to use an exact copy, you can also use this setup to make itytd and hntr a lot more different than the usual "twice the ammo, half the damage taken", so there's ample room for creativity as well.

Adding more dolls:

Every now and then this causes some confusion for people new to conveyors, or when you just forget about it: You're using several player 1 starts here. So if you want more conveyors and more dolls, you may find yourself starting on the mikoveyor instead of the map every now and then. A good rule of thumb is that the last player start you place will be the one that you will be in control of when starting your game.


Anyway, that's it from me for now. In case something seems to just not come together, or there are any issues with the prefab I may not have caught, be sure to let me know, and I'll fix things as soon as I have the time to spare.

Quick edit: Stuff I wanna be looking into is a way to maybe get around the risk of killing players with the trigger damage, and a setup that can loop for at least a limited number of times.

Edited by Nine Inch Heels

Share this post


Link to post

You could force an invulnerability pickup when you trigger the conveyor. To my knowledge it's not possible to make something that pushes a player without it dealing damage. If something deals 0 damage it no longer pushes right? So you couldn't set up a monster thing that fires a 0 damage fireball then disappears and have that work...

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...