{"id":18555960,"url":"https://github.com/rlbot/autoleagueplay","last_synced_at":"2025-10-08T21:57:09.636Z","repository":{"id":98552605,"uuid":"202873224","full_name":"RLBot/AutoLeaguePlay","owner":"RLBot","description":"An automatic league-runner for Rocket League bots (RLBot)","archived":false,"fork":false,"pushed_at":"2020-02-29T19:54:00.000Z","size":17044,"stargazers_count":0,"open_issues_count":5,"forks_count":3,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-06-06T22:34:44.918Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RLBot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-17T11:35:51.000Z","updated_at":"2023-09-02T21:41:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"f9f6af62-dfe4-4b3e-851f-81297f9f3779","html_url":"https://github.com/RLBot/AutoLeaguePlay","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RLBot/AutoLeaguePlay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FAutoLeaguePlay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FAutoLeaguePlay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FAutoLeaguePlay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FAutoLeaguePlay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RLBot","download_url":"https://codeload.github.com/RLBot/AutoLeaguePlay/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FAutoLeaguePlay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000684,"owners_count":26082837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T21:28:33.666Z","updated_at":"2025-10-08T21:57:09.618Z","avatar_url":"https://github.com/RLBot.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AutoLeague for League Play\n[DomNomNom's Autoleague](https://github.com/DomNomNom/AutoLeague) modified to play [RLBot](http://rlbot.org/)'s Official League Play.\n\n# How to use:\n\nRecommended: Use [Bakkesmod](https://bakkesmod.com/) and have 'Automatically save all replays' enabled.\n\nInstallation:\n- To install, clone this repo and run `pip install -e .` in the directory containing `setup.py`.\n- This should give you access to the `autoleagueplay` command line tool. Try `autoleagueplay --help`.\n- Run the `autoleagueplay setup \u003cworking_dir\u003e` command to set the directory where you want your league to be stored.\n\nUsage:\n```\nautoleagueplay setup \u003cworking_dir\u003e                           | Setup a league directory. Required for some other commands.\nautoleagueplay run (odd | even | rolling) \n                                [--teamsize=T] \n                                [--replays=R]\n                                [--ignore-missing]\n                                [--autoshutdown=S]          \n                                [--stale-rematch-threshold=X]\n                                [--half-robin]               | Runs a league play event.\nautoleagueplay bubble [--teamsize=T] [--replays=R]           | Runs a bubble sort.\nautoleagueplay list (odd | even | rolling)    \n                                [--stale-rematch-threshold=X]\n                                [--half-robin]               | Lists all matches for the next odd or even week.\nautoleagueplay results (odd | even | rolling)                | Lists the results.\nautoleagueplay fetch \u003cseason_num\u003e \u003cweek_num\u003e                 | Fetches the given ladder from the Google Sheets.\nautoleagueplay check                                         | Checks if all bots are present in the bot folder.\nautoleagueplay test                                          | Test run all bots to see if they auto-start\nautoleagueplay leaderboard (odd | even | rolling) [--extra]  | Generate a leaderboard image.\nautoleagueplay leaderboard (clip | symbols | legend)         | Generate a clip or legend for the leaderboard, or update symbols.\nautoleagueplay results-to-version-files \u003cresults_file\u003e       | Generates match result files by parsing the output of the results command.\nautoleagueplay unzip                                         | Unzips all the zip files in the bot folder.\nautoleagueplay (-h | --help)                                 | Show commands and options.\nautoleagueplay --version                                     | Show version.\n```\n\nOptions:\n```\n-h --help                    Show this screen.\n--version                    Show version.\n--replays=R                  What to do with the replays of the match. Valid values are 'save', and 'calculated_gg'. [default: calculated_gg]\n--list                       Instead of playing the matches, the list of matches is printed.\n--results                    Like --list but also shows the result of matches that has been played.\n--ignore-missing             Allow the script to run even though not all bots are in the bot directory.\n--skip-stale-rematches       Skip matches when the same versions of both bots have already played each other.\n--stale-rematch-threshold=X  Skip matches when a bot has beaten another X times in a row, and neither of them have updated their code.\n--half-robin                 The divisions will be cut in half (with overlap) when setting up round-robins, for fewer matches.\n--top-only                   Only display top 40 bots on the leaderboard even though there might be more bots.\n```\n\nThe working directory contains:\n- `ladder.txt`. This contains the bot names separated by newlines (it can be copy-pasted directly from the sheet, or fetched with the fetch command).\n- `bots/`. Directory containing the bots and their files.\n- `results/`. Directory containing results. Each match will get a json file with all the relevant data, and they are named something like `quantum_reliefbot_vs_atlas_result.json`.\n- `versioned_results/`. Directory containing a result tagged with the specific code versions of the bots participating.\n\nWhen running the script use `odd` or `even` or `rolling` as argument to set what type of week it should play:\n- Odd: Overclocked, Circuit, Transitor, ect plays.\n- Even: Quantum, Processor, Abacus, etc plays.\n- Rolling: Play all divisions, starting at the bottom and moving upward toward Quantum.\nIf a bot keeps winning, it can move up multiple divisions as we roll through.\n\nSpecial options:\n- Stale rematch threshold:\n  - The threshold is an integer. \n  - If a pair of bots have played at least stale-rematch-threshold matches under their current version, and one of \n    the bots won all of the stale-rematch-threshold most recent matches, future matches get skipped.\n- Half-robin:\n  - For each division, play a lower RR and an upper RR, with overlap.\n  - 3 bots on the bottom play 3 games, the winner advances and is included when the 3 bots on the top play 3 games.\n  - This results in fewer games, at the cost of less diversity in who you face.\n\nWhen all results are found, a new ladder `ladder_new.txt` is created next to the original ladder file.\n\n### Advanced Usage:\n\n#### Match Config\nChange `autoleague/default_match_config.cfg` for other game modes and mutators.\n\n#### Psyonix Bots\nAutoLeaguePlay can handle Psyonix bots, but their names must be: `Psyonix Allstar`, `Psyonix Pro`, and `Psyonix Rookie`.\nYou don't have to give them config files in the `bots/` directory. AutoLeaguePlay has its own config files for Psyonix bots.\nIf you really want to give them different names, change them [there](https://github.com/NicEastvillage/AutoLeague/blob/master/autoleagueplay/psyonix_allstar.cfg).\n\n#### Fetching ladder from Google Sheets\nYou can fetch the ladder from the Google Sheets with the `autopleagueplay fetch \u003cseason_num\u003e \u003cweek_num\u003e` command.\nBefore you can use this you must get a `credentials.json` file which you can get by enabling [Google Sheets API](https://developers.google.com/sheets/api/quickstart/python) and then download the client configurations.\nPut the `credentials.json ` in `autopleagueplay/cred/`. Next time you run the command, Google wants your permission, and then it should work.\n\n#### Current Match and Overlay\nAutoLeaguePlay creates a `current_match.json` in the working directory whenever a match is about to begin.\nThis file contains the division, and the paths to the bots currently playing. E.g.:\n\n```json\n{\n    \"division\": 0,\n    \"blue_config_path\": \"C:\\\\User\\\\RLBot\\\\League\\\\bots\\\\Self-driving car\\\\self-driving-car.cfg\",\n    \"orange_config_path\": \"C:\\\\User\\\\RLBot\\\\League\\\\bots\\\\Beast from the East\\\\beastbot.cfg\"\n}\n```\n\nThe information in the file can be used for an overlay.\nWhen the new ladder is complete the `current_match.json` is removed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlbot%2Fautoleagueplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frlbot%2Fautoleagueplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlbot%2Fautoleagueplay/lists"}