dhewm3
dhewm3 copied to clipboard
[Bug] Missing Sounds
In Resurrection of Evil, if I shoot any breakable glass windows, the sound effect of the bullet impact seems to be missing (plays the default beep noise in its place). The issue is not replicated in regular Doom 3 (plays as it should). This is also with no mods or anything installed. I think the issue is also specifically 'shooting' (not with flashlight or fists), I guess for whatever reason, the bullet_impact_glass sound can't be played or is being looked for in an incorrect location?
I have tested this with both Steam and a fully updated Retail 1.3.1 release, which unsurprisingly, didn't make a difference. Just thought it was worth a try.
I haven't tested whether this can be reproduced in Doom 3 using the Source Port. But I can only imagine that someone else might have pointed this out if it did, since while not significant, it is very easy to accidentally (or intentionally) do while playing the game.
I have also tested this with EAX enabled and disabled, with no difference. I even tried using the default .cfg file, just in case my custom one might have caused any issues, but still to no avail. The specific issue is occurring on map 'erebus4'. if that matters. I'm guessing it happens consistently throughout the game, this is just the first time I discovered it.
I use Windows 7 (I know it's old :P). Thought I might mention that, because for all I know, that's potentially the problem.
Thank you for a fantastic Source Port, it really is the best way to play the game. This is but a minor problem, but one that I think would be great if addressed. Whether it is something that is on my end, or just a small little oversight that most wouldn't even bother to notice.
Can you tell me where to find such a window (what map, where in that map)? Knowing that would help me to quickly (try to) reproduce the problem.
And it'd be nice if you could test if it behaves the same with the original Doom3.exe on Steam.
Lastly, please reproduce the problem, then exit the game and then find Documents/My Games/dhewm3/dhewm3log.txt and attach that file to a post here.
This will require the latest release (1.5.2 from June), so in case you're using an older version of dhewm3, update to 1.5.2 first.
That's basically a log of whatever is printed to the Doom3 console, so if there are warnings about missing sound files they should turn up in dhewm3log.txt.
Thanks in advance!
Thanks for the reply,
Will do. Forgot to mention, I am using the latest version of dhewm3. As I said before, the map file name is 'erebus4' which I think is 'Erebus Control' in-game or something (will double-check). All I can say is that they're the first breakable windows you encounter in that specific map, you can noclip to them in like 10 seconds from the beginning of the map. I haven't played any further to test if it happens later or earlier (if breakable windows even appear any earlier in RoE). As mentioned previously, I have tested the problem with both a Retail 1.3.1 release with a 4GB patch applied and a completely unmodified Steam release. Unless you mean testing the Steam release without dhewm3? I'll try that too.
I'll send you a log and some screenshots of the specific windows I encountered it with shortly. :)
EDIT: I tested the Steam release not using dhewm3 and it works as intended. I can only replicate it using dhewm3. I tried clearing the dhewm3 folder in "Documents/My Games" in hopes that a clean install would fix the problem, but to no avail. Full map name is Erebus - Level 4 / Erebus Control. Confirmation that this only occurs when shooting the windows, not punching or whacking with flashlight. I could also test this using Windows 11, if you think that would help? I'm guessing it shouldn't make a difference though?
Here is the log and some screenshots of the windows (and a visual guide on getting there. All you really have to do is just noclip through the intended path from the beginning of the map and you'll get there really quick.)
dhewm3log.txt (Using unmodified Steam Release)
This is the first window you'll encounter.
This is another window next to it, down the hall. Has the same issue.
GUIDE:
Start of the map.
Continue down intended path.
Through red tunnel (intended path).
Directly behind this door is the first window with the issue.
I hope all this helps! :D
Thanks, that helped a lot! Sorry, I somehow missed that you mentioned erebus4 in the original post..
I think I can reproduce it, even on Linux. I hear the shattering glass, but also a beep sound. I found it easiest to hear with the pistol, the machine gun seems to be louder and thus makes it harder to hear the beep. Will have to investigate..
It's quite possible that this is a general bug in Doom3 and only isn't noticeable with original Doom3.exe because it might have this beep sound disabled by default (s_playDefaultSound might be 0 there).
It was already 1 by default in the Doom3 GPL source as released by id, but maybe it was different in their retail builds, not sure - you could check the value of that CVar in your Steam Doom3.exe.
(I think I remember running into a similar problem before, where Vanilla Doom3.exe didn't beep and dhewm3 did, because of a missing sound)
When shooting at the glass, a message WARNING: Couldn't load sound '_emptyname.wav' using default is printed.
So I debugged this with a breakpoint at idSoundSample::Load() (which prints that message), and the backtrace is like:
idSoundSample::Load() at neo/sound/snd_cache.cpp:441 0x5555557762ba
idSoundCache::FindSound() at neo/sound/snd_cache.cpp:124 0x555555775512
idSoundShader::ParseShader() at neo/sound/snd_shader.cpp:355 0x555555791731
idSoundShader::Parse() at neo/sound/snd_shader.cpp:140 0x5555557907f5
idDeclLocal::ParseLocal() at neo/framework/DeclManager.cpp:2,207 0x5555556956e4
idDeclManagerLocal::FindType() at neo/framework/DeclManager.cpp:1,145 0x555555691a01
idDeclManagerLocal::FindSound() at neo/framework/DeclManager.cpp:1,559 0x5555556937a6
idBrittleFracture::ProjectDecal() at neo/d3xp/BrittleFracture.cpp:732 0x7fffd65312c9
idBrittleFracture::AddDamageEffect() at neo/d3xp/BrittleFracture.cpp:1,032 0x7fffd6532c27
idProjectile::Collide() at neo/d3xp/Projectile.cpp:644 0x7fffd65e64f4
idPhysics_RigidBody::CollisionImpulse() at neo/d3xp/physics/Physics_RigidBody.cpp:165 0x7fffd671da48
idPhysics_RigidBody::Evaluate() at neo/d3xp/physics/Physics_RigidBody.cpp:915 0x7fffd6721346
idEntity::RunPhysics() at neo/d3xp/Entity.cpp:2,671 0x7fffd651bed8
idProjectile::Think() at neo/d3xp/Projectile.cpp:491 0x7fffd65e57d7
idGameLocal::RunTimeGroup2() at neo/d3xp/Game_local.cpp:2,440 0x7fffd65491b8
idGameLocal::RunFrame() at neo/d3xp/Game_local.cpp:2,588 0x7fffd65499db
idSessionLocal::RunGameTic() at neo/framework/Session.cpp:2,887 0x5555556cec83
idSessionLocal::Frame() at neo/framework/Session.cpp:2,833 0x5555556ce913
idCommonLocal::Frame() at neo/framework/Common.cpp:2,439 0x555555673dee
main() at neo/sys/linux/main.cpp:452 0x5555557f9546
(looks like it indeed is what we're looking for)
The interesting function here is idBrittleFracture::ProjectDecal() with:
if ( damageDefName ) {
damageDef = gameLocal.FindEntityDef( damageDefName, false );
if ( damageDef ) {
sndShader = declManager->FindSound( damageDef->dict.GetString( "snd_shatter", "" ) );
}
}
damageDefName is "damage_bullet_pistol" (it's passed as an argument to that function), the damageDef is from def/weapon_pistol.def.
That file (with entityDef damage_bullet_pistol) exists in both base/ and d3xp/, but neither version has an entry for "snd_shatter", so amageDef->dict.GetString( "snd_shatter", "" ) returns "" and thus declManager->FindSound() will return the default sound (beep).
weapon_flashlight and weapon_fists do have "snd_shatter" defined, so the issue doesn't occur when smashing the window with them.
I'm glad that I could help! Yes, that's exactly right. The beep plays alongside the shattering glass sound, sorry if I made it seem like it didn't.
I recognised the file name in that error message (I've done a bunch of digging around, while modding). Would I be correct in guessing that file is the placeholder 'beep' noise? Some of that info above makes sense to me with my limited knowledge. ;P
I have definitely encountered the beep noise in Doom3.exe. However that was using the 'Overthinked' mod and only when EAX was enabled. So I can confirm that the beep noise may still play if there is a missing sound, this was using the Retail 1.3.1 release, not Steam.
I also first discovered the glass breaking problem while playing a modded Resurrection of Evil using dhewm3, in which the beep noise could be heard with the flashlight and fists too. My guess is that the custom .def files that I'm using may have the same problem as the rest of the weapons.
Is this an easy fix? Like just adding the missing lines back into weapon_pistol.def, weapon_shotgun.def, weapon_machinegun.def, etc. Also, does that mean that this problem occurs in Doom 3 as well (using dhewm3), since most of the .defs are just taken from the base folder?
Thanks in advance!
this an easy fix? Like just adding the missing lines back into weapon_pistol.def, weapon_shotgun.def, weapon_machinegun.def, etc.
In theory that would be an easy fix, in practice dhewm3 so far doesn't ship any own game data (=> only uses the paks from Doom3 1.3.1), so replacing the weapon_*.def files isn't really an option.. I might add a special case to the code to completely ignore a missing "snd_shatter" instead of playing the default sound, not sure yet.
Also, does that mean that this problem occurs in Doom 3 as well (using dhewm3), since most of the .defs are just taken from the base folder?
Yes, most probably - but I don't know if the base game has any breakable glass where this could happen (and probably RoE doesn't have many other places either)? Maybe in custom maps
Didn't really think about that, that makes sense. I'm might mess around to see if it works, just for my sake. :P
I recently just played through Doom 3, not using dhewm3 because of its incompatibility with the 'Overthinked' mod and there is definitely plenty of breakable glass in Doom 3 alone. I just tested Doom 3 (not RoE) using dhewm3 and the beep problem does still occur. Might as well change the thread name to reflect that. ;P
EDIT: Just out of curiosity, I tried adding seta s_playDefaultSound "1" to the base DoomConfig.cfg and autoexec.cfg to ensure the beep sound will play if it fails to play/find the correct sound. It still doesn't beep when shooting breakable glass. Does that mean that the Doom3 GPL source as released by id doesn't have the "snd_shatter" defined, but it is defined in the retail release? Because after digging through all of the weapon .def files, all of them point to their correct paths in 'weapons.sndshd' which points to the correct folders containing the sounds.
The .def files are the same for Doom3 1.3.1 and dhewm3 - after all, we're using the unmodified original game data. No idea why original Doom3 doesn't beep, maybe they s_playDefaultSound didn't work at all in the 1.3.1 retail release?
Because after digging through all of the weapon .def files, all of them point to their correct paths in 'weapons.sndshd' which points to the correct folders containing the sounds.
Not sure what you mean; def/weapon_pistol.def has entityDef damage_bullet_pistol (around line 153), but that entityDef does not have a "snd_shatter" entry (that could reference e.g. "bullet_impact_glass" from weapons.sndshd)
Yeah, you're right. Initially, I was looking for a specific 'snd_shatter' line, which I couldn't find in any weapon .def. All of the 'guns' do reference 'snd_glass' in the 'entityDef projectile_bullet_' section. However when I tried copying the line/s from 'entityDef projectile_bullet_' into the 'entityDef damage_bullet_' section, the glass still beeps. So I figured that I was looking at the wrong thing. I guess that I wasn't and it still just beeps for some reason?
I have definitely heard the beep in the retail release, but that was using a mod which might have coded the functionality back in? (I doubt it thought) I'll mess around with some files to induce a beep in an unmodified retail release to see if it actually plays.
A fix would be to add a line like
"snd_shatter" "bullet_impact_glass"
to the entityDef damage_bullet_pistol { ... } in weapon_pistol.def (maybe below "snd_flesh" "bullet_impact_flesh"); similar for the other weapons.
I can try that, but the flashlight and fists do not have a specific '"snd_shatter" line either. They go under the name "snd_glass" but they do both have them specified under the 'entityDef damage_' section unlike the rest of the weapons which are under 'entityDef projectile_'.
I have also tested removing sounds in an unmodified 1.3.1 retail release and there is no beep if there is a missing sound. Even with s_playDefaultSound "1". However, if you type it in the console, it does reference that it's supposed to. I guess the functionality was just never programmed in though?

EDIT: It does beep, but only if EAX is enabled. So the cvar s_playDefaultSound only functions with EAX enabled.
EDIT 2: I just tried your suggestion and sure enough, it does fix the problem. I just find that really strange because there is no specific 'snd_shatter' line in the flashlight or fists .def files. Is there a reason the other weapon .def files need this additional line?
EDIT 3: As I mentioned in a previous post, I first discovered the issue using custom weapon .def files. Out of curiosity I checked through my custom flashlight.def and the original. The only difference was this:

I don't understand how altering the damage value would cause the beeping to occur. It's not the end of the world, because adding the additional 'snd_shatter' line and copying the 'snd_glass' line definition ("monster_zombie_fat_wrench") fixes it. I just think it's a strange oddity.
EDIT 4: Something that seemed like a no-brainer to test, should have tried it ages ago :P. Shooting at breakable glass in Doom3.exe with EAX enabled does beep. So it is indeed a bug that can be reproduced in original Doom 3, but only when EAX is on.
def/weapon_fists.def has entityDef damage_fists { ... } at the end of the file, which contains the line
"snd_shatter" "melee_impact_glass"
damage_fists should be the fist equivalent of damage_bullet_pistol?
I'm completely confused. Do we somehow have differing .def files despite mine being the original retail ones? This is the 'entityDef damage_fists' section in my 'weapon_fists.def'
There is no line referencing 'snd_shatter' at all. The closest I can see is 'snd_glass', which I think might be the sound that is called when attacking/shooting unbreakable glass materials.
Also, I'm not 100% sure what you are asking in that last line. Are you just asking if that is the equivalent section? Then yeah, I'm pretty sure.
This is all speculation, and maybe you already know all of this. But from what I can gather; I think the reason why the 'snd_whatever' is put into 'entityDef damage_' for the fists, flashlight and presumably the chainsaw too is because they are melee weapons, so there is no other section to place them. However all the rest have the additional section 'entityDef projectile_', plus some more like 'entityDef splash_' for any weapons with splash damage.
In 'weapon_pistol.def', at line 174 and 175, it says:
// the flesh impact is used in the damage so players hear it on their body // the other impacts are played on detonation
Which is why only ("snd_flesh" "bullet_impact_flesh") is referenced in 'entityDef damage_bullet_pistol' because it is only required for when 'you' get shot. The other line obviously referencing when you shoot at stuff. Later down in 'entityDef projectile_bullet_pistol', at line 225, it says:
// played on collision with non-damagable entities
Then it specifies the rest of the 'snd_whatevers'
Which is why I get the idea that 'snd_glass' is intended for unbreakable glass for example.
The breakable glass is technically 'damagable' which is why it beeps? Which is where 'snd_shatter' is required. Except that the flashlight and fists don't beep, because 'reasons'.
I'm not sure if any of that crap I just wrote is helpful or at the very least interesting to you. Hopefully it was! :P
not 100% sure when what sound is played (but obviously some kind of shattering glass sound is played in our cases, in addition to the beep, maybe it's from the glass func_breakable or whatever it is, while the sounds we're looking at here are from the pistol), don't have time to figure it out in detail.
my weapon_fists.def definitely contains the snd_shatter line - note that it's from pak005.pk4, so they replaced that file with an update - probably you're looking at the version from pak000.pk4?
Oh damn... You're 100% correct, I was looking at the one in pak000.pk4. I didn't even think to check if there was an updated one. Everything makes so much more sense now. Haha. :P
Not sure whether to create a new thread or just continue in this one (could always rename it...again. :P)
I've discovered another missing sound. When you put on the Envirosuit Helmet in Erebus 5, it fails to find the sound for equipping it and plays the familiar 'beep'. This can be reproduced in both an unmodified Doom3.exe and dhewm3.exe (Both Steam and Retail). So again, another sound bug brought over from the original, I guess. Here is the log file:
Important part obviously being 'WARNING: Couldn't load sound 'guisounds_powerup.wav' using default'
EDIT: Another missing sound! I swear I'm not even looking for them. :P Shortly after you get the Envirosuit Helmet, 'Maggots' come out of the sewerage. One of their attack sounds seems to be missing (Pouncing attack). Again, this can also be reproduced in both an unmodified Doom3.exe and dhewm3.exe. I haven't tested whether Doom 3 has the same issue, this is all in Resurrection of Evil.
'These guys'
Log file: dhewm3log.txt
Important part: WARNING: Couldn't load sound 'monster_demon_maggot_melee_hit.wav' using default
I have now finished 'Resurrection of Evil' and can confirm that I did not encounter any other sound issues other than the ones mentioned above.
However, I started up 'The Lost Mission' in dhewm3.exe and there are sounds missing right out of the gate (beeps included), with many more 'WARNINGS' appearing in the console/log than running it using Doom3.exe. Is this a known issue? Like is 'The Lost Mission' not as compatible using dhewm3 instead of just regular Doom 3? Here are the log files literally right after the first cutscene:
Doom 3 Log:
'12' Warnings
dhewm3 Log:
dhewm3log.txt '53' Warnings
If these are just false positives and the sounds aren't actually missing or something, let me know. I can always just disable the beep noise. I would definitely prefer to play it using dhewm3 if there aren't too many issues.
Thanks in advance!
The Lost Mission at least used to have some missing sounds (see also https://github.com/dhewm/dhewm3/issues/265#issuecomment-571349555 and following); Update 1.2 was supposed to fix this (https://www.moddb.com/mods/the-lost-mission/news/new-release-with-several-fixes says "Added missing sounds (hopefully all of them)."). Are you using at least 1.2 of The Lost Mission mod (the current version is 1.3 and should also contain those fixes)?
I downloaded 'The Lost Mission' mod this year from the Mod DB page, so I can only imagine it's the latest version if the last release was back in 2020. The missing sounds only occur when using dhewm3. I also tested Doom3.exe using EAX with 's_playDefaultSound 1'. But the missing sounds and additional 'WARNINGS' could not be reproduced, as I mentioned in my last post (See above logs for comparison). This is the first time there's been this much of a disparity between dhewm3 and Doom 3, in my experience. Every other sound issue I could reproduce in the original. I'm guessing 'The Lost Mission' can be completed from start to finish using dhewm3. I was just wondering how compatible dhewm3 is with 'The Lost Mission' as of right now, like in terms of other visual/audio bugs that might be present. I'm guessing I might have to unfortunately go back to Doom 3, just for the sake of compatibility, until further updates/bug fixes are made to dhewm3?
I'm not aware of any incompatibilities with The Lost Mission, the game DLL is based on the same source code and obviously it's the same game data..
If you can tell me some specific places in The Lost Mission where you get missing sounds that you don't get with original Doom3, I'll look into this
As mentioned in my previous post a few days ago, there seems to be missing sounds as soon as the game begins after the first cutscene. A beep occurs once every 30 seconds or so because it fails to play a looping background noise. I posted the console log in Doom 3 and uploaded the dhewm3 log file in that previous post, here they are again anyway. :)
The console log after the first cutscene using Doom3.exe with EAX on and 's_playDefaultSound 1':

dhewm 3 log file at the exact same point: dhewm3log.txt
oh sorry, was too tired :-/
I looked into missing sounds in RoE's Erebus5, and of course they were all asset bugs; not sure what to do about them I'll just post my notes here
WARNING: Couldn't load sound 'type.wav' using default
=> def/cinematic_erebus5.def:204, 205 and 206 use sound_* "type", should probably be "marscity_reception_type" (that one is used elsewhere in the script)
map_erebus5_cloud::artifact_scanner_beam1
apparently startSoundShader() or sth like that is called with name ""
=> it's from scripts/map_erebus5_cloud.script and has the line:
$scanner_beam1.startSoundShader ( "", SND_CHANNEL_VOICE ); // :: Xian
probably meant to stop the sound? (he probably should've used $scanner_beam1.stopSound(SND_CHANNEL_VOICE, 0) 0 (or 1) for netsync, unsure which one would be right)
=> maybe specialcase startSoundShader() to silently handle "" as "stop"? seems to be used like that in several d3xp scripts
guisounds_powerup.wav not found (I think when pickup up the enviro suit/helmet? probably supposed to play some generic powerup sound, which does not exist)
in the debugger I saw the following referenced
guisounds_Powerup
eventname Powerup
guis/hud.gui
this event was started from from C++ idPlayer::UpdatePowerupHud() (hud->HandleNamedEvent( "Powerup" );)
in guis/hud_powerup.pd:
onNamedEvent Powerup {
if ( "PowerupWin::visible" == 0 ) {
localSound "guisounds_Powerup" ;
set "PowerupWin::visible" "1" ;
transition "PowerupWin::rect" "135 435 0 64" "135 435 128 64" "200" ;
//transition "RadioWin::rect" "135 435 128 64" "146 400 128 64" "100" ;
}
}
=> but the sound shader `guisounds_Powerup" doesn't exist (should probably be in sound/gui.sndshd)
monster_demon_maggot_melee_hit.wav
=> from entityDef melee_maggotLeapAttack { in def/monster_demon_maggot.def (base game):
"snd_hit" "monster_demon_maggot_melee_hit"
should probably be using "monster_demon_imp_melee_hit" instead (like it does for entityDef melee_magRightClaw {)
(when loading next level)
"sound/levels/ereubs6/mach_2_5s.wav" "sound/map_erebus6.sndshd"
e6_mach_2_5s
=> just a typo in sound/map_erebus6.sndshd, should be "sound/levels/erebus6/mach_2_5s.wav"
Regarding the d3le (Lost Mission) missing sounds, I haven't actually tried it yet, but I looked at the game data (from lm_pak.pk4) and those sounds are indeed missing.
Take for example 'sound/_reissue/ambient_events/metallic_noises/heavy_water_pipes_01/hwpipe_06.wav' (and .._07 up to 09) - those are indeed referenced in ambient_events/metal/heavy_water_pipes { (sound/world_ambience.sndshd), but do not exist, neither as .wav nor as .ogg (Doom3 automatically falls back to blah.ogg if blah.wav doesn't exist).
hwpipe_01.ogg to hwpipe_05.ogg exist, but _06 and following don't.
So the only question is why Vanilla Doom3 doesn't complain about this (several maps, including le_enpro1.map, use "s_shader" "ambient_events/metal/heavy_water_pipes" so the shader indeed should be loaded, and the missing files should be detected and be complained about)
@HyperChicken01 could you please collect the missing sound warnings from d3le (Lost Mission) in the following issue: https://github.com/dhewm/dhewm3-sdk/issues/27 - might be helpful for the Lost Mission developers, so they can fix that (either by adding missing sounds or by not referencing them in shaders) in a future update :)
Thanks for going above and beyond for mentioning things that I didn't even notice in RoE. I can potentially fix the Envirosuit Helmet and the Maggot now, not sure about the other two things.
In regards to d3le, that is really strange that Vanilla Doom 3 doesn't mention the missing sounds, if they aren't there. Something that the d3le mod developer coded in to ignore certain missing sounds? Even digging through original Doom 3 sounds, there were duplicates occasionally, despite being named numerically. So maybe the other 'hwpipe_XX.wav' were just the same sound, so deemed unnecessary?
I can do that, happy to help! :)
Archvile's flame attack calls for .wavs that don't exist.
'monster_demon_archvile.sndshd'
sound/monsters/archvile/flameloop_01.wav sound/monsters/archvile/flameloop_02.wav sound/monsters/archvile/flameloop_03.wav