Skip to content

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.

Image from Gyazo

Video guide

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):

# 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 = ./

# Path to a file that can dynamically generate your bot's appearance. Optional.
loadout_generator =

# 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:

To see the items, you might want to browse at:


There are two ways to specify your colors:

  1. Use team_color_id and custom_color_id to index into the swatches (see images below).
  2. Use primary_color_lookup and secondary_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 = 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!

Need inspiration?