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

Final Doom and Teleporters

Recommended Posts

I was reading this page, and under the Final Doom teleport demo desyncs section (near the bottom of the page), it says that there's a comment in the source code that says this:

thing->z = thing->floorz; // fixme: not needed?
Apparently the entire line was removed for Final Doom. Does anyone know why, if teleporters were working as they should in all versions of Doom before Final Doom, they felt they needed to change it? Just curious.

Share this post


Link to post

Since the original code has the comment "// fixme: not needed?" presumably some dev assigned to fixing various bugs for final doom saw this, thought about it lazily for a minute, and agreed it wasn't needed, having been prejudiced by the notion that it wasn't.

Now who knows why the comment was there to begin with. The function could have behaved differently before when maybe it wasn't quite so clear. And the comment never got deleted.

Just an idea. They obviously didn't put *too* much effort into the Final Doom build seeing all the bugs which remain that they must have known about by then.

Share this post


Link to post
emailking said:

assigned to fixing various bugs for final doom

Tell me one bug which got fixed.
AfaIk, (besides this teleport oddity) they merely added map names and episode texts.

Share this post


Link to post

Yeah, the Final DOOM executable's teleporter handling is simply messed up.

The comment may have been added by Bernd Kreimeier when he was merging the three variants and saw that the Final one didn't have the line.

Share this post


Link to post

Are there any mapping implications of this (e.g. a case where the player would get stuck) ?

Judging by the code alone, if the destination floor is lower than the source then the player simply falls down, and if it is higher then the very next P_ZMovement() will reset z to floorz (player hit the ground) and all is well again.

Share this post


Link to post

So that's why this happens... At first I thought it's intentional :-\ (it's a TNT MAP20 demo)

Share this post


Link to post

Ajapted said:
Are there any mapping implications of this (e.g. a case where the player would get stuck) ?

Other than demo desynchs what you get is a HOM in some cases.

Share this post


Link to post
Ajapted said:

Are there any mapping implications of this (e.g. a case where the player would get stuck) ?

A fair proportion of Final Doom demos (e.g. at compet-n, where there are something like 1600 of them in total) were recorded using the Final Doom exe, and I don't recall any instances of players getting stuck as a result of the teleporter bug. At least, if they did, they kept this fact to themselves - you'd normally expect at least a comment and often a "wtf.lmp" to be included if something weird had happened during the recording session.

Share this post


Link to post

emailking said:
There you go.

Not really, because that was fixed for The Ultimate DOOM, and later they used the "ultimate" source to build the engine for Final DOOM.

Share this post


Link to post

Regardless, it does mean they did try to fix bugs after 1.9. Obviously, the final doom .exe was changed beyond cosmetic stuff, as ultimate doom doesn't have the teleporter bug. I don't think there's anything wrong with the theory I proposed.

Share this post


Link to post

emailking said:
Since the original code has the comment "// fixme: not needed?"

We don't know if that comment was on the original sources, all we know is that the original executables had this difference, and that there's a note in the released source.

Obviously, the final doom .exe was changed beyond cosmetic stuff, as ultimate doom doesn't have the teleporter bug.

The bug could be due to anything, including an accidental deletion or a five year old playing with a text editor on id's computers.

Share this post


Link to post

Even if it was a 5-year-old attack, I doubt it would have been their only copy of the source; or that they weren't using a version control (SCCS, RCS, was CVS around back then?)

Share this post


Link to post

The released source code is apparently a branch before Final Doom. Thus, they had at least separate copies for preparing the source release and for Final Doom to work with.

Share this post


Link to post

LogicDeLuxe said:
The released source code is apparently a branch before Final Doom.

Bernd Kreimeier says the following in README.b:

This is not "The DOOM Source Code" dump for a bunch of reasons. It is based on a DOOM development directory snapshot as of January 10th, but has been stripped and changed. Thus it is the DOOM source, but there are many minor differences to the source as last used by id Software.

That's clearly January 10th '97 (as shown by the ChangeLog), certainly after Final DOOM (released in '96). And "last used" seems to imply that it includes the editing done to add Final DOOM's stuff (the last things added at id), because it means it's the very last state they left it in.

I'm guessing whoever assumed Final DOOM is different was thinking that because only Final DOOM (and not The Ultimate DOOM or the released source) has the teleporter bug, but Bernd had more than one version of the source and one must have included the line. He says he compiled the Linuxdoom source at the beginning (see the ChangeLog), and only then he started messing with the DOS sources.

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
×