Emulate Wolf3d pushwalls

Archive of the old editing forum
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. This forum is archived - please use this set of forums to ask new questions.
User avatar
printz
Posts: 2649
Joined: Thu Oct 26, 2006 12:08 pm
Location: Bucharest, Romania
Contact:

Emulate Wolf3d pushwalls

Post by printz »

Has anybody yet tried to emulate the "secret door" pushwalls from Wolfenstein 3-D? This came into my mind... and may yet be possible.

I'm not much into ZDoom editing, but I might give or guess some clues...
The only things that DON'T block polyobjects are the walls or other polys. Polys certainly look bad after leaving their home sector.

Here's my sketch: draw a single sector, place equal, (64x64) square-shaped polyobjects on it, having the same "player uses" script on all sides. Under ACS, we define a 2-d "map" array with 0's and 1's defining vacant and occupied (64x64) spaces on that sector, so polys won't overlap with polys or walls; we also two simple "x","y" arrays as long as the number of polys, each index specifying the X and/or Y of each poly.

Under their "use" script: an argument <arg.1> should specify the direction (0=east, 1=north, 2=west, 3=south), depending on which side the player is pushing; another argument <arg.2> should specify the 'pushwall ID' (used with the "x", "y" arrays). We look up "x" and "y" at index <arg.2>. We look up the "map" at index <y><x>. If we see a 1 right on poly's spot, then it's OK and the block CAN be pushed (that's usual). According to <arg.1> we check 2 next adjacent squares on the "map". If the next one is also busy, exit the script. If the next is free, but the second not, or if both are free, mark the last one as busy, the first as free, then execute the movement. Activate a boolean <b> variable, change the poly's "x", "y" indices and move the polyobject away, via a simple command. While <b> is on, this script should be 'exited' on activation (can't push while another's moving). Deactivate <b> after the block ends its movement. Make sure its "x", "y" indices are renewed and that its busy/free 1/0 is updated on the "map".

Does it work? I couldn't show you real code here, because I haven't scripted for a long time... Does it sound good?
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Post by HotWax »

This has been done and, to my knowledge, doesn't require a solution nearly so convoluted.
User avatar
printz
Posts: 2649
Joined: Thu Oct 26, 2006 12:08 pm
Location: Bucharest, Romania
Contact:

Post by printz »

Oh, ok. Cool. Gimme a search word so I can find it :)
User avatar
Cleveland Rock
Posts: 27
Joined: Wed Oct 25, 2006 6:36 pm
Preferred Pronouns: He/Him
Operating System Version (Optional): Windows 10
Graphics Processor: nVidia with Vulkan support
Location: Cleveland
Contact:

Post by Cleveland Rock »

I tried doing pushed walls and sliding doors like in Wolfenstein 3D a while back. The doors worked like a charm, but the pushed walls were really glitchy.

A guy I know who goes by the name "Boingo the Clown" is working on a Wolfenstein project for GZDoom. Well, it's currently only for Legacy, but he's switching to GZDoom. I don't know if it'll be any help, but, it's at his web site. The pushed walls look really nice.
User avatar
Ryan Cordell
Posts: 4349
Joined: Sun Feb 06, 2005 6:39 am
Preferred Pronouns: No Preference
Operating System Version (Optional): Windows 10
Graphics Processor: nVidia (Modern GZDoom)
Location: Capital of Explodistan

Post by Ryan Cordell »

Never heard of AFADoomer, have you guys?
User avatar
Nash
 
 
Posts: 17501
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

The Wolf3D mod doesn't have any push walls, they raise up like any other Doom door.
User avatar
Krylancelo
Posts: 10
Joined: Mon Sep 11, 2006 9:31 pm
Location: Teh Intarwebivurs

Post by Krylancelo »

