FPS games will stay alive and well
There have been predictions of doom and gloom lately about a new breed of aimbot. In the battle between cheats and anti-cheat, it in many ways looks like a decisive victory for cheats.
The new aimbot can do all its work on a separate machine, using a capture card to see what’s going on, a machine learning setup to identify targets, and a device that appears as a mouse to the computer running the game to apply aim corrections. Since it doesn’t need anything special on the computer running the game, it’s almost entirely invisible to today’s anti-cheat.
A new anti-cheat strategy
If the goal is simply to keep anyone from cheating, the situation really is bleak. Anti-cheat has next to nothing to go on here except for the inputs the game is given, and those inputs could become increasingly indistinguishable from those of a world-class player.
If the goal is to keep the game fun for non-cheaters, all we need is players’ inputs and things look much better:
We have a pretty good idea what world-class players are capable of (for instance how good human reaction times can be) and can with high confidence classify anyone aiming better than that as a cheater, putting a realistic cap on the amount of skill a cheater can fake.
If world-class aim alone can make a world-class player, then we’re still in trouble, but few games are that thoroughly aim-dependent. If someone with world-class aim but little other skill has even odds against someone who has average aim but is good at the game in other ways, in my opinion that isn’t particularly good game design to start with, and issues with that may become more apparent over the next couple of years. Critically, this does not mean that we have to balance around the possibility of superhuman aim, because that’s easy to catch and ban.
We have plenty of experience keeping excellent players from ruining average players’ experience, although it of course isn’t straightforward. If an average player simply won’t have fun when up against an excellent player, we have skill-based matchmaking. Some games are chaotic enough that it isn’t important, have a wide variety of ways for anyone to keep even excellent players on their toes, or have some kind of catch-up (blue shell) mechanic or other power-ups that can give weaker players the upper hand for a bit. One way or another, this is an issue that we have to deal with anyway.
A gameplay example
Let’s say you’re in a defensive but somewhat predictable position in a first-person shooter, in a large room watching a doorway that you expect an enemy will come through in a moment. This enemy knows you’re in the room, and may or may not be using an aimbot. This enemy has some peeker’s advantage over you, but since you know exactly where they’ll be your only delay is your reaction time to click.
Here are a few scenarios:
If the enemy has typical aim but a good sense of where you’ll be, they can pre-aim and may not have to adjust their aim very far, and thanks to that may (or may not) be able to fit that aim correction into their peeker’s advantage.
If the enemy has typical aim and no sense of where you are, they’ll probably have to correct their aim much further and will probably take too long doing it.
If the enemy has world-class aim (regardless of whether it’s via an aimbot or not) and no sense of where you are, it’s roughly like the first scenario and you both have a chance; if you have to hit a small target at the end of a long flick, that’s going to take a moment extra regardless of who you are, and any aimbot trying to be realistic will have to take a bit longer for that as well.
If the enemy has world-class aim and knows roughly where you are, you’re screwed. If this happens via an aimbot, it’s still mostly indistinguishable from top-level gameplay. Fortunately, it’s indistinguishable enough from top-level gameplay that all the same balancing factors that natural top-level players have to deal with still apply, and it’s hopefully not trivial for a player to reach this level even with an aimbot.
If the enemy has an aimbot turned up to clearly superhuman levels, nothing else matters, you could be dead on their screen before they even show up on your screen… but if it happens with any regularity then the server (even without any help from the client!) has everything it needs to confirm that as a cheat and take whatever action the game devs think is appropriate.
Taking care of just the last case leaves plenty of moral and technical ambiguity, but is enough to keep the experience fun and reasonably level.
Tactics for ambiguous players
Banning the most egregious cheats should go a long way, but we can do better without collecting better data. If a player is suspicious but not bannable, there are still options.
Doing a bit of matchmaking on more than one axis might help at lower ranks, but would have to be arranged carefully to not feel like punishment. We have to assume that more players than usual will have excellent aim via more moderately-tuned aimbots, and that we can’t separate those players from those who naturally aim that well. Players with weaker aim and stronger other skills and those with stronger aim who are weaker elsewhere may average out to similar skill levels, but both might still prefer to play against skillsets more similar to their own if the game is balanced with this somewhat in mind. What’s critical is that any separation along these lines doesn’t just turn into a cheat containment zone; someone with legitimately strong aim should find themselves in good company, not outmatched.
Another possibility is to artificially delay the damage a suspicious player deals by a few milliseconds, but this sounds tricky to balance. It could feel subtle compared to netcode issues. It may only make sense to apply this at lower overall skill levels where expectations are lower and the counterplay against excess aim skill is presumably weaker.
Large variance in input-to-display latency between players makes a mess of this.
Say the typical player has 5 frames of latency and gets 80 fps for 62.5 milliseconds of latency, but someone who tunes the game carefully can get 4 frames of latency and 300 fps for a mere 13.3 milliseconds of latency. That 49-millisecond difference not only distorts natural skill but also is free ground for aimbots to undetectably claim.
Knowing client performance would at least make anti-aimbot tuning a bit easier, but it’s usually very tough to do in a tamper-resistant way, and you’ll still have aimbotters doing the performance tuning to give themselves more of an advantage.
Trying to raise the minimum latency annoys people (rightly) and doesn’t even work that well. Say you start from the above scenario and add a hard cap at 144 fps; the 49-millisecond difference only drops to 35 milliseconds.
There’s only one good fix: competitive games need to have lower latency on typical settings and hardware. I’d like to see 30 to 40 milliseconds as a baseline. On a game that regularly goes over 80 milliseconds, this anti-aimbot strategy may barely work.