December 13, 2012

Aim acceleration in console shooters - Part 2: Results

Following the measurement procedure described in part 1 of this article, the aim acceleration characteristics of some popular FPS games on the Xbox 360 are now presented and discussed. The list of games is:

Call of Duty: Modern Warfare 2
Call of Duty: Black Ops
Battlefield 3
Halo: Combat Evolved
Halo 2
Halo 3
Halo: Reach
Halo 4
Rainbow Six: Vegas 2
Team Fortress 2
Quake Arena Arcade
Unreal Tournament 3

A few considerations that should help with interpreting the results:
  • The shooter begins in a stationary position. The first frame of the shooter's rotation is identified by the first observable reticle movement in the captured video data. As such, the experiments do not measure the input lag between controller and console or the response time of the video display.
  • Unless otherwise stated, the results presented are for a full speed rotation (full stick deflection) at typical look sensitivities, which means they illustrate the effect of aim smoothing on the shooter's ability to twitch rather than his ability to make fine aiming adjustments. As it turns out, almost all games tested do not use any aim smoothing for small stick deflections, so it should not have much impact on the shooter's ability to track the target after engaging it.
  • The estimates of rotation angle and rotation speed are good but not perfect. The estimation error for rotation angle (attributed mostly to my own errors in judgement) is a fraction of a degree under ideal circumstances, but this can increase when the shooter reaches a high rotation speed because of the motion blur in some games. What is important is the overall trend in rotation speed over time rather than any slight variations from frame to frame.
  • In FPS games it is quite common for the shooter to make short twitches of 45° or 90° when searching for or fixing on targets. It's much less common to see large sweeps of 180° or 360°. Accordingly, we should be most concerned with the aim acceleration behavior over the first quarter of a rotation than anything afterwards. On the other hand, it is still useful to look at more data, say a complete rotation or a full second of time, to gain an understanding of the particular aim smoothing algorithm being used.
  • For the most part, I think it's sufficient to look at rotation speed as a function of time in order to assess the aim smoothing behavior of a game. If you're insistent on quantifying acceleration, the slope of the rotation speed curve (2nd derivative of the rotation angle curve) yields acceleration in degrees per second squared.

Game Year Developer Frame rate Look sens range
Call of Duty: Modern Warfare 2 2009 Infinity Ward 60 fps 1-10

Despite the criticisms of the style of play it promotes and the skill required to play it, CoD is frequently praised for a fluid and responsive aiming system. The 60 fps frame rate, which few other FPS games on the Xbox 360 have been able to achieve, no doubt has something to do with this. What we can also see below is a straightforward aim smoothing algorithm - the shooter's turning speed increases linearly from zero to maximum speed over a span of just 0.2 seconds. According to the rotation angle plot (left), 0.2 seconds corresponds to a 27° turn on 2 sens or a 48° turn on 4 sens.

It's also instructive to see how CoD handles smaller analog stick deflections. This can be simulated by reducing the amplitude of the step voltage applied to the controller circuit. Shown below are the rotation angle and speed plots on 2 sens for various percentages of a full stick deflection. As can be seen, the slope of the speed curve (acceleration) is identical in all cases. In other words, CoD subjects the player to aim smoothing regardless of how fast they're attempting to turn, but the time window of the smoothing effect is naturally reduced for low rotation speeds such as when aiming.

Game Year Developer Frame rate Look sens range
Call of Duty: Black Ops 2010 Treyarch 60 fps 1-10

Comparing the Blops and MW2 results, it should be clear that nothing was changed with regards to aim acceleration between these two iterations of the CoD series. Note that there wasn't any special reason for testing on 3 and 5 sens rather than 2 and 4 sens.

Game Year Developer Frame rate Look sens range
Battlefield 3 2011 DICE 30 fps 1-33

Battlefield 3 is our first game that doesn't use any aim smoothing. It actually presents the feeling of gradual acceleration by shifting the weapon slightly during the turn animation, but if you follow the reticle position (which is what matters) you'll find that it moves at a constant rotation speed the whole time. On a different but related topic, I would give the game a strike against for adding an extra frame of unnecessary input lag. This was discovered when I noticed that the stick must be activated for at least 2 frames (67 msec) to register any change in the shooter's look direction (tested pre-patch, might have been fixed).

Game Year Developer Frame rate Look sens range
Halo: Combat Evolved 2001 Bungie 30 fps 1-10

