Jump to content

cake

cake

Member Since 19 Apr 2022
OFFLINE Last Active May 20 2022 06:12 PM
-----

hitbox scoring order bug in silent 0.9.0

30 April 2022 - 09:42 AM

BUG DESCRIPTION
The head box is either completely or partially obstructed and cannot be hit in a variety of common game scenarios including:

-- Firing from close range while crouched or prone at a stationary, standing or walking target.

-- Firing while standing at a standing, stationary or walking target at mouth height or below.

-- Firing from lower ground at a standing or walking, stationary target.

-- Firing from the rear at a forward or backward moving target either running or crouched

-- Firing at a target that has just landed from a jump

-- Firing at a target standing up from a crouch

-- Firing at a target getting up from prone

 

In the screenshots below you can see that body shots are scored when a reasonable player would expect a headshot in some of the scenarios described above. The boxes and bullet traces are generated by using g_debugBullets 3 on a test server.

 

Attached File  silent-bug-0-crouching.jpg   32.95KB   0 downloads

 

Attached File  silent-bug-1-prone.jpg   17.56KB   0 downloads

 

Attached File  silent-bug-2-standing.jpg   20.8KB   0 downloads

 

Attached File  silent-bug-3-rear.jpg   30.95KB   0 downloads

 

Below you can see the hitboxes as rendered by version 0.9.0 with g_debugHitboxes 1 on a test server. It appears as though any shot that passes through the red torso box is always scored as a body hit even if it would otherwise hit the head.

 

Attached File  silent-bug-4-tempbox.jpg   33.3KB   0 downloads

 

 

AFFECTED VERSIONS AND POSSIBLE ORIGIN
-- Silent 0.9.0 (with g_realbody 0)
-- Silent 0.5.1 and above (with g_realbody 1)

 

I have confirmed this bug is present on F|A server hc.clan-fa.com running silent 0.9.0 and using g_realbody 0. All other server running this version are likely to be affected.

 

The bug seems to originate with the introduction of the g_realbody cvar for a tighter body hitbox in silent 0.5.1 around March 2012. With g_realbody 1 the new torso box always overlaps and sometimes covers the headbox from a variety of angles.

 

Bullets that pass through the torso box are always scored as body hits even if the bullet end point would otherwise be in the headbox and the bullet path does not intersect with the visible player model. It seems like the scoring order/priority during hit testing is wrong.

 

There are no issues of this type with headshot scoring on servers using g_realbody 0 up through release 0.8.2. The 0.9.0 release in late 2015 introduces the same bug regardless of g_realbody setting.

 

A line in the changelog for 0.9.0 hints at the cause: "The arm hit detection was not working correctly from the side shots. Fixed by adding additional temporary box for the torso." It appears that this extra box may not be as temporary as intended.

 

 

BUG LOCATION

I don't know how much this part of silent mod has deviated from the ETpub code it was built on top of but the bug is likely to be in the file g_combat.c in the G_Damage function somewhere around line 2000. The fix may be as simple as changing the sequence of a few conditional statements in the code to check the head box before any of the body boxes when hit testing.

 

 

MITIGATIONS
-- Server operators should consider downgrading to silent 0.8.2 until a patch is released.
-- Players who are aware of the bug should not prone or crouch in close combat, should avoid fights from an elevation below the enemy, should aim high on the head, and should not attack targets from the rear when headshots are critical.