|
1 | 1 | # RLBot Pack |
2 | 2 |
|
3 | | -The RLBotPack is a repository holding frequently requested bots in one convenient place. The main intended users are people joining the discord looking for a fun bot to try out. It may also be useful as a way for people running streams to get an up-to-date version of your bot. |
| 3 | +The RLBot Pack is a collection of ready-to-use bots and scripts that any RLBot user can download and play against with a single click. It's the easiest way to discover community-made bots and the recommended source for tournament organizers and streamers. |
4 | 4 |
|
5 | | -The details for the v5 botpack are still a WIP. However, there are somethings we know for sure: |
| 5 | +## For Users: Getting Bots from the Pack |
6 | 6 |
|
7 | | -- All bots and scripts will be required to compile into a single executable file |
8 | | -- Source code will be submitted to a central repository where a trusted, automated system will build and publish it |
| 7 | +The botpack is built into the RLBot GUI. When you open the bot list, bots from the pack appear alongside your local bots. The GUI handles downloading, updating, and launching them automatically. |
| 8 | + |
| 9 | +If you want to browse what's available or check the source code, the botpack lives at **[github.com/RLBot/botpack](https://github.com/RLBot/botpack)**. |
| 10 | + |
| 11 | +## For Bot Makers: Submitting Your Bot |
| 12 | + |
| 13 | +Everyone is welcome to submit their bot or script to the pack. The process is different from v4 — v5 uses a tool called **Bob** to build bots inside Docker containers, producing compiled executables that work without any language runtime dependencies. |
| 14 | + |
| 15 | +### Submission Requirements |
| 16 | + |
| 17 | +| Requirement | Details | |
| 18 | +|---|---| |
| 19 | +| **Open source** | Your submission must be open source and its repository must contain all necessary files and/or only use public dependencies. | |
| 20 | +| **`bot.toml` or `script.toml`** | A properly configured config file (see [Configuration Files](/v5/botmaking/config-files)). You need a unique `agent_id` — strongly prefer the format `<yourname>/<botname>/<version>`. | |
| 21 | +| **`bob.toml`** | A build configuration file so Bob can compile and package your bot. See the [examples repository](https://github.com/swz-git/bob-example) for language-specific setups. | |
| 22 | +| **License** | Recommended but optional. If you don't include a `LICENSE` file, the botpack defaults to MIT. Your license must allow the botpack to use and distribute your code. | |
| 23 | +| **Skill limit** | Your bot must be roughly Grand Champion rank or lower (at most as strong as Nexto). If your bot scores 42 goals before Nexto reaches 28 in any soccar mode, it's too strong. This prevents cheaters from abusing your bot in ranked play. | |
| 24 | + |
| 25 | +### How Bob Works |
| 26 | + |
| 27 | +[Bob](https://github.com/swz-git/bob) builds your bot inside a Docker container, producing a compiled binary that works on Windows and Linux without requiring users to install your language runtime. The botpack uses Bob to generate incremental patches so users only download what changed between releases. |
| 28 | + |
| 29 | +To set up Bob for your bot: |
| 30 | + |
| 31 | +1. Install **Docker** and make sure it's running. |
| 32 | +2. Add a `bob.toml` to your bot's repository. The structure varies by language: |
| 33 | + |
| 34 | + **Python (hardcoded bot):** |
| 35 | + ```toml |
| 36 | + [[config]] |
| 37 | + project_name = "my-bot" |
| 38 | + bot_configs = ["./bot.toml"] |
| 39 | + |
| 40 | + [config.builder_config] |
| 41 | + builder_type = "python" |
| 42 | + build_mode = "hardcoded" |
| 43 | + entrypoint = "bot.py" |
| 44 | + requirements = "./requirements.txt" |
| 45 | + ``` |
| 46 | + |
| 47 | + **Python (ML bot, e.g. RLGym):** |
| 48 | + ```toml |
| 49 | + [[config]] |
| 50 | + project_name = "my-ml-bot" |
| 51 | + bot_configs = ["./bot.toml"] |
| 52 | + |
| 53 | + [config.builder_config] |
| 54 | + builder_type = "python" |
| 55 | + build_mode = "rlgym" |
| 56 | + entrypoint = "bot.py" |
| 57 | + requirements = "./requirements.txt" |
| 58 | + ``` |
| 59 | + |
| 60 | + **Rust:** |
| 61 | + ```toml |
| 62 | + [[config]] |
| 63 | + project_name = "my-rust-bot" |
| 64 | + bot_configs = ["./bot.toml"] |
| 65 | + |
| 66 | + [config.builder_config] |
| 67 | + builder_type = "rust" |
| 68 | + targets = ["x86_64-pc-windows-gnu", "x86_64-unknown-linux-musl"] |
| 69 | + bin_name = "my_bot" |
| 70 | + ``` |
| 71 | + |
| 72 | + **C#:** |
| 73 | + ```toml |
| 74 | + [[config]] |
| 75 | + project_name = "my-csharp-bot" |
| 76 | + bot_configs = ["./bot.toml"] |
| 77 | + |
| 78 | + [config.builder_config] |
| 79 | + builder_type = "csharp" |
| 80 | + project = "./MyBot.csproj" |
| 81 | + ``` |
| 82 | + |
| 83 | + **C++ / custom setup:** |
| 84 | + ```toml |
| 85 | + [[config]] |
| 86 | + project_name = "my-cpp-bot" |
| 87 | + bot_configs = ["./bot.toml"] |
| 88 | + |
| 89 | + [config.builder_config] |
| 90 | + builder_type = "custom" |
| 91 | + dockerfile = "./dockerfile" |
| 92 | + values = { windows_binary = "./mybot.exe", linux_binary = "./mybot" } |
| 93 | + ``` |
| 94 | + |
| 95 | + See the **[bob-example repository](https://github.com/swz-git/bob-example)** for more complete, working examples for each language. |
| 96 | + |
| 97 | +3. Test your build locally: `bob build bob.toml` |
| 98 | +4. Submit your bot (see below). |
| 99 | + |
| 100 | +### How to Submit |
| 101 | + |
| 102 | +1. Fork **[github.com/RLBot/botpack](https://github.com/RLBot/botpack)**. |
| 103 | +2. Add your bot's repository as a git submodule: |
| 104 | + ``` |
| 105 | + git submodule add https://github.com/yourname/your-bot.git |
| 106 | + ``` |
| 107 | +3. Open a pull request. A maintainer will review your submission and, once accepted, Bob will automatically build and publish it to the pack. |
| 108 | +
|
| 109 | +??? tip "Pre-built binaries aren't accepted" |
| 110 | + Bob exists to ensure all bots in the pack are built in a reproducible, trustable environment. Submissions that include pre-built binaries will not be accepted — your source code must be buildable by Bob. |
| 111 | +
|
| 112 | +## Licensing |
| 113 | +
|
| 114 | +By default, submodules in the botpack fall under the MIT license. If your bot's repository includes its own `LICENSE` file, that license takes precedence — as long as it still allows the botpack to use and distribute your code. |
| 115 | +
|
| 116 | +You can request removal of your bot from the botpack at any time by opening an issue or PR on the botpack repository. |
0 commit comments