
Imagine a poker player who never looks at your cards, yet folds every time you hold aces. You can't prove they cheated. But you can measure how often they "guess" right. That is the whole idea behind trust rating.
The problem: cheating you can't see
Counter-Strike 2 is one of the most played competitive games in the world. Two teams of five. One team attacks, the other defends, round after round. Players hide behind walls, throw smoke grenades to block the view, and win fights in fractions of a second.
Some players use cheats: software that shows enemies through walls or moves the aim onto a target for them. From the outside, a cheater looks like a very good player. Watching a replay, even an expert often can't tell the difference.
So we stopped asking "does this look like cheating?" and started asking a sharper question: did this player act on information a human in their position could not have had?
Rebuilding what the player could see
A match recording splits every second of the game into 64 slices. In each slice, it stores the full state of the game: every position, every bullet, every movement of the aim. A blink of an eye spans several of them.
From that, we rebuild what each player could actually see at every moment. We draw a line from the player's eyes to each enemy and account for walls, objects and smoke. An enemy counts as visible only when more than 15% of their body can be seen. We set that line by studying real matches: below it, an enemy is too thin a sliver for a person to really notice.
This matters, because now we know two things side by side: what the player did, and what the player could have known. Cheats live in the gap between the two.
Seven traces a cheater leaves behind
We measure seven things for every player in every match. They fall into three stories.
1. Seeing through walls
- Kills through walls
- How often a player kills an enemy by shooting through a wall or an object.
- Kills through smoke
- How often a player kills an enemy by shooting through a smoke cloud.
- Aim on a hidden enemy
- In the second before a shot, how much of the time the crosshair rested on an enemy who was still behind cover. A human waits for the enemy to appear. A wallhack lets you follow them through the wall before they ever show up.
2. Reflexes faster than a human
- Reaction time
- For each opening shot, we measure the time from the moment the enemy became visible to the moment the player fired. We take the middle value across the match.
- Fast reactions
- We count the shots fired less than 150 milliseconds after the enemy came into view. That is 9 of those 64 slices or fewer. One such shot is luck. A pattern of them is something else.
3. Aim that snaps
- Headshot rate
- The share of hits that land on the head. Software that aims for you tends to aim for the head.
- Big aim jumps
- How often the aim swings more than 20 degrees in the last second before a shot. A human tracks a target. Aim assistance teleports onto it.
None of these proves anything on its own. Great players get wallbang kills. Great players have fast hands. The signal is in the combination, and in the comparison.
Fair to everyone: compared with the same match
A headshot rate of 40% means different things on different maps, against different opponents, in a short match or a long one.
So every measurement is used twice: once as the player's own number, and once as the difference between the player and everyone else in the same match. This lets the model tune itself to the match in front of it: the map, the opponents, how long the game ran. Being the best player in the room doesn't make you look like a cheater. Numbers that no normal match produces still stand out.
That gives our model 14 inputs. It turns them into one number from 0 to 100, which players see on Rankacy.com, our platform for CS2 players. A score of 100 means we found nothing suspicious. The lower the score, the more the player's numbers resemble those of players who were labelled as cheating.
The scale isn't a straight line. Most players sit in the high 90s. A score further down means the numbers are unusual, and a sharp player who knows exactly where to go and where to aim can land there too. The deeper it drops, the stranger the pattern. A score is a signal, not a verdict.
We also refuse to guess from too little data. If a player didn't fire enough shots or hit enough enemies for a measurement to mean something, we leave it empty. A player needs at least three of the seven measurements to get a score at all.
Every score explains itself
A number without a reason is just an accusation. That is why every score comes with a breakdown of what moved it.
Take a made-up player in a made-up match, scored by the real model. They ended at 88.11. The breakdown shows why: they had 5 fast reactions while the rest of the lobby averaged 2. That alone cost them 20.31 points, more than everything else combined. Their wallbang and smoke kills, on the other hand, pushed the score back up.
You don't have to trust a black box. You can see which trace mattered and by how much.
One bad match doesn't hide
A single match can be a fluke. So we also build a player trust rating from their 30 most recent scored matches (a player needs at least 5).
Two rules shape it:
- Recent matches count more
- A match's weight halves every 10 matches back.
- Suspicious matches count extra
- A match scored below 30 can weigh up to 4.75 times as much.
Why the second rule? Because a cheater can play clean most of the time. In one example, a player with four near-perfect matches and one match scored 20 would average 82.60. With our weighting, their trust rating is 70.19. One bad match isn't buried by the good ones around it.
Why this is bigger than a game
Trust rating answers a narrow question: does this player behave like a human with human information?
But the method behind it is the core of our work. To judge a decision fairly, you first have to reconstruct what the person could perceive, then measure how they reacted, and compare them with others under the same pressure.
We are building a frontier AI lab to model and predict how humans react and make decisions under pressure. Counter-Strike gives us millions of those decisions, recorded 64 times per second. Catching cheaters is one of the first things that data lets us do.