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

No, you lose all momentum when you teleport (except for the Boom silent teleport lines of course). Damaging a voodoo doll is the only known way of getting one to move in vanilla. The voodoo accelerator shows it's at least theoretically possible to impart a smaller momentum to a voodoo doll and then have it speed up on its own, but if this can be used is an open question. The other way to change momentum automatically is elastic collisions, which would be amazing to somehow work into this but also ridiculous.

Share this post


Link to post

I wrote some initial WadC to generate these this morning. Attached is my latest WIP. The source is in the WADCSRC lump. The doll runs out of steam before it opens the third trigger in this demo.

vanilla_conveyor.zip

Share this post


Link to post
7 hours ago, Jon said:

Has anyone successfully got a voodoo doll through a teleport line and preserve momentum on the other side? for loops?

Can't do that in vanilla doom. You could create a dehacked thing with a looping explosion state maybe? So when the doll teleports through he's immediately with with an explosion of 1 damage...

Share this post


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

I haven't checked this but thanks; @Linguicasolved that problem for me (floor height differential between starting sector and conveyor for voodoo doll was too big)

Share this post


Link to post

I've built a rudimentary arena map and some WadC to make building conveyors easier (in wadc anyway). Here's an example. It's a hot mess in terms of textures, lighting, timings, balance, I just wanted to test the concept really. I'm going to tidy it up but thought I'd share it at the current state anyway. WadC source in the WADCSRC lump.

 

https://jmtd.net/tmp/arena.zip

 

Edited by Jon : external zip

Share this post


Link to post

This is beautiful!

But, couldn't we use an xlat lump to make it work in GZDoom too? I think you would need to replace a linedef to make it not bomb out in Vanilla, but who the heck uses all linedefs in a single project anyways? Perhaps replacing a line and setting it to a sector portal linked to itself could work. Or possibly a MAPINFO lump with a keyword: VanillaPortals.

Regardless, even though ZDoom is my most used port, this is quite important for Vanilla mappers, as they can do some type of map scripting now.

Share this post


Link to post
7 hours ago, Linguica said:

uk0alWG.gif

Wow, that's really cool! A little bit janky, but it works! (Actually, maybe not janky because the slime moves quite realistically)

Got a question though, is there any way to teleport items? It might be necessary for something i'm working on, involving these conveyor belts.

Edited by -TDRR-

Share this post


Link to post
29 minutes ago, -TDRR- said:

Got a question though, is there any way to teleport items?

No, items can't be damaged and therefore not moved. You can, however, move the doll into items.

Alternatively, you can sink items into the floor, and use "insta-pop™" to get those to show up where and when you want

Share this post


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

No, items can't be damaged and therefore not moved. You can, however, move the doll into items.

Alternatively, you can sink items into the floor, and use "insta-pop™" to get those to show up where and when you want

I did notice an oddity that caused a megasphere to move (at least in PrBoom) in the wad manyswtc.wad seen in this package: https://www.doomworld.com/idgames/docs/editing/spcial12

Thing is, i don't know how to replicate it.

If it's not possible, i guess i will just have to live without that trick. Thanks for the info anyways.

Share this post


Link to post
37 minutes ago, -TDRR- said:

Thing is, i don't know how to replicate it.

I could replicate it:
move_a_ting.zip

 

My guess is that the trick is the 116° linedef...

Just start the map and press "use" to see it work. Easy enough to replicate.... and the best part: we might be able to use this, or something similar, to fuel the mikoveyors instead of using barrels.

Edit: Nevermind, doesn't work in complevel 2 or in chocodoom.... got excited too early... that said, it won't be a vanilla compatible trick, ever I guess. Still a neat effect though.

Edited by Nine Inch Heels

Share this post


Link to post

when it comes to teleporting the voodoo doll to loop the script could you use a horizontal portal? Since the vertical portals work by overflowing the physics calculations surely you could do the same thing horizontally?

Share this post


Link to post

given the speed of the doll, and assuming it was theoretically possible, you'd still have to wait like... a long ass time for anything to loop, making it unfeasible I'd say. But I dunno, never tried over/underflowing XYcoordinates to begin with.

Share this post


Link to post

