[r1454] Strife: code missing from acolyte deaths?

Bugs that have been investigated and resolved somehow.

Moderator: GZDoom Developers

Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
Post Reply
Crowley
Posts: 15
Joined: Fri Feb 27, 2009 1:54 pm

[r1454] Strife: code missing from acolyte deaths?

Post by Crowley »

I strongly suspect that the actor code for Acolytes as it currently is in ZDoom.pk3 is missing a line or two. Playing vanilla Strife in DosBox the following happens when an acolyte dies: a corpse appears on the ground, which is changed to gibs after forty seconds and the gibs disappear after another forty seconds. In ZDoom, the corpse disappears completely after the first forty seconds and no gibs appear. As a point of comparison, the peasants also have their bodies reduced to gibs and then to nothingness at the same forty-second interval. This happens with peasants both in DosBox and ZDoom.

Now, let's take a look at the Acolyte's death code as it is in zdoom.pk3 and the Wiki:

Code: Select all

  Death:
    AGRD G 4
    AGRD H 4 A_Scream
    AGRD I 4
    AGRD J 3
    AGRD K 3 A_NoBlocking
    AGRD L 3
    AGRD M 3 A_AcolyteDie
    AGRD N 1400
    Stop
Now, compare this to the peasants' death:

Code: Select all

  Death:
    PEAS G 5
    PEAS H 5 A_Scream
    PEAS I 6
    PEAS J 5 A_NoBlocking
    PEAS K 5
    PEAS L 6
    PEAS M 8
    PEAS N 1400
    GIBS U 5
    GIBS V 1400
    Stop
This issue seems easily fixed by copying from the Acolytes' xdeath sequence so the end of death looks like this:

Code: Select all

    AGRD M 3 A_AcolyteDie
    AGRD N 1400
    GIBS K 5
    GIBS L 1400
    Stop
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49234
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Graf Zahl »

Actually, I think, screw perfect emulation. ZDoom has no need to remove the corpses for performance reasons so instead of making them vanish in 2 steps they'll stick around forever now. Same for burned bodies.
Gez
 
 
Posts: 17946
Joined: Fri Jul 06, 2007 3:22 pm

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Gez »

What about Acolyte XDeath and StrifeHumanoid Disintegrate?
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49234
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Graf Zahl »

I'll probably fix all of Strife's corpses to stay - but first I'll have to check all states.
User avatar
Project Shadowcat
Posts: 9369
Joined: Thu Jul 14, 2005 8:33 pm
Preferred Pronouns: They/Them
Operating System Version (Optional): Windows 11
Graphics Processor: nVidia with Vulkan support
Location: Blacksburg, SC USA
Contact:

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Project Shadowcat »

Graf Zahl wrote:Actually, I think, screw perfect emulation. ZDoom has no need to remove the corpses for performance reasons so instead of making them vanish in 2 steps they'll stick around forever now. Same for burned bodies.
It'll make navigating those easy-to-get lost areas so much easier to navigate... "Have I been here? What about here?"
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Re: [r1454] Strife: code missing from acolyte deaths?

Post by HotWax »

Don't suppose this could be compat optioned?

Not because I want it, but because I just know someone's going to complain. (Although, I suppose they can always make an auto-load PWAD that restores the original behavior if they're that picky)
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49234
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Graf Zahl »

No, this can't be compatibility optioned. Also, the only people who would complain are the ones like Crowley who think that every minute detail should be emulated properly. Well, ZDoom never did that for Strife (e.g. placed corpses disappear in Strife but remain in ZDoom) so it's really not an issue.

Let's face it: Originally the corpses were removed not because of gameplay but solely of performance considerations. Otherwise the placed corpses would work. I'm highly certain that the only reason those don't work is a retroactive change to the parent states.
Crowley
Posts: 15
Joined: Fri Feb 27, 2009 1:54 pm

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Crowley »

I respectfully disagree at least in part on the rationalization for disappearing corpses here. Of course this is just my personal opinion, since I cannot read the minds of the developers. First of all, if it was purely a performance consideration, why replace corpses with gibs in the first place? The only reason I can think for that step is aesthetics. Second, Strife is supposed to have a world populated by people, some of whom are friendly, and not just mindless monsters unlike Doom, Heretic and Hexen. With that in mind it would make sense that corpses are eventually cleared away for legal and sanitary reasons, if nothing else.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49234
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Graf Zahl »

... but then

- it should happen for all dead bodies
- not happen when the player is watching and nobody moving the bodies is in sight. :mrgreen:


Regarding the gibs, they probably thought that just letting the corpses outright vanish looks bad.

But the entire design of the placeable corpses and their use in the levels indicates that it wasn't meant to be like it turned out. You don't create actors that stick around for a minute and so and then just vanish without the player ever noticing they were there.
Crowley
Posts: 15
Joined: Fri Feb 27, 2009 1:54 pm

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Crowley »

