Project

General

Profile

Bug #2115

[HeXen] No sound from breaking a suit of armor

Added by vermil over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Defect
Target version:
Start date:
2015-10-07
% Done:

100%

Tags:

Description

The suit of Armour scenery mobj in HeXen is missing it's shattering sound when destroyed.

Tested in 1.15 and 2.0 unstable.

Associated revisions

Revision b9c71c05 (diff)
Added by skyjake over 5 years ago

Hexen|Fixed: Breaking a suit of armor makes no sound

Now using one of the chunks as the sound origin, so it won't stop
when original object is removed.

IssueID #2115

Revision ab888726 (diff)
Added by skyjake over 5 years ago

Hexen|Fixed: Breaking a suit of armor makes no sound

Now using one of the chunks as the sound origin, so it won't stop
when original object is removed.

IssueID #2115

History

#1 Updated by danij over 5 years ago

  • Category set to Defect
  • Status changed from New to In Progress
  • Assignee set to danij

#2 Updated by danij over 5 years ago

Interesting, the sound in question is being asked to play at the appropriate time, it's definition is found, the associated waveform data is located and cached successfully and a suitable playback channel is selected. However, for some reason it is still not audible, at least when trying to play it via FMOD. I wonder if SDL_mixer exhibits the same issue... (Edit: It does. Hmm)

#3 Updated by danij over 5 years ago

The plot thickens. Playing the same sound manually from the console works as expected: playsound SUITOFARMOR_BREAK

Clearly there is nothing wrong with the waveform itself. This must be a bug in Doomsday's sound system, somewhere...

#4 Updated by danij over 5 years ago

  • Tags changed from Hexen, emulation to Audio, Client

#5 Updated by danij over 5 years ago

Right, the issue here concerns the lifetime of the emitter the sound is asked to play from and whether or not sounds should be stopped when their emitter is destroyed. In this particular case, immediately after playing the SFX_SUITOFARMOR_BREAK sound using the suit of armor mobj as emitter, said emitter is destroyed.

Clearly there is need to continue playing sounds after the death of their emitter. Though perhaps not in all cases. I wonder if there has been any recent behavior/policy changes of this nature...

#6 Updated by danij over 5 years ago

  • Tags changed from Audio, Client to Audio, Client, emulation
  • Target version set to 1.15.5
  • % Done changed from 0 to 10

Deeper investigation reveals that while Doomsday is seemingly correct in stopping the sound immediately, at least when comparing behavior to the vanilla source release, this does not seem to correlate with the actual behavior of the original game executables. Naturally this calls into question the expected behavior and undermines the apparent correctness (in an emulation sense) of Doomsday's current sound management.

It is presently not straight forward to determine how best to address this disparity. More investigation - perhaps testing of the published game executables themselves - is needed in order to concretely define the expected behavior and from there determining the issue(s) in Doomsday. One could also see whether other source ports have already been down this road.

However, Doomsday already implements a dontstop flag for sounds which has been used on previous occasion in an attempt to address a similar issue with other sounds. For now it makes sense to apply this same behavior to Hexen's Suit of Armor, in lieu of a more proper, long-term fix.

#7 Updated by danij over 5 years ago

Looking at this again with fresh eyes it turns out that this has a much simpler cause: Doomsday is using the wrong mobj as the emitter, in this case, the soon-to-be-destroyed suit of armor rather than the last, newly-spawned armor chunk.

It appears A_PotteryExplode() has a similar oversight. I'll comb through the source and look for any further, similar issues...

#8 Updated by skyjake over 5 years ago

danij wrote:

Looking at this again with fresh eyes it turns out that this has a much simpler cause: Doomsday is using the wrong mobj as the emitter, in this case, the soon-to-be-destroyed suit of armor rather than the last, newly-spawned armor chunk.

Did you have a fix for this where the appropriate emitter is used? November 1st is here soon, if it's a trivial fix it would be good to have it in the 1.15.5 build.

#9 Updated by skyjake over 5 years ago

  • Tags changed from Audio, Client, emulation to Audio, Hexen, Gameplay
  • Subject changed from [HeXen] Suit of armour missing sound to [HeXen] Suit of armor breaking and pottery explode sounds missing
  • Assignee changed from danij to skyjake

#10 Updated by skyjake over 5 years ago

  • Subject changed from [HeXen] Suit of armor breaking and pottery explode sounds missing to [HeXen] No sound from breaking a suit of armor

I'm applying a patch for 1.15.5 where the suit of armor and pottery explode sounds are use one of the chunks/bits as the sound origin.

#11 Updated by skyjake over 5 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 10 to 100

Also available in: Atom PDF