Well you could copy and paste the parts of the conveyor with the lines you want to use over and over on the other side, the main issue would be the crusher ceiling would be blocking you at some point and you can't restart a crusher once you've stopped it so if you indeed wanted an infinite loop you would need to find a way to get around that without messing with the doll speed too much and screwing up the timing

Share this post


Link to post

@Nine Inch Heelsoof so I tried creating a horizontal portal with the latest map that linguica posted and got pretty unfortunate (and weird) results, the coordinates will overflow but unlike with the vertical overflow when you pop out of the other side collision is completely broken over there (you just phase right through the walls as if they didnt exist) and more importantly linedefs cant be hit, also enemies are invisible, at least in prboom, in vanilla they aren't. Interestingly this glitch still happens even if you noclip and run all the way over to it manually as well which implies it has more to do with how far away the different parts of the map are and less with the over/underflowing itself. Also nterestingly in Chocolate doom the two sides of the portal appear to be physically connected and continuous to each other but in prboom you can't see what/s on the other side until you step past the 32768 mark and actually get teleported over there......

Share this post


Link to post

I think at the end of the day it really is down to how much of a necessity it is to have a "true loop", when you can instead extend the mikoveyor to insane lenghts, and have the doll travel for hours, if not days, assuming you do some tweaks to the geometry on which the doll rests prior to activation, that is prior to getting nudged.

 

What I would have liked to see happen is a kind of setup that allows repeating sequences based on hitting a switch, much like it works in boom when dolls get teleported around to the start of a conveyor. Unfortunately, it seems that's where the mikoveyor runs into its limits, unless for example linguica has an idea how to change the doll's trajectory without lowering its momentum plus finding a way to lock the doll in place while retaining its momentum (basically travelling without moving).

I mean, we've seen a doll get "launched", so I'm guessing there's a theoretical possibility to make it happen somehow, but it's beyond my (somewhat limited) understanding of this game's inner workings to piece the puzzle together such that I end up with a self-contained loop, ideally one I could make players interact with from inside the playspace reliably, for example when hitting switches etc.

Share this post


Link to post

