If you aren't familiar with Age of Empires, check out the my other AoE2 project where I provide a bit more of an intro. Otherwise, read on.
Watching people do things and guessing their skill level is a fun game.
Imagine if you could somehow disguise baseball athletes at all levels and just watch them play. Would you you be able to guess whether they were little leaguers, High-A Asheville, or the Boston Red Sox?
The fame and the physiological qualities of the baseball players make this pretty much impossible, not just for baseball but for most classical sports. However, for e-sports, it's a whole different ball game.
Computers and networks can hide identity. In these cases, you really can't tell how good somebody is until they start playing.
I've seen at least a couple streamers try to play this "Guess the Skill level" game for Age of Empires II.
From what I've seen, people playing this game have gone about selecting a "random" match to spectate and guess in one of two ways:
They go to the list of ongoing matches and pick one. But, of course, there are a few problems:
- You might accidentally see the ratings
- You probably want the same chance of selecting a game with highly skilled players as you have of selecting a match with low skill players or medium skill players. Since the skill levels of the players currently playing aren't uniformly distributed, getting your desired distribution of skill levels is unlikely.
They get somebody else to select a match for them. This results in another set of problems:
- You have to bother another person
Humans are generally really bad at being randomPro Tip: The digits of Pi are approximately uniformly distributed. So if you are ever in a situation where you need to spout off "random" numbers, just spit out all the digits of Pi that you know. It might be a better bet that saying whatever numbers pop into your head.
- They might have an agenda (want you to watch a particular player) or intentionally bias their picks in some other way
- You can't compete against them to see whose guess was better because they have seen the player's ratings
Fortunately, these are very solvable problems. Using the aoe2.net API, in about a weekend, my wife and I WIPed this up:
Just like the site says, this tool:
- Selects a random rating between two values.
- Then selects the closest ongoing game to that rating.
In doing so, it ensures that you are in for spectating variety of different skill levels, instead of getting more of the skill levels that play more games. It'll keep you on your toes so you can't just keep guessing the rating "1000" over and over and expect to be right.
The best example I know of a Twitch streamer playing this game is Hera's Guess the Elo series:
I shared this tool on his Discord and his mods were nice enough to pass it on to Hera:
Cool, looks like it's valuable. YouTube video of that episode here if you are interested.
This is a React app. It's hosted on GitHub pages. Since aoe2.net doesn't allow cross origin requests (via CORS), there is a small backend system: a GCP cloud function that proxies the "get all ongoing matches" request from your browser to the aoe2.net API. There is also a caching mechanism that stores the most recent API result in a storage bucket for a few minutes. This caching mechanism is a good idea because:
- It protects the aoe2.net API from excessive calls if somebody mashes the "Get Matches" button. This API is free and awesome and I'd like to keep it that way as long as possible.
- Aoe2.net seems to do some of its own throttling if you make requests too quickly, so returning cached data speeds up the results when one user clicks the "get matches" button multiple times in quick succession, or if there are multiple different users clicking the button at around the same time.
It doesn't cost very much to operate (<$1 per month) - so far it's been free because of the Google Cloud Platform free tier (GitHub pages is also free).
I don't currently have any plans to make changes to this tool. But if I had to think of some ideas, we could:
- Add more options for filtering the matches
- Make the max and min limits strict (instead of just using them as bounds for selecting the random rating -- since the nearest game to any particular rating might be outside the min/max bounds)
My other AoE2:DE project AoE2:DE rating charts