DEV Community

milkmaster7
milkmaster7

Posted on

How We Built a Skill Rating System for 1v1 Esports Matches

1v1 Skill Rating for Esports

LootDiff is a competitive gaming platform where players stake USDC on 1v1 matches in CS2, Dota 2, and Deadlock. We needed a fair ranking system.

The Algorithm

Standard rating formula with esports modifications:

const K = 32 // Base K-factor
const expectedScore = 1 / (1 + Math.pow(10, (opponentElo - playerElo) / 400))
const newElo = playerElo + K * (actualScore - expectedScore)
Enter fullscreen mode Exit fullscreen mode

Our Modifications

Stake-Weighted K-Factor

Higher stakes = more SR at risk. A $20 match matters more than a $1 match.

Game-Specific Adjustments

CS2 1v1s are more volatile than Dota 2 1v1s, so K-factors differ by game.

Placement Matches

New players get a higher K-factor for their first 10 matches to quickly reach their true skill level.

City Rankings

Players belong to cities. City SR is the average of top 10 players from that city. Creates regional rivalries.

Results

After thousands of matches, the system produces stable rankings where:

  • Top players consistently beat lower-ranked opponents
  • Upsets happen but don't wildly swing rankings
  • New players reach their true rank within ~15 matches

Check the leaderboards: lootdiff.com


Have you implemented skill rating or similar ranking systems? What edge cases did you hit?

Top comments (0)