Hm i found even more oddness with the horizontal coordinates, apparently if you have 2 parts of the map with one being on the very far left and one being on the very far right the one on the right is *always* broken and the one on the left is *always* normal, whereas if all parts of the map are only on one side everything is OK regardless of which side its on, I assume the same is true for the Y coordinates as well. Not sure if this is a nodebuilder issue or just a general engine limitation or what but suffice it to say it seems like making a horizontal portal for the conveyor to loop it is pretty much impossible :(

Share this post


Link to post
2 hours ago, therektafire said:

when it comes to teleporting the voodoo doll to loop the script could you use a horizontal portal? Since the vertical portals work by overflowing the physics calculations surely you could do the same thing horizontally?

 

That would break other aspects of the vanilla Doom engine unfortunately -including BLOCKMAP limits. You can indeed have a very narrow tunnel somewhere unseen on the map, spawning the entire full width or height of the map (+/- 32K units in either direction), that would also "loop" anything crossing the map boundaries. However, by doing that you will simply run out of physical BLOCKMAP lump space, and most linedef collision/crossing detection will be broken, which is exactly what you DON'T want to happen with this whole voodoo conveyor trick.

 

Even in ports that compute the blockmap on-the-fly, that's still not enough: a substantial modification in how blockmap calculations are performed across the engine is needed. Here's an old post I made on the subject.

Share this post


Link to post
1 minute ago, Maes said:

 

That would break other aspects of the vanilla Doom engine unfortunately -including BLOCKMAP limits. You can indeed have a very narrow tunnel somewhere unseen on the map, spawning the entire full width or height of the map (+/- 32K units in either direction), that would also "loop" anything crossing the map boundaries. However, by doing that you will simply run out of BLOCKMAP space, and most linedef collision/crossing detection will be broken, which is exactly what you DON'T want to happen with this whole voodoo conveyor trick.

Yeah I found that out when testing it out which i explained above :(

Share this post


Link to post

 

28 minutes ago, Nine Inch Heels said:

What I would have liked to see happen is a kind of setup that allows repeating sequences based on hitting a switch, much like it works in boom when dolls get teleported around to the start of a conveyor. Unfortunately, it seems that's where the mikoveyor runs into its limits, unless for example linguica has an idea how to change the doll's trajectory without lowering its momentum plus finding a way to lock the doll in place while retaining its momentum (basically travelling without moving).

 

A possible solution would be having the doll simply teleporting back to where it started, and have a weak monster attack it, e.g. placing it exactly in the melee range of a trapped lost soul, nudging it just enough so that it starts moving again. With all the problems/unpredictability that would bring about, of course.

 

The player's switch (if any) would then only control a trapdoor between the LS and the player. This would allow for at least some finite repeatability, compared to a barrel (until e.g. the voodoo doll runs out of health, though that can be replenished with pickups). I'm not sure if an awakened monster will actively hunt and attack a voodoo doll, though.

 

Other than that, dunno. Make the player sprite into a projectile and have a modified monster shoot voodoo doomguys across mystic corridors none will ever see? Or use The Sky May Be tricks like automatically firing, always-on flying chainguns? *shrug*

Share this post


Link to post

Probably just coords overflow/wraparound, Asteroids style.

Share this post


Link to post

@Maesyeah that's what I meant. @LinguicaI was doing some more experimenting with your conveyor just now and I ran into a bit of an issue, basically I am trying to make a scripted looping light sequence with 3 lights with each linedef that turns the lights on and off placed 1 unit apart from each other so they cycle fairly quickly. But I noticed that if I put more than 8 linedefs in a row (which are the exact same kind as the ones already present which is to say they don't span the entire sector if that matters at all) then the conveyor itself doesn't work for some reason even though I made sure to not touch any of the lines that make up the conveyor itself. It seems to do that with any distance apart whether it be 1 or 4 or whatever, if there are more than 8 linedefs the same distance apart from each other in front of the doll it won't move forward on the conveyor. Now i'm not particularly familiar with vanilla so i don't know why that would be but whatever the case it seems kind of weird and arbitrary and annoying

Share this post


Link to post
2 minutes ago, therektafire said:

then the conveyor itself doesn't work for some reason

spechits overflow it's called.... actor can only trigger up 8 linedefs at once, unless limit removing, afaik

Share this post


Link to post

So due to the spechits overflow the voodoo doll behaves as if it hit a solid wall? It's weird that there's even that much consistency.

Share this post


Link to post

@Maesbasically yeah, I noticed that the lights werent getting triggered and the level wasnt automatically exiting so I was confused and I tried some different things out to try and figure out what was causing it and I figured out that's what the cause was. I've never mapped for vanilla before so I don't really know about this stuff, i've only done boom and hexen/udmf

Share this post


Link to post

Fwiw I found things invisible on a regular mikoveyor in prboom, no horizontal overflow in play 

Share this post


Link to post
On 5/9/2019 at 8:23 PM, Linguica said:

uk0alWG.gif

Ok, this is a massively cool effect. Do you mind explaining what's happening here, behind the scenes, in a way suitable for laymen? Please, not some lengthy description - just the highlights of what new, special methods are being employed here, to make this thing do what it does? What is happening that makes this map special, as far as vanilla maps go? (I know it's a 'vanilla voodoo conveyor belt', but what does that mean, and what does it afford a mapper?)

Share this post


Link to post

@kb1basically how a vanilla voodoo conveyor works is you crush a barrel to push the voodoo doll like you normally would in vanilla BUT you set up the conveyor such that the conveyor itself is at the vertical height limit of -32768 and the doll starts slightly above that, so what happens is the barrel pushes the doll onto the conveyor and the doll tries to fall but its height overflows to a really high number so the game places it at the height of the conveyor sectors ceiling, this will repeat forever because its impossible for the doll to actually touch the ground if it is falling onto it and the ground is at the height limit. Since it never hits the ground it never loses its horizontal speed so it "scrolls" down the conveyor as if you used a scrolling floor. Of course linedef triggers arent effected by this in any way since you can trigger them in the air. So it's sort of like having a one time use boom conveyor (its one time use because afaik there's no way to get the doll back to the beginning again without losing its momentum)

 

So basically what it affords a mapper is that it allows you to easily do multiple scripted actions with a singe conveyor which wasn't possible before

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
×