There exists a group of Halo players who remain strong supporters of the first installment of the series, viewing everything that came afterwards with a varying degree of contempt. They're probably right about the overall competitive merits of Halo CE compared to its successors, but they also tend to overreach by making unfounded assertions about the game's mechanics. One such example is the oft repeated claim that aim smoothing was introduced in Halo 2 or Halo 3 (depending on whether or not the claimant liked Halo 2) as part of Bungie's continuing efforts to appeal to casual players. As can be seen from the plots below, this claim is false.

Halo's implementation of aim smoothing differs significantly from that of CoD - although the increase in rotation speed is also linear, the initial speed is higher and the acceleration is spread out over a much longer period of time. You can't quite see it but the speed curves do flatten out beyond 1 sec on the time axis. Focusing on the first 90° of the shooter's turn, this takes about 0.5 sec on 3 sens during which time the rotation speed approximately doubles (114°/sec to 234°/sec). On 5 sens, a 90° turn takes 0.4 sec and the speed increases by a factor of 1.78 (153 °/sec to 273°/sec). In other words, the change in rotation speed over typical turning angles is big enough that you'll definitely notice it when twitching.

A natural question to ask is whether or not the aim smoothing in Halo can be avoided. The answer is yes, but only at the cost of turning slower. Again by testing a range of reduced stick voltages, I found that the shooter could rotate at a maximum of 70°/sec on 3 sens or 90°/sec on 5 sens without experiencing any smoothing. The 3 sens results are shown below with the curves labeled according to the equivalent stick deflection percentage. To put these numbers in perspective, avoiding smoothing on 3 sens would require 1.3 sec to make a 90° turn compared to the 0.5 sec for a full stick deflection. That seems impractically slow for trying to locate targets and secure first shot in the battle.

Game Year Developer Frame rate Look sens range
Halo 2 2004 Bungie 30 fps 1-10

Halo 2 aim smoothing is very similar to that of Halo CE, the minor difference being that rotation speed reaches its maximum slightly earlier (at about 0.8 sec instead of 1.0 sec). This modification would not be felt by the player unless they were making some very long turns at high speed.

Game Year Developer Frame rate Look sens range
Halo 3 2007 Bungie 30 fps 1-10

The Halo 3 results are essentially the same as Halo 2. You might notice an anomaly on the first frame of the 3 sens speed curve where the initial speed is lower than it should be. A glitch? I'm not sure how significant this would be in practice. Inconsistencies in the aiming system could be a serious problem, but a low rotation on the first frame might not be easily noticeable in light of the slower stick movement of a real player.

Game Year Developer Frame rate Look sens range
Halo: Reach 2010 Bungie 30 fps 1-10

In Halo Reach we again see the familiar pattern of gradual aim acceleration over the span of nearly a second. It looks like there might have been a subtle change to the smoothing algorithm such that maximum rotation speed is reached after a specific angle (about 225°) rather than after a fixed amount of time. Again though, this change is superficial as it would only be noticeable for very large turns.

Game Year Developer Frame rate Look sens range
Halo 4 2012 343i 30 fps 1-10

Halo 4 is the most recent installment of the Halo series. Its aim acceleration characteristics are similar to its predecessors and, in particular, appear to be identical to Halo Reach.

Game Year Developer Frame rate Look sens range
Shadowrun 2007 FASA 30 fps 0-9

Shadowrun is a game that received high praise from the competitive community, more so for its strategic depth than its shooting mechanics. As can be seen from the plots, it is actually quite similar to Halo with regards to aim acceleration. The 2 sens rotation speed curve reaches its maximum at about 1.0 seconds (which is cut off on the graph) while the 4 sens curve maxes out at 0.7 seconds. The slope of the speed curves appears to increase slightly over time whereas for Halo it was perfectly linear. This change is relatively subtle, so it's doubtful it would produce a dramatically different feel to aiming.

Game Year Developer Frame rate Look sens range
Rainbow Six: Vegas 2 2008 Ubisoft 30 fps 1-10

The first thing you'll notice about R6V2 is the slow turning speeds even on high sensitivity, which I guess could be attributed to it being more of a tactical shooter. Nevertheless, it is still interesting to see how another developer approaches aim acceleration. The results show the typical linear increase in rotation speed after starting off at a low value (initial speed is about 28% of final speed). The smoothing effect lasts for 0.37 sec, which is somewhat of a middle ground between CoD (0.2 sec) and Halo (0.8-1.0 sec).

Game Year Developer Frame rate Look sens range
Team Fortress 2 2007 Valve 30 fps 1-44