I can certainly agree that it looks weird. You are starting to sway me towards your view.

One more thought that came to me: if it is a performance issue, why use timer in the first place since it does in no way directly correspond to the workload placed by the amount of corpses, while limiting the amount does? In the 80 seconds it takes for a corpse to disappear, the player could kill twenty more actors or zero, and the program wouldn't know.
But the entire design of the placeable corpses and their use in the levels indicates that it wasn't meant to be like it turned out. You don't create actors that stick around for a minute and so and then just vanish without the player ever noticing they were there.
Intriguing. Sounds like I might have been missing out on something the first times I played Strife in DOS. However, since the timer is tied to the death event, wouldn't the pre-placed corpses only vanish if the level designer dropped actual actors in the level which instantly die, as opposed to hand-placing actual corpse objects? Sorry to be veering this towards general ponderings of the workings of Doom code.
Gez
 
 
Posts: 17946
Joined: Fri Jul 06, 2007 3:22 pm

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Gez »

Crowley wrote:One more thought that came to me: if it is a performance issue, why use timer in the first place since it does in no way directly correspond to the workload placed by the amount of corpses, while limiting the amount does? In the 80 seconds it takes for a corpse to disappear, the player could kill twenty more actors or zero, and the program wouldn't know.

Intriguing. Sounds like I might have been missing out on something the first times I played Strife in DOS. However, since the timer is tied to the death event, wouldn't the pre-placed corpses only vanish if the level designer dropped actual actors in the level which instantly die, as opposed to hand-placing actual corpse objects? Sorry to be veering this towards general ponderings of the workings of Doom code.
There is no timer mechanism. All actors have their state updated every tic based on which state they are in, how many tics it's supposed to last, and how many tics they've been in that state already. If it's time for a change, they change. Having an actor that disappears after 1400 tics consumes no more resources than one that remains forever.

However, once the actor does disappear, then it frees up some resources.

Also, the countdown is not tied to the death event since there is no real countdown. It's just that their death state was finite (instead of infinite). For the decoration corpses, their spawn state is the acolyte/peasant's death state already.

Note that Hexen had a mechanism to deal with excess corpses too, but one that makes more sense than just having long but finite death states. Corpses are queued to list of corpses, and when there are too many of them (as defined by the maximum size of the queue), the oldest are removed. This way, corpses can stay forever if you're not killing any more monster.
User avatar
Enjay
 
 
Posts: 27087
Joined: Tue Jul 15, 2003 4:58 pm
Location: Scotland
Contact:

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Enjay »

I could be wrong, it has already been mentioned that we cannot read the minds of the devs, but I'd be surprised if performance was a huge consideration for the disappearing corpses. The reason I say that is we are not talking about that many corpses and, by the time Strife came out, the base-line for computer performance had increased over what was available when Doom came out - which could have just as many corpses. Mind you, Hexen has its corpse queue, so maybe.

It could well be a style choice for the reasons that Crowley suggested and, at the time, it wasn't unusual to have games where the corpses faded/ disappeared (in fact, it is still common), so the corpses fading in front of the player wouldn't be that unusual. The mere fact that they go to a gib frame before disappearing shows that the devs had considered the player seeing the corpse vanish. Against that, however, is the fact players being familiar with corpse vanishing in games was primarily driven by performance issues in the first place. I do remember a friend of mine making a comment back in '94 about how cool it was in Doom that the bodies didn't disappear.

Regardless of the devs reasons for doing it, the decision does seem like it was a last minute one, with a rushed implementation demonstrated by the map-placed corpses vanishing (something that I confess that I had never noticed). Personally, I prefer the corpses to remain. IMO, it looks better and, as PDF said, they act as a marker for areas that you have already visited.

Aesthetically, and logically, I can accept corpses lying around in strife. This is not a functional society. Despite the way "The Order" seem to be ruling the planet, I can accept that in the crazy, mixed up, post-comet world that bodies would just be left to moulder in the streets. Conversely, I can also accept that corpses from the likes of the acolytes might fade away and vanish due to accelerated rotting because of them effectively being a sort of host for part of the alien consciousness. However, the clumsy implementation of the "feature" implies that either a mistake was made with other corpses or that it was not the intention to imply anything about the nature of the acolytes by the corpse fading.

Bottom line, I prefer permanent corpses. :P
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49234
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Graf Zahl »

Enjay wrote: Bottom line, I prefer permanent corpses. :P

:yup:
Crowley
Posts: 15
Joined: Fri Feb 27, 2009 1:54 pm

Re: [r1454] Strife: code missing from acolyte deaths?

Post by Crowley »

Yeah, you've got me converted to permanent corpses. I think I'll go and change the gibs from Xdeath to be permanent as well now, as they seem to be in other Doom-engine games.
Post Reply

Return to “Closed Bugs [GZDoom]”