[r1454] Strife: code missing from acolyte deaths?

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 a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is OFF
Smilies are ON

Topic review
   

Expand view Topic review: [r1454] Strife: code missing from acolyte deaths?

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

by Crowley » Mon Mar 02, 2009 5:56 am

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.

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

by Graf Zahl » Mon Mar 02, 2009 5:31 am

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

:yup:

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

by Enjay » Mon Mar 02, 2009 4:59 am

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

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

by Gez » Mon Mar 02, 2009 4:50 am

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.

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

by Crowley » Mon Mar 02, 2009 3:26 am

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.

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

by Graf Zahl » Mon Mar 02, 2009 3:15 am

... 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.

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

by Crowley » Mon Mar 02, 2009 3:01 am

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.

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

by Graf Zahl » Mon Mar 02, 2009 2:52 am

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.

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

by HotWax » Mon Mar 02, 2009 12:20 am

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)

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

by Project Shadowcat » Sun Mar 01, 2009 5:11 pm

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?"

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

by Graf Zahl » Sun Mar 01, 2009 3:33 pm

I'll probably fix all of Strife's corpses to stay - but first I'll have to check all states.

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

by Gez » Sun Mar 01, 2009 3:22 pm

What about Acolyte XDeath and StrifeHumanoid Disintegrate?

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

by Graf Zahl » Sun Mar 01, 2009 3:10 pm

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.

[r1454] Strife: code missing from acolyte deaths?

by Crowley » Sun Mar 01, 2009 12:52 pm

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

Top