{"id":18555944,"url":"https://github.com/rlbot/rlbottraining","last_synced_at":"2025-07-08T21:34:23.490Z","repository":{"id":48784165,"uuid":"162991378","full_name":"RLBot/RLBotTraining","owner":"RLBot","description":"Customizable training for Rocket Leage bots of any language.","archived":false,"fork":false,"pushed_at":"2021-07-12T10:42:57.000Z","size":460,"stargazers_count":7,"open_issues_count":3,"forks_count":4,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-02T05:32:13.164Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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}},"created_at":"2018-12-24T13:04:13.000Z","updated_at":"2022-03-21T10:20:17.000Z","dependencies_parsed_at":"2022-08-31T09:11:56.274Z","dependency_job_id":null,"html_url":"https://github.com/RLBot/RLBotTraining","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FRLBotTraining","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FRLBotTraining/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FRLBotTraining/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RLBot%2FRLBotTraining/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RLBot","download_url":"https://codeload.github.com/RLBot/RLBotTraining/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248134916,"owners_count":21053565,"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","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:28.642Z","updated_at":"2025-04-10T00:30:48.552Z","avatar_url":"https://github.com/RLBot.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RLBotTraining\nCustomizable training for Rocket League bots of any language.\n\n## Tutorial: [Click Here](https://youtu.be/uGFmOZCpel8?list=PL6LKXu1RlPdxh9vxmG1y2sghQwK47_gCH)\n\n## Installation\n\n - Install Python 3.7 or later\n - `pip install rlbottraining`\n\n\n## Features at a glance\n\n - Uses `RLBot` config files to support bots in any programming language\n - Reproducable training setups with seeded randomness\n - Customizable Pass/Fail criteria\n - Importing of shots/playlists from BakkesMod training\n - Playlists of exercises\n - Automatic reloading of both bot and exercise code\n - Imports from bakkesmod training\n\n## Architecture\n\n - At the entry point (`run_exercises.py`) we decide which `GraderExercise` should be run and the `config_path`s define the RLBot setup to be used (which bots, which mode).\n - Each `GraderExercise` composes together the initial game state and how the bot is judged. The responsibility of judging the bot is handled by `Grader`s\n - A `Grader` decides whether to continue the exercise or to `Pass`/`Fail` the exercise by looking at each tick. A `Grader` may optionally gather metrics (e.g. \"time until goal\") to help track bot performance as the bot is improved.\n - Separation of responsiblity: This repository is designed to make it nice to define new exercises whereas the training API of the `RLBot` framework provides the minimum features for any training to occur.\n\n\n## Tips for writing your own exercises:\n\n - Always subclass `GraderExercise` rather than `Exercise`. Using `Grader`s will allows you to share termination conditions, safely store state across ticks and provide metrics.\n - Compose your `Grader`s. For instance, by using `CompoundGrader`\n - Provide meaningful error messages in your `Grader`s by subclassing `Fail`\n\n\n## Future direction\n\n - Provide an example of striker vs goalie\n - Put metrics (`Grader.get_metrics()`) into a database\n - A way of browsing past runs, including metrics\n - Reproducing failed exercises\n - Visualization of metrics\n - Continous integration of different bots\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlbot%2Frlbottraining","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frlbot%2Frlbottraining","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlbot%2Frlbottraining/lists"}