View Issue Details

IDProjectCategoryView StatusLast Update
0003394The Dark ModSoundpublic04.05.2013 16:29
ReporterSpringheel Assigned Tograyman  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status resolvedResolutionfixed 
Product VersionTDM 2.00 
Target VersionTDM 2.00Fixed in VersionTDM 2.00 
Summary0003394: Ragdoll AI not propagating sounds properly
DescriptionI didn't think ragdoll AI impact sounds were propagating to AI at all, but apparently the ones that are spawned at run time are.

What is the difference?

atdm:ai_base has the following line:

"sprS_bounce" "yell"

But the ragdoll AI entities don't inherit ai_base. So where are they getting a propagated sound from?
TagsNo tags attached.

Relationships

related to 0002953 resolvedSpringheel Add _Propogated_ material-specific bounce sounds to ragdolls 
related to 0003393 resolvedgrayman TDM 2.00 crashes Alberic's Curse 

Activities

grayman

grayman

04.05.2013 02:36

viewer   ~0005363

Last edited: 04.05.2013 02:37

Ragdolls dropping on a stone floor at map start propagate this sound:

bounce_medium_hard_on_hard

If I shoulder, then drop, a ragdoll skeleton, or a dead AI, the same sound propagates.

I verified that a nearby AI hears the sounds of the dropped bodies, and is alerted.

Please test some more and see if you can find a specific instance of an AI not getting alerted.

Springheel

Springheel

04.05.2013 02:46

administrator   ~0005364

I just made a little testmap with two citywatch. Pickup the blackjack on your left, KO the first citywatch, and then drop him behind the second one. Can you get him to react? He pays no attention when I try it.
Springheel

Springheel

04.05.2013 02:47

administrator  

