Project

General

Profile

Bug #188

jHeretic/jHexen enemy clipping errors on Linux

Added by zachkeene almost 18 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
2004-08-13
% Done:

100%


Description

This happens to me on the Linux version of 1.8.0; I
don't use Windows so I haven't tested that version. I'm
using the Heretic WAD that came on the "Towers of
Darkness" Heretic/Hexen compilation disc (IWAD
identification: 00ea102d).

On e1m8 "Hell's Maw", head for the ledge overlooking
the southern part of the map but don't go over. Fire to
get the Ironliches' attention, and stay on the ledge
(or go back into the Golem room).

The Liches will approach the ledge and then disappear,
making it impossible to complete the level without
MASSACRE (or the no clipping code.)

Labels: Gameplay

History

#1 Updated by zachkeene almost 18 years ago

Demo of Heretic Ironlich Bug (made with 1.8.0 Linux)

Attachments:

#2 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Here's a demo of the bug in action. It also demonstrates a
weapon oddity that may be related; the Elvenwand and Dragon
Claw projectiles don't appear to hit the ledge in question.

#4 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Seems there's a bigger problem with enemy clipping here;
using KITTY I found my two ironliches stuck in a wall along
with a few other random baddies.

Odder still is on my current playthrough I saw a red blotch
moving along a wall in e1m4. A quick KITTY jaunt showed it
to be a gargoyle stuck behind the wall, and it had a few
friends back there as well.

I'm uploading a save file with this comment; using the
RAVMAP code until object pop up you can see the three
gargoyles in question, along with one or two other random
enemies stuck in the void. Or use KITTY to see for yourself.
Or wait a while and see if a disembodied wing pops up. :)

#5 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Problem persists in CVS version I grabbed on Aug 12.

#6 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Beating a dead horse probably, but here's another
manifestation of the bug I can reproduce pretty
consistently. This is in the middle of e1m7 "The Crypts";
keep an eye on the leftmost Warrior when I enter the green door.

This demo also shows a Gargoyle stuck in a nearby wall.

#7 Updated by zachkeene almost 18 years ago

Disappearing Warrior/Embedded Gargoyle demo (Aug 12 CVS Linux)

Attachments:

#8 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Just had a go at 1.8.1-rc4 on a Windows XP machine and
couldn't trigger any of these bugs. (The Linux demos still
worked, so Windows users can still see what I'm raving on
about. :)

#9 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Still acting up on 1.8.1 Linux.

#10 Updated by skyjake almost 18 years ago

Logged In: YES
user_id=717323

I don't see this bug happening on Windows. It might be a
compiler bug, or some glitch with linking. I'll see if it happens
on a Mac.

#11 Updated by zachkeene almost 18 years ago

Logged In: YES
user_id=1103163

Looks like it's happening in Hexen as well. If necessary
I've got a save file in the Heresiarch's Seminary I could
upload facing a wall with an Afrit stuck in it as well as
something floating around outside to the west of the level.

#12 Updated by skyjake over 17 years ago

(originally posted by anonymous SF.net user)

Logged In: YES
user_id=904336

I have the exact same problem playing jHeretic with
deng-1.8.6 under Debian Sarge. (gcc 3.3.3).

On all levels there are some few monsters that seem trapped
in the walls. For instance i can see a red wing or a part of
a monster sliglty showing outside the wall, but not the
monster itself.

On a few occasions, some big monsters, well displayed at
first, manage to disappear in the walls. It happens with the
big monster at the end of the episod 3 of Heretic. You know
the evil wizzard on the creature at the end.
Trying to go toward you i think it enters thru the structure
where you have just appeared.

And at "Hell's maw" the 2 big big skulls need to be shooten
if not the gate o f the cave won't open. I had this problem,
searching a long moment why i could not progress anymore.
Simply they were gone inside the wall, and unshootable :(

#13 Updated by zachkeene over 17 years ago

Logged In: YES
user_id=1103163

Glad to hear it's not just me. :)

I don't know if skyjake was ever able to reproduce it on a
Mac, but unfortunately I was able to using the latest beta
binaries.

#14 Updated by zachkeene over 17 years ago

Logged In: YES
user_id=1103163

OK, I finally managed to track down the bug using my l33t
hax0ring skillz... all right, I cheated and tried the old
glHeretic port (heretic.linuxgames.com) and found that it
worked perfectly, so I compared its source to the original
Heretic source and found how they'd fixed it. Making the
same change to Doomsday and running the standard Ironlich
test resulted in a much more crowded e1m8. :)

And here's the fix: in Src/jHeretic/P_enemy.c, check the
P_NewChaseDir function and change (at about line 336):

dirtype_t tdir, olddir, turnaround;

to

dirtype_t olddir, turnaround;
int tdir;

I went ahead and made the same change to jHexen's P_enemy.c
(about line 341 in that file) as well, but haven't tested
it. I haven't tested either game on the Mac either.

(If you check jDoom's p_enemy.c you'll find that the change
had already been made.)

#15 Updated by skyjake over 17 years ago

Logged In: YES
user_id=717323

I've now changed tdir to int in both jHeretic and jHexen.

dirtype_t is an enum type, so I guess there's a chance that gcc
handles it differently than MSVC. Cheers for finding a fix, though; I
wouldn't have had time to do any in-depth source comparisons
myself. :-)

#16 Updated by zachkeene over 17 years ago

Logged In: YES
user_id=1103163

The C standard actually leaves the choice of whether or not
enum types are signed up to the compiler designers. GCC uses
unsigned enum types; I guess MSVC uses signed ones.

I got lucky with the source compare though. P_enemy.c was
the first file I checked. :)

#17 Updated by skyjake over 17 years ago

(originally posted by anonymous SF.net user)

Logged In: YES
user_id=904336

Just a word: Thanks ! (You are a real heretic wizzard zachkeen)

I recompiled with your fix and there are quite a lot more of
monsters now :)))
Wich is hugely great !!

And of course i don't see on the few levels i played since
anymore disapearing "vilains"...

Ahhhh all theses red deamons to shoot at :))))
(and theses dangerous snake guards too :-/ )

Also available in: Atom PDF