AoE II: DE ladder simulator. Predicts rank, Elo, and likely matchups using real leaderboard snapshots.
- Download up-to-date leaderboard snapshots and track Elo over time.
- Simulate matchmaking and Elo progress.
- Display player base distributions.
- Export predictions to CSV.
- Make scenarios and change players.
- Predict your rank, ELO and even potential opponents and results against them. You can change your skill and see where and against whom you end up.
- Predict tournament qualification results. Example is the RB WW El Reinado Last-Chance Qualifier (invited are ommited):
Real:
- Predict general leaderboard. Don't forget to run multiple attempts and estimate probabilities! Below is retrodictions, when simulation almost matched the reality. It's the first result at the very start of AoE 2 DE:
Actual ladder (~ December 2019)
main.lua: main Love2D entry.Game.lua: simulation and matchmaking.PlayerDB.lua: keep leaderboards and player stats.Graphics.lua: histograms.parameters.lua: lots of important parameters.scenario.lua: optional scenarios.LB_RM,LB_RB_EW: leaderboard JSON snapshots.Predictions/: folder for saved reports and Python helpers for CSV analysis.Fit.lua: statistical values.
- Install Love2D.
- Fetch latest leaderboards:
Saves snapshots to folders LB_RM or LB_RB_EW (old Redbull ladder), you can modify ladder IDs for other ladders.
lua requestAllLeaderboard.lua
- Launch "START" on any system.
or use Love2D laucher from the CMD/terminal
love .
- Change important parameters in parameters.lua.
- Set scenario params in scenario.lua.
- Fine tune activity via grinders.csv , override players in override.csv.
- If savePredictions is enabled, CSV reports go to Predictions/ folder for analysis.
The simulation is obviously probabilistic! Always expect it to be WRONG. In the ideal vacuum players converge on their true skill level. Hovever it's not possible in practice! Players are playing differently on different maps, different time zones against different opponents and with different moods. The "true skill" is very obscure and it's impossible to determine it, even with lots of data. Also it can't handle smurfs. Please override known players or excluded obvious smurfs (all with 90% + winrate for example). Also my code is very suboptimal and requires a lot of refactoring and optimizations. But I can't invest all my efforts into it. Maybe community can make it better.
Released under the MIT License