victim.map (6,630 bytes)   
Version 2
// entity 0
{
"classname" "worldspawn"
"editor_drLastCameraPos" "-37.1318 -61.33 67.6615"
"editor_drLastCameraAngle" "-26.4 87.3 0"
"editor_drMapPos1" "1738.55 1171.14 -520.531"
"editor_drMapAngle1" "14.7001 87.8977 0"
"editor_drMapPos2" "414.798 255.441 -264.933"
"editor_drMapAngle2" "2.10002 84.5976 0"
"editor_drMapPos3" "-749.97 -1606.21 -470.066"
"editor_drMapAngle3" "-3.29998 6.59757 0"
"editor_drMapPos4" "1014.05 -953.679 -556.857"
"editor_drMapAngle4" "-10.2 355.498 0"
"editor_drMapPos5" "987.599 3513.79 -319.877"
"editor_drMapAngle5" "-61.1999 172.198 0"
"editor_drMapPos6" "-1032.5 -2840 739.5"
"editor_drMapAngle6" "-77.0999 175.798 0"
"editor_drMapPos7" "952.822 285.005 1366.04"
"editor_drMapAngle7" "-74.8 149.373 0"
"editor_drMapPos8" "976 424 320"
"editor_drMapAngle8" "-3 15.3467 0"
"editor_drMapPos9" "409.146 547.464 392.83"
"editor_drMapAngle9" "-16.8 284.947 0"
// primitive 0
{
brushDef3
{
( 0 0 1 -200 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.375 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.375 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.375 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 0 0 1 -192 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 1 0 -200 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 -64 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 -192 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 0 0 1 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 15.9375 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 1 0 -192 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 -72 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 -64 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 0 1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.25 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 -72 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.25 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.25 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 1 64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 0 0 1 -192 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 -64 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 -72 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 -192 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 1 0 64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
// primitive 5
{
brushDef3
{
( 0 0 1 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 1 0 -192 ) ( ( 0.0078125 0 15.9375 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 0 -1 -64 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 15.9375 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 0 -1 0 -64 ) ( ( 0.0078125 0 0.0625 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( -1 0 0 -200 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
( 1 0 0 192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0.3125 ) ) "textures/darkmod/paint_paper/wallpaper_fancy_gold" 0 0 0
}
}
}
// entity 1
{
"classname" "info_player_start"
"name" "info_player_start_1"
"angle" "90"
"origin" "-72 -40 -64"
}
// entity 2
{
"classname" "light_fireflames_wide"
"name" "light_fireflames_wide_1"
"light_center" "0 0 2"
"light_radius" "200 200 200"
"origin" "-96 136 64"
}
// entity 3
{
"classname" "atdm:ai_citywatch"
"name" "victim"
"origin" "-28.5602 165.619 -64"
"rotation" "0 1 0 -1 0 0 0 0 1"
}
// entity 4
{
"classname" "func_static"
"name" "func_static_19"
"model" "models/darkmod/mechanical/switches/switch_flip_backplate.ase"
"origin" "26 55.375 6.625"
"sr_class_1" "R"
"sr_effect_1_1" "effect_kill"
"sr_effect_1_1_arg1" "victim"
"sr_state_1" "1"
"sr_type_1" "STIM_TRIGGER"
}
// entity 5
{
"classname" "atdm:switch_flip"
"name" "atdm_switch_flip_1"
"origin" "26 55.625 6.625"
"rotate" "0 0 165"
"target0" "func_static_19"
}
// entity 6
{
"classname" "atdm:ai_citywatch"
"name" "atdm_ai_citywatch_1"
"origin" "-79.5602 57.6192 -29"
"rotation" "0 1 0 -1 0 0 0 0 1"
"def_head" "atdm:ai_head01_commoner_old"
}
// entity 7
{
"classname" "atdm:weapon_blackjack"
"name" "atdm_weapon_blackjack_1"
"origin" "-112 -26 -50"
}
victim.map (6,630 bytes)   
grayman

grayman

04.05.2013 04:22

viewer   ~0005365

Last edited: 04.05.2013 04:24

I can't reproduce what I swear I saw earlier.

During sound propagation, there's a check to see if the listener cares about who made the sound.

In the case of an inanimate object, everyone w/in range hears it and reacts. This is the case for a ragdoll that drops at map start or is unshouldered near an AI.

In the case of unshouldering an AI and dropping it near another AI on the same team, there are propagation flags that need to be set on the propagating sound so the right listeners can react.

Propagation sounds take the form:

prop_to_same (default false)
prop_to_friend (default false)
prop_to_neutral (default false)
prop_to_enemy (default true)

If you look at sprGS_yell in tdm_propagated_sounds.def, you see that it has

"prop_to_friend" "1"

This lets friends hear calls for help, etc.

bounce_medium_hard_on_hard, the sound a body makes when it hits the floor, has none of these flags set, so the defaults keep friendly AI from hearing the sound.

I gave it a "prop_to_friend" "1" and the sound now gets through to a friendly AI, but his alert level doesn't go up, so something else is getting in the way.

I'll continue work on this tomorrow.

grayman

grayman

04.05.2013 14:51

viewer   ~0005366

The listening AI doesn't get alerted because an enemy didn't make the "hit the floor" sound. The sound was made by the falling body, who is a friend.

An AI can hear a friend's call for help because it's an AI->AI messaging system that sets up the alert.

A falling body sound isn't part of the messaging system, so it relies on who made the sound. Since we don't want AI reacting to friendly sounds in general, it seems that a falling body sound has to become an exception. I'm going to think about that as a solution.
grayman

grayman

04.05.2013 16:29

viewer   ~0005367

The propagated sound that an AI makes when he hits the ground is SprGS_bounce_medium_hard_on_{soft,hard}. Both sounds need this spawnarg so a nearby AI can hear the sound:

"prop_to_friend" "1"

Also, at the spots where an AI’s fall to the ground can be attributed to the player (kill, KO by blackjack, KO by gas, unshouldered), that fact needs to be noted. When the sound is checked for “who’s responsible”, the player is now known to be the cause.

These two changes allow “ragdoll AI” to propagate their “hits the ground” sound.

A “ragdoll AI” is different than a “ragdoll”. The latter are not actors or AI, and when they hit the ground, they’re considered inanimate objects, which propagate the sound to all AI.

Also changed a blood splat thrown by weapon damage to not be painted on surfaces farther away than 64. An arrow to the head was generating a blood splat across the room, which didn’t look natural.

Rev. 5750:

AI.cpp
Game_local.cpp
Grabber.cpp

Rev. 13443:

tdm_propagated_sounds.def

Issue History

Date Modified Username Field Change
04.05.2013 01:29 Springheel New Issue
04.05.2013 01:30 Springheel Relationship added related to 0002953
04.05.2013 01:30 Springheel Relationship added related to 0003393
04.05.2013 01:31 Springheel Summary Ragdoll AI not propogating properly => Ragdoll AI not propogating sounds properly
04.05.2013 02:36 grayman Note Added: 0005363
04.05.2013 02:36 grayman Note Edited: 0005363
04.05.2013 02:37 grayman Note Edited: 0005363
04.05.2013 02:46 Springheel Note Added: 0005364
04.05.2013 02:47 Springheel File Added: victim.map
04.05.2013 04:22 grayman Note Added: 0005365
04.05.2013 04:24 grayman Note Edited: 0005365
04.05.2013 14:51 grayman Note Added: 0005366
04.05.2013 14:51 grayman Assigned To => grayman
04.05.2013 14:51 grayman Status new => assigned
04.05.2013 16:29 grayman Note Added: 0005367
04.05.2013 16:29 grayman Status assigned => resolved
04.05.2013 16:29 grayman Resolution open => fixed
04.05.2013 16:29 grayman Product Version => TDM 2.00
04.05.2013 16:29 grayman Fixed in Version => TDM 2.00
04.05.2013 16:29 grayman Target Version => TDM 2.00
04.05.2013 16:29 grayman Summary Ragdoll AI not propogating sounds properly => Ragdoll AI not propagating sounds properly
04.05.2013 16:29 grayman Description Updated