Bot customization
GUI Customization
The easiest way to customize your bot appearance is via RLBotGUI. To bring up the appearance editor, click on the bot info icon and then click Edit Appearance.
You can use any item in the game, including painted items. The editor should have the latest items, but we have to manually update them. So if some recently added items are missing, please remind us on our discord. You can also click the bottom left buttons to preview your loadout in-game instantly!
Tip: When previewing in-game and trying multiple loadouts, sometimes the camera will lose track of your car when it respawns. You can avoid this by cycling the camera with your mouse buttons instead of using the number keys. With this technique it should be possible to get into a camera mode like hard-attach and have it be stable as you look at different wheels, blue car vs orange car, etc.
Manual Customization
In your bot's config file you can set your bot's display name. You can have a name of max 31 characters. If your name is too long or there is duplicates that is handled in the framework.
Example (bot.cfg
file):
[Locations]
# Path to loadout config. Can use relative path from here.
looks_config = ./appearance.cfg
# Path to python file. Can use relative path from here.
python_file = ./python_example.py
# Path to a file that can dynamically generate your bot's appearance. Optional.
loadout_generator = example_loadout_generator.py
# Name of the bot in-game
name = PythonExampleBot
# Optional: Location of a logo file to to show in RLBotGUI and tournament overlays. 400x300px preferred.
logo_file = ./logo.png
The field looks_config
should point to an appearance file. An appearance.cfg
file could look like this:
[Bot Loadout]
team_color_id = 27
custom_color_id = 75
car_id = 23
decal_id = 307
wheels_id = 1656
boost_id = 0
antenna_id = 287
hat_id = 0
paint_finish_id = 1978
custom_finish_id = 1978
engine_audio_id = 0
trails_id = 0
goal_explosion_id = 1971
primary_color_lookup = [50, 0, 200]
secondary_color_lookup = [100, 100, 250]
[Bot Loadout Orange]
# Same as above, except it applies to the orange car
Item IDs
The GUI appearance editor uses a csv file generated by BakkesMod using the dumpitems
command. You can see the most recently generated file here: https://github.com/RLBot/RLBotGUI/blob/master/rlbot_gui/gui/csv/items.csv
To see the items, you might want to browse at: https://rocket-league.com/items/
Colors
There are two ways to specify your colors:
- Use
team_color_id
andcustom_color_id
to index into the swatches (see images below). - Use
primary_color_lookup
andsecondary_color_lookup
to choose a swatch closest to the RGB value you provide.
In either case, you're limited to the same set of colors that can be selected in-game.
NOTE: The shade of the colors may not be correspond exactly with following pictures.
team_color_id
are the primary color of the car. The top left color is index 0 increasing as you go right:
custom_color_id
is the secondary color, also called accent. These are identical for both teams:
Painted Items
You can use a number based on this list:
- 0 - None
- 1 - Crimson
- 2 - Lime
- 3 - Black
- 4 - Sky Blue
- 5 - Cobalt
- 6 - Burnt Sienna
- 7 - Forest Green
- 8 - Purple
- 9 - Pink
- 10 - Orange
- 11 - Grey
- 12 - Titanium White
- 13 - Saffron
These are set in your appearance cfg file. Example:
[Bot Paint Blue]
car_paint_id = 12
decal_paint_id = 0
wheels_paint_id = 7
boost_paint_id = 7
antenna_paint_id = 0
hat_paint_id = 0
trails_paint_id = 2
goal_explosion_paint_id = 0
[Bot Paint Orange]
...
Loadout Generator
This is completely optional!
Recently we added the ability to generate your bot's loadout with a python script. This lets you choose different loadouts based on player index, randomize parts of your loadout, etc. The script is executed at the beginning of every match.
To use this feature, put a line like loadout_generator = loadout_generator_example.py
in your bot cfg file, in the [Locations] section. Then create a python file like this:
import random
from pathlib import Path
from rlbot.agents.base_loadout_generator import BaseLoadoutGenerator
from rlbot.matchconfig.loadout_config import LoadoutConfig
class SampleLoadoutGenerator(BaseLoadoutGenerator):
def generate_loadout(self, player_index: int, team: int) -> LoadoutConfig:
# You could start with a loadout based on a cfg file in the same directory as this generator
loadout = self.load_cfg_file(Path('appearance.cfg'), team)
# Or you could start from scratch like this
# loadout = LoadoutConfig()
if player_index == 0:
loadout.antenna_id = 287 # use a Psyonix flag if you're the first player
loadout.team_color_id = player_index # Different primary color depending on player index
loadout.paint_config.wheels_paint_id = random.choice([1, 2, 4, 5]) # Random wheel color
return loadout
Bot Logos
Either put a file called logo.png in the same folder as your bot cfg, OR specify logo_file = ... in your bot cfg in the same section as python_file. Dimensions of 400x300 px are preferred. It will appear in RLBotGUI, and maybe on stream!