Shot Attempts
Detecting and classifying which shots were onto exposed enemy players
Overview
Shot attempts is an advanced statistic that tells us how many times a player fired shots at exposed enemy players.
It directly factors into accuracy calculations.
The "exposed" constraint
There's the additional constraint that the opponent should be "hittable" (exposed enough) so that the shooter had a valid chance to hit them. If the target is fully boxed up, the shooter's bullet hitting their wall should not lower their accuracy.
Ray-sphere intersection checks are used to detect if a shot was fired at an opponent player, filtering out stray shots.
Approach
The key challenge is determining for each shot, whether it was an attempt onto an exposed enemy player, or not.
How do we know whether a shot was aimed at a player?
Case: The shot hits an enemy player
To start off with, if the shot actually hits an enemy player, then we know the shooter was trying to hit them, and that the target was exposed. So we can automatically classify the shot as a shot attempt.
Case: The shot does not hit anyone
The idea here is that if player A was trying to shoot player B, their shot should pass reasonably close to player B, even if they did not directly hit B.
The approach is to surround each opponent player on the map with a spherical hitbox of small radius (1-3m). The spherical hitbox is intentionally larger than the player so it almost always captures shots that pass very close by, detecting even poorly aimed shots.
We classify a shot as a shot attempt if the shot path intersects their sphere and terminates behind them.

If a shot does not intersect the spherical hitbox of any player, it is not a shot attempt.

Bullet Termination
Knowing the ending point of a shot is important.
We cannot consider every player along the direction of the shot.

Even if the infinitely extending shot ray intersects a player's sphere, if the shot terminated at a point closer to the shot origin, the player either was not the intended target or was not exposed.
This prevents players behind buildings, structures, and terrain from being considered as potential targets, causing the shot to be misclassified as a shot attempt.

Even if the shot intersects the player's sphere before the termination point, the position of the player is still further from the shot origin than the shot end.

If , the shot is classified as a shot attempt and dropped otherwise.
Casework
| Shot | Ray clips a hitbox? | Target closer than bullet end? | Verdict |
|---|---|---|---|
| Hits an opponent | - | - | Attempt |
| Misses | No | - | Stray shot - dropped |
| Misses | Yes | No, something blocked it | Blocked - dropped |
| Misses | Yes | Yes | Attempt |
Interactive Examples
The demo below replays a burst of shots from a real tournament match. Press play to watch them fire — each shot pauses on its geometry so you can see the shot ray, the target's spherical hitbox, and the running accuracy. Drag to orbit, scroll to zoom, and use the timeline to step between individual shots.
For the full-screen version with extra controls — gridlines, labels, occluded players, and adjustable range — open the interactive lab.