Desktop Overlay for Age of Empires II: DE
AoE2 Opponent Stats UI Overlay
Sits in the top right corner while you play. Shrinks to a pill when you tab out.
Who is this guy? Once the match loads, you can see your opponent’s rating, what civs they actually pick, and how their last few matches went. Right on top of the game.
Why bother?
- You’re 1000 ELO facing 1200. Prepare to lose. Play looser. Win anyway.
- You’re 1500 ELO facing 1300. Tighten up so you don’t throw to a Lithuanians knight rush.
- They’ve picked the same civ 18 of their last 20 games. You know the build that’s coming.
- They’re on a 0 and 5 streak. Confidence boost is free.
- You can spot the smurf on your team in team games and figure out who’s actually carrying.
- Match starting at 3 AM. Now you know whether you’re facing a hardcore grinder or another insomniac.
- Quick review after a match. What civ did they punish you with, what was their rating change.
- Saves you tabbing over to your phone every 15 minutes.
Install in 3 steps
- Download the .exe Grab the portable .exe (no install) or pick the NSIS/MSI installer from the releases page.
- Click past Windows SmartScreen Windows will warn you because I haven’t paid for a signing certificate ($200 a year for one person’s hobby is a lot). Hit More info → Run anyway.
- Queue a match Stats show up about 15 seconds after the loading screen starts. They don’t show during the civ selection lobby because companion’s data only surfaces once the match actually launches. Works in any display mode.
Screenshots
What you see per opponent
- Name + the civ they picked this game
- 1v1 and Team RM ratings
- Games played, winrate, current streak
- Their favourite civs in this format (last 60 games)
- What they’ve been picking lately (last 20 games, with winrate per civ)
- Their last 5 matches with W/L, civ, map, and ELO change
Plus your own stats at the top, the map name, and the panel switches to a faded “last match” view when the game ends so you can review it before queueing again.
How it works
- Read
HKCU\Software\Valve\Steam\ActiveProcess\ActiveUserto resolve your SteamID64. - Poll
data.aoe2companion.com/api/nightbot/match(fast, ~10–15s indexing) and/api/matches?profile_ids=<you>(canonical, ~30–60s indexing) in parallel. Whichever surfaces first wins. - For each player in the match, fan out four parallel calls. Rank (1v1 and TG), profile ID, the last 20 matches, and the last 60 matches in whichever leaderboard you’re playing.
- Tally the 60 match window into top civ counts per leaderboard. Tally the 20 match window into recent picks.
- Render. Cache the whole snapshot under the
matchIdso the same match never refetches. - Repoll on an adaptive schedule. 10s while idle and hunting for a new match. 45s while a match is locked in and opponents won’t change. 60s after the match ends.
First card on screen is usually about 15 seconds after queue pop. The hard floor is aoe2companion’s own indexing. Nothing on the client side can shortcut it without bypassing them and hitting Microsoft’s Relic backend directly, which I’m not going to do.
Hotkeys
- Ctrl+Shift+S toggle between pill and full overlay
- Ctrl+Shift+R force refresh (clears cache)
- Ctrl+Shift+C let mouse clicks pass through to the game
Buttons in the title bar do the same thing.
Compared to alternatives
| Tool | Live opponent ELO | Civ history | Shown in game | No tab switching |
|---|---|---|---|---|
| aoe2companion mobile | ✓ | ✓ | phone only | - |
| aoe2companion web | ✓ | ✓ | browser only | - |
| aoe2insights.com | post-game | deep | - | - |
| CaptureAge | spectator | partial | spectator client | spec only |
| OBS browser-source overlays | ✓ | partial | viewer only | viewer only |
| This tool | ✓ | ✓ | ✓ | ✓ |
It’s the same data aoe2companion already serves on their own site. The difference is it’s pinned to your game window so you can actually read it during the match.
Data sources
- aoe2companion. Everything you see on a card. Same endpoints their mobile app uses, same data anyone else can pull. My HTTP requests identify the app and link back to the repo so their maintainer can reach me if I’m being a bad citizen.
- Your Steam registry. One local read to figure out which Steam account is logged in. Doesn’t leave your machine.
That’s the whole network footprint. No analytics, no error reporting, no account, no microsoft/xbox calls. Source on GitHub, MIT licensed.
FAQ
Will I get banned?
Nobody has, that I know of. The app reads only public stats and doesn’t touch the game at all. It’s a separate window pulling from the same place aoe2companion’s site does. Plenty of streamers show this data on stream without issue.
Is this a cheat?
It tells you nothing you couldn’t see by tabbing over to aoe2companion on your phone. It doesn’t read game memory, doesn’t click for you, doesn’t touch the client. It just saves you the tab switch.
Microsoft Store / Game Pass version?
Not yet. I rely on Steam specific registry entries to find your account, and Microsoft Store uses a different identity flow. Want this fixed? Ping me.
Tech stack
Tauri 2 + Rust backend, vanilla HTML/CSS/JS in the webview, no build step on the frontend. Native Win32 calls (GetForegroundWindow, registry) instead of shelling out. Portable build is a single ~6 MB .exe; MSI/NSIS installers are ~2–3 MB. Rewritten from an Electron prototype that was ~80 MB.
Known limits
- Clicking the overlay pulls you out of the game. AoE2DE doesn’t share focus with overlays. Use Ctrl+Shift+C so clicks pass through to the game, or just don’t click the overlay during the match.
- The pass through clicks toggle is sticky. Once enabled, toggling it back off while the game has focus doesn’t always take. If the overlay won’t respond to clicks, minimize the game window and click the overlay once to restore focus, then toggle again.
- Doesn’t work in the lobby. Companion’s endpoint only surfaces a match once it’s actually starting (loading screen). You won’t see opponent stats while civs are being picked or while you’re still in queue. Stats appear about 10 to 30 seconds into the loading screen.
- Hovering over a name in the game doesn’t do anything. The game window captures all input. No third party tool has solved this without injecting a DLL into the game, which can get you banned.
- Windows only, Steam only. Tested only on Windows with the Steam version of AoE2DE. No Xbox or Microsoft Store or Game Pass support, because their identity flow is different and I haven’t worked it out. Mac and Linux not even attempted.
- No opening or build order detection. Would require replay parsing. Not in scope.
Roadmap
- Head-to-head history vs current opponent
- ELO trend graph
- Microsoft Store version support
- Per-civ winrate matchup view