In the year 16384 the world is filled with an unfathomable number of unique soccer arenas floating in space. After the singularity - at the Maslow-Messi Horizon - humans had all material burdens stripped and replaced with the goal of becoming the best one-on-one soccer player to exist. In the towering, immaculate white walls of each arena, your pleasurably straightforward reality is deeply engraved in black text.
Win a match and you’ll play the next in a higher rank arena with a stronger opponent - lose and you’ll play the next in a lower rank arena with a weaker opponent.
In the time between your matches you find yourself wondering how the AI agents implemented such an elegant system — so many different arenas, so many players, all in one contiguous 3D space, but the ladder never fails.
How do they do it?
You also know:
Hopefully the creative writing exercise implants a sufficiently abstract model in your mind, the remainder of this article is more specific, but I promise it’s cool.
1v1 is a popular mode in many games where players want to fight one on one. But, they typically don’t want to fight the same person repeatedly, don’t want to fight someone infinitely better or worse (hopefully) than them, and should be able to enter or exit the game at any time without it breaking the game, thus a ladder-style system as pictured above is typically used.
This can be implemented any number of ways, but the I found the method used by SPLewis in his csgo-multi-1v1 plugin to work very well in situations where simplicity and low overhead is desirable.
I will be using terms from Counter-Strike in the rest of the article as that is what I implemented this method in myself, but the main idea should remain abstract.
For reference:
Note: Just looking at the visuals below should give you a broad understanding of the algorithm and showcase it’s simplicity.
Note 2: See the “Context” sections at the end of this article for more details on how arenas are initialized and handled (it’s a bit specific to my use-case, but interesting)
Say you have a sever/game with 6 people connected, 2 people in the rank 1 arena, 2 people in the rank 2 arena and 2 people in the rank 3 arena. Say these players just finished a round and you now have some concept of who the winner and loser are.