Although the PC version of TF2 remains the most popular by a wide margin, the Xbox 360 version was moderately successful in its time. The Xbox version is quite heavy on aim smoothing. The shooter starts off at such a slow rotation speed (45°/sec on 12 sens, 66°/sec on 20 sens) that there really isn't any way to avoid a lengthy period of aim acceleration (90° turn takes 0.58 sec on 12 sens and 0.46 sec on 20 sens). There's actually a weird bug in the game that causes the rotation speed to plummet instantly by a factor of 2 after 1.0 sec on time axis, but this isn't of much practical interest.

Game Year Developer Frame rate Look sens range
Quake Arena Arcade 2010 id / Pi 60 fps 1-13

If a franchise with as much history as Quake can't even gain a respectable following on the xbox 360, it seems that fast paced shooters on the console are forever doomed. Quake Arena Arcade runs at a smooth 60 fps and it stands as only the second game in our list to forgo aim smoothing in favor of the natural stick behavior. Curiously, switching the look sensitivity from 4 to 7 results in a change of only 13% in rotation speed.

Game Year Developer Frame rate Look sens range
Borderlands 2009 Gearbox 30 fps 1-11

Aim acceleration in Borderlands is similar to that of the Halo series. Once the rotation speed threshold (about 90°/sec on 4 sens and 135°/sec on 6 sens) is exceeded, it requires 0.8 seconds to reach maximum speed. I included two separate trials on 4 sensitivity to illustrate some inconsistencies in the aiming system - occasionally there is a higher than expected jump in rotation speed (hard to notice when playing because it's corrected on the following frame) as well as a lower than expected response on the first frame.

Game Year Developer Frame rate Look sens range Aim accel range
Unreal Tournament 3 2008 Epic 30 fps 5-20 1-10

I saved UT3 for last because there's a lot to say about its approach to aim smoothing. Like its twitch shooter counterpart Quake, it failed to gain any serious traction on the Xbox 360. The interesting thing about UT3 is that it actually has an aim acceleration setting which can be tweaked from 1 to 10. I've heard people trumpeting this setting as if it's the cure for all aiming ills, allowing the player to customize the level of aim smoothing or remove it completely. Don't get me wrong, I think an aim acceleration setting could be a nice feature for console FPS games which might even become standard if console developers weren't so stubbornly minimalist (compare to the wealth of settings offered by most PC shooters), but UT3's interpretation of this setting is puzzling to say the least.

Before going into what the aim acceleration setting actually does, let's first look at our usual plot of reticle speed versus time with acceleration set to its highest value of 10. For the physics impaired, max acceleration implies the fastest increase in rotation speed, i.e., the least amount of aim smoothing, so this is where we might expect to see the single frame transition from zero to top speed as in Battlefield 3 and Quake. What we actually see is probably the most byzantine aim smoothing algorithm ever conceived. The shooter's rotation starts off at a moderate speed that remains constant for 4 frames (0.13 sec), jumps to a higher speed that is also held for 4 frames, then ramps up rapidly, eventually settling at a very high value (off the graph) after about 0.9 sec. What purpose is served by deliberately introducing a discontinuity in rotation speed? It seems like the sort of thing you'd want to avoid when developing an aiming system that feels comfortable and consistent to the user.

So how about that aim acceleration setting? Intuitively, what I'd expect to see by adjusting this setting would be a slower / faster transition from the initial rotation speed to the final rotation speed. Keep in mind that the initial and final speeds are typically determined by the look sensitivity setting. As can be seen from the plots below, this is not what happens at all. Although the slope of the rotation speed curve (acceleration) does change according to the acceleration setting, the shooter always takes the same amount of time to reach max speed and it's actually just the initial and final rotation speeds that are being modified. In other words, the aim acceleration setting is behaving just like a look sensitivity setting. Perplexing implementation.

Concluding Remarks

I was somewhat surprised at the disparity among implementations of aim smoothing in the games tested. There isn't any 'stock' algorithm that developers rely on, and there also doesn't appear to be any clear relationship between acceleration and style of play. For example, Battlefield 3 and Quake Arena Arcade were both identified as games that don't employ any smoothing, yet there isn't much common ground between the two games with respect to movement speed, pace of play or duration of engagements.

So what can be said about the various approaches? I think it's worthwhile revisiting Call of Duty and Halo, two popular franchises which take very different approaches to aiming. More specifically, consider the Halo 4 and CoD Black Ops rotation speed curves for 3 sensitivity with 100% and 82% analog stick deflection, as shown below.

Similar to the results presented earlier for CoD MW2 and Halo CE, the 100% stick deflection curves illustrate a big difference in the duration of aim smoothing in the two games. In H4 the shooter requires a long time (1.0 sec) to approach maximum speed whereas in CoD BO the transition to max speed is very quick (0.22 sec). This is why a feeling of sluggishness is much more apparent in Halo when attempting to turn rapidly.

The 82% stick deflection curves are even more revealing with regards to the aiming philosophies of the two games. Halo grants the player a relatively large analog stick range (about 90%) at a low rotation speed and without any smoothing. The idea, I think, is to give the player a large 'aiming range' where the stick position is honored immediately. Only with a full stick deflection of 90%-100% (the 'twitching range') does the shooter accelerate to the high speed required for target searching .

In contrast, CoD BO always exhibits a brief period of acceleration when turning. However, the duration of the acceleration window is reduced according to the desired turning speed, and in fact it lasts only a few frames at typical aiming speeds. I suspect this is short enough to avoid negatively impacting the player's aiming ability . In my opinion, the merits of this system are its consistent behavior over the entire range of the stick (and for all look sensitivities) as well as its agreement with the basic purpose of aim smoothing, i.e., to provide a slight tempering of rapid reticle swings without grossly limiting the twitching ability of the shooter.

Coincidentally, I believe this is also the reason that 'slow turn' controllers are a bigger problem in Halo than CoD. These controllers have a worn out or defective analog stick that, when fully deflected, produces a voltage indicative of <90% deflection. This prevents the shooter from entering the 'twitching range'.
It can be argued that awareness and reaction speed in CoD are more important than precision aiming. Shooting battles are frequently concluded in less than a second, often before the slower player even has a chance to return fire.

Aim acceleration in console shooters - Part 1: The Basics

What is aim acceleration?

In shooting games, aim acceleration is related to how a physical movement of the input device, such as an analog stick, is translated into changes in the shooter's look direction. More specifically, it refers to the way that many console FPS games limit abrupt increases in the shooter's rotation speed by slowly ramping up the speed over time. The concept is somewhat analogous to platform games where the character model's running speed accumulates before reaching its maximum, except applied to rotational movement instead of linear movement.

I prefer the term 'aim smoothing' to describe the filtering of twitchy analog stick movements into a more gradual turning motion. Acceleration, by definition, occurs whether the changes in rotation speed are instantaneous or very slow. The confusion arises when people refer to games as having "more acceleration" when what they actually mean is that the increase in turning speed requires more time, i.e., lower acceleration.

Presumably, rather than attempting to accurately simulate real world physics, the main purpose of aim smoothing is to prevent rapid swings in look direction which could make aiming or changing direction feel difficult to control for the player. It therefore might be viewed as a primitive form of assistance for manipulating the analog stick. However, smoothing stands apart from the more obvious forms of aim assistance (sticky aim, inflated hitboxes) in a couple of ways:
  1. It happens even when the shooter does not have an enemy targeted
  2. Its behavior is usually independent of the shooter's choice of weapon
You'll occasionally hear complaints that aim smoothing is too severe in some games. This can actually hamper the player by imposing a limit on how fast they can react and creating a feeling of disconnect between the input controls and the character model's actions. The vast majority of console shooters have a specific smoothing behavior hard-coded into the game and do not offer any settings for adjusting its severity.

Mouse vs Controller

If you ask why a mouse is superior to a controller for FPS games, the usual answer you'll get is that the wider range of motion of the mouse naturally provides finer control for aiming than an analog stick. While this is certainly part of the equation, I think it glosses over a fundamental difference in how mouse movements and analog stick movements are translated to changes in look direction.

A mouse provides the player with direct control of the angular position of the reticle - displace the mouse by X centimeters and your look direction changes by Y degrees, where Y is proportional to X. It also provides precise control of rotation speed according to how fast the mouse is moved. In contrast, an analog stick affords the player only direct control of angular velocity - deflecting the stick by X degrees calls for a rotation speed of Y degrees per second . It's fairly obvious why analog sticks are interpreted in this way - as the stick is physically attached to the controller, its range of motion is very limited and you can't 'reset' it to a convenient location on the desk after it has been moved too far like you can with a mouse.

Why does any of this matter? I would contend that an input device which converts displacement to reticle speed is inherently more difficult to control (in the sense of supporting both fine aim adjustments and fast twitches) than one that converts displacement to reticle position. Justification for this claim comes from the physics involved, more specifically the integral-derivative relationship between angular position and angular velocity. For example, whereas moving the mouse at constant speed causes the reticle to turn at constant speed, moving the thumbstick at constant speed would cause the reticle to turn at linearly increasing speed. This controller 'hypersensitivity' is tempered by lowering the maximum rotation speed and introducing artificial measures such as aim smoothing to limit the growth in rotation speed over time (acceleration). As a result, players with good control of the sticks have reported a sluggish or unresponsive feel to reticle twitching in many console games.

Irrespective of aim acceleration, the relationship between stick deflection angle and rotation speed is usually nonlinear. Basically, once you pass the 'dead zone' the stick becomes increasingly sensitive moving towards the limits of its range. The reason for this behavior might be to give the shooter better fine aiming control. This is a topic in itself which I'll leave for another day.

Measuring Aim Acceleration

To investigate how aim smoothing is implemented in some of the more popular console FPS titles, we can simulate a basic thumbstick movement and observe the reticle rotation over time. I say simulate because, rather than attempting to manually replicate a predefined stick movement, we can use the controller hack discussed in the previous blog entries to directly synthesize the stick voltage. This approach provides precise control of the aiming signal seen by the console with near perfect repeatability.

What sort of stick movement should be simulated? Preferably something simple and intuitive that does a decent job of exposing the aim smoothing implemented by the game. I chose to use what might be referred to as an 'ideal twitch' - a step function that transitions instantaneously from the default stick voltage to a higher voltage and then remains constant, thus simulating a quick twitch of the stick from 0 degrees (resting position) to X degrees on the horizontal. Of course, in the real world it takes the player a small amount of time to twitch the stick, but I don't think it's so important to mimic this behavior for the purposes of our investigation.

It helps to know what result we're expecting to see with this ideal twitch input. Based on the previous explanation of the analog stick as a device that converts angular displacement to rotation speed, we should, in the absence of aim smoothing, observe an immediate jump in rotation speed from 0 to Y and then the constant speed Y until the input is removed. In other words, the angular velocity of the reticle should track the stick voltage perfectly. In contrast, when aim smoothing is present we expect a more gradual rise in rotation speed from 0 to Y. In both cases the eventual rotation speed Y is governed by our choice of look sensitivity in the game's control settings. The basic relationship is summarized in the plot below .

Notice also the instantaneous deceleration of the reticle when the stick is returned to its resting position (just after 1.6 sec on the time axis). This behavior, which allows the player to quickly reverse the reticle direction, has been confirmed for many different FPS games, and it suggests that aim deceleration doesn't warrant any further attention.

The next question is how exactly to measure the angular velocity of the reticle based on what we see from a first person point of view (PoV) on screen? A video capture card can be used to record the turning sequence which can then be played back frame by frame. The basic idea is to estimate the reticle's angular position θ at every frame and then calculate angular velocity ω by numerical differentiation,
where k denotes frame index and T is the time between video frames. One point to keep in mind is that numerical differentiation is quite sensitive to noise, meaning any inaccuracies in our estimates of θ will be amplified in ω.

What's needed is a way to accurately determine the shooter's rotation angle θ over time based on the video data. My approach was to build a video 'template' of known rotation angles by recording a full 360° rotation at a slow, constant speed. This can be accomplished by choosing a low look sensitivity, applying a small increase in voltage to the stick (a slower turn means more frames in the template, i.e., better angular resolution), and analyzing the second rotation in the sequence (because aim smoothing typically wears off during the first rotation). Since the speed of rotation is constant, the resolution of the template can be calculated simply by counting the number of frames for a full rotation. Typically, I set the speed slow enough to obtain a resolution of better than 3° between successive frames.

Once the template has been recorded, it's just a matter of doing 'measurement' recordings with a few different sensitivities and stick voltages - this time looking at the shooter's first rotation because we want the aim acceleration to be captured - and comparing the results to the template. Background scenery in the video makes it easy to identify the two template frames that fall on either side of a given measurement frame, and we can estimate θ by visual interpolation. The three images shown below illustrate how this works. The top image is the 10th frame of a full speed rotation on 3 sensitivity with aim acceleration present (starting from rest). The bottom images are the two nearest template frames, which have known rotation angles of 20.7° and 22.2°. Clearly the measurement frame is closer to the 20.7° template frame, so the shooter's rotation angle can be judged to be about 21.1°. The big white rectangles in the center are just an overlay added by my image processing script to make it easier to judge the angles based on the background scenery.

Black Ops measurement frame

Black Ops template frame (20.7°)

Black Ops template frame (22.2°)

Repeating this process for every frame of the shooter's turn gives a complete record of θ which can then be used to compute the rotation speed ω as explained above. I had considered trying to automate the entire process with more sophisticated image processing code for the template comparisons, but this proved difficult and I ended up falling back to the visual interpolation technique. Here is a short video which summarizes the measurement procedure and shows the frame by frame results for CoD: Black Ops and Halo 4:

That's all for the basics of aim acceleration and how it can be measured. Check out part 2 for a comprehensive analysis and discussion of the aim acceleration characteristics of many well-known console shooters.