I tried fiddling with these secret walls when AFA was working on his W3D TC... I got them to work, but there was severe HOMage that I couldn't get fixed at the time (I'm sure it could've been fixed had I made the right changes)... I'd probably have to go back at it to figure out how I made it work in the first place.
User avatar
Skunk
Posts: 1189
Joined: Tue Jan 18, 2005 1:04 am
Contact:

Post by Skunk »

Wow.

You guys have never heard of polyobjects, have you?
User avatar
Nash
 
 
Posts: 17501
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

Skunk - That's not the problem. The polyobject implementation makes it difficult to emulate Wolf3D's push wall behaviour 100% because polyobjects can only exist in its own sub sector.

In Wolf3D, the secret walls can be pushed in any direction so the possibility of it running into another wall or sector is there, which equals HOM.
User avatar
Krylancelo
Posts: 10
Joined: Mon Sep 11, 2006 9:31 pm
Location: Teh Intarwebivurs

Post by Krylancelo »

Skunk wrote:Wow.

You guys have never heard of polyobjects, have you?
I could only get them to work in the first place by using poly's. :glare:
User avatar
Skunk
Posts: 1189
Joined: Tue Jan 18, 2005 1:04 am
Contact:

Post by Skunk »

I don't get it. Where would the HOMs come into place unless you really screwed something up?
User avatar
Cleveland Rock
Posts: 27
Joined: Wed Oct 25, 2006 6:36 pm
Preferred Pronouns: He/Him
Operating System Version (Optional): Windows 10
Graphics Processor: nVidia with Vulkan support
Location: Cleveland
Contact:

Post by Cleveland Rock »

Nash wrote:The Wolf3D mod doesn't have any push walls, they raise up like any other Doom door.
Hence the problem. DOOM could never effectively emulate Wolfenstein unless a polyobject was created that you could push in any direction until it hits a wall. Wolfenstein 3D's push walls didn't just go in one direction. There's one map in W3D I have in mind where there was a humungous maze of insane push walls that was used for a contest that never actually happened (It had a message sprite saying "Call Apogee, say 'aardwolf'". It was replaced with a pile of bones in later versions so people would stop calling Apogee and saying "aardwolf." I hear people still call them.).
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Post by HotWax »

I'm afraid I don't understand the problem. Since the levels of Wolf3D are entirely flat and have no changes in light level, you could essentially make all the rooms one gigantic sector.

I understand that the sector will get cut into subsectors by the node builder of course, but all you need to do is make any walls that would cause this problem into non-moving polyobjs. They would appear identical to the surrounding walls and wouldn't carve the sector up.

Here's a visual example so you can see what I mean.

The following image is a 4 x 4 grid representing a small part of a Wolf3D map. For the purposes of this demonstration, just assume that the surrounding walls are all solid. The color of the grid spaces are as follows:

White: Empty space
Red/Purple: Solid wall
Blue/Green: Polyobjects

The red walls would be actual void space in the converted map, as they cause no possibility of a subsector splitting the available movement space around the polyobjects

The one purple wall would actually be empty sector space so that the movement space forms a perfect square, making the sector concave. However, a separate polyobject would be moved in and act in every way like a solid wall. The player would have no idea that any trickery was being done.

In this way, you can move the blue and green blocks to any of the 5 empty spaces available to them (the 2 spaces left and right of the green block, and the 3 spaces around the blue block, assuming the green block is moved first) without causing HOM.

Note the blue line crossing the "corridor" on the right side of the grid. This line would be the sector divider between the square sector on the left and the corridor to the right. This ensures that the node builder won't split the sector upon node generation.

Unless I'm missing something here, this should work. Even a level composed of hundreds of movable walls should be possible by making the area into a huge square sector, right?
User avatar
Nash
 
 
Posts: 17501
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

While that may work, I don't think the Wolf3D MAP -> Doom WAD converter works that way.
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Post by HotWax »

I'm sure it doesn't. It will require the author to get off his ass and fix the issues on a case-by-case basis. :P
Locked

Return to “Editing (Archive)”