Custom Colors

Custom Colors only work on the PC version of Beat Saber. Using a map with custom colors on a Quest will use default colors only.

What are custom colors?

In the PC version of Beat Saber, you can “inject” some text (JSON) into your info.dat file within your custom map to allow for five color overrides; Left and Right (block colors), Environment Left and Environment Right (laser and ring colors) and Obstacles (walls).

This is how some mappers have created holiday themed maps using Christmas or Halloween colors.

The Oculus Quest version of Beat Saber doesn’t support custom colors like this. If you attempt to load a map with custom colors, it will still play – but it will ignore the custom color settings.

How do I use custom colors?

Every map for Beat Saber has a data file included named INFO.DAT. This is a specially formatted text file that uses a data structure known as JSON. You don’t have to understand it to use custom colors.

Color values are set using RGB decimal values and are injected within the “_customData” node of the INFO.DAT JSON file.

Here is a map without any custom color values.

No custom color code values are here.

The JSON colors values can be inserted anywhere within the “_customData” node, but many mappers like to inject it right after the “_editorOldOffset” node. Let’s look at a song that has custom colors injected.

Custom colors are injected in this song.

It is important to note that maps with more than one difficulty rating (Easy, Normal, Expert, et al) must have the custom colors injected into each map difficulty’s “_beatmapCharacteristicName” and each of their “_difficulty” nodes.

If we wanted to add custom colors to the map below, we would have to inject the color values multiple times (this map has many characteristics and within each one there are multiple difficulties).

Color values have to be injected in every characteristic and difficulty within them.

Most mappers have one characteristic and only few difficulties, so usually this isn’t a big deal.

The formatting of the color code JSON must be precise and fall perfectly inline with the rest of the data in the JSON INFO.DAT file. If you’re not super familiar with JSON, a poor injections of color codes can and will break your map!

What are RGB Decimal values?

Most people are familiar with the idea that colors on computers are usually made up of three primary color values (along with an alpha channel); RGB or Red, Green and Blue. You see this all the time with color pickers you use in standard computer software.

You’ve probably seen this color picker before. The orange selected is made up up three colors: R=204, G=101, B=255.

In the above example, an orange color is created by using RGB values between 0 and 255.

As you may have figured out from the screenshots of a custom color enabled map above, Beat Saber doesn’t use full numbers (0-255), but instead uses a “decimal” version which means the values fall between 0 and 1. The formula for converting is simply to take your selected color value (red = 204 in our above example) and divide it by 255. For green divide 101 by 255 and blue is already zero …. and zero is still zero.

So for R=204, G=101, B=0 in traditional RGB format – we would use R=0.8, G= 0.39607843137 and B=0.

Whew! A lot of work just to make ONE color value for ONE of the five color characterstics!

How does BMT help you with custom colors?

Because custom colors only work for PC Beat Saber players (not Quest) we have elected to offer you a tool to help you derive the code you need to inject into the INFO.DAT file – but not actually alter your files.

Instead, BMT offers you a near end-to-end custom color helper that will let you easily pick your colors for all five options and hit a button to export the special JSON text right to your clipboard so you can inject it yourself into the INFO.DAT file when your map is ready for final packing and release.

BMT lets you pick colors and export the JSON preformatted to your clipboard

In the above example, I’ve used BMT to create all the various colors and have exported to the clipboard. So you can see exactly what BMT output, I’ll paste the contents of the clipboard below.

"_colorLeft": {
"r": 0.5019608,
"g": 0.2509804,
"b": 0.2509804
},
"_colorRight": {
"r": 0.2509804,
"g": 0.5019608,
"b": 0.5019608
},
"_envColorLeft": {
"r":0.3098039,
"g": 0.5568628,
"b": 0.6901961
},
"_envColorRight": {
"r": 1,
"g": 0.5019608,
"b": 0
},
"_obstacleColor": {
"r": 0,
"g": 0,
"b": 0.627451
},

If I were to open my INFO.DAT file now, I put my cursor right after the comma after “_editorOldOffset” and hit PASTE, that would complete the custom color injection for the Expert difficulty.

Put your cursor here, and hit PASTE!

After the pasting, you will see the color codes in the file. Don’t worry about the spacing looking off – the file is still valid. Spacing in JSON files are to make it easier to read to you; the computer doesn’t really care. Don’t forget to save your INFO.DAT

Post color codes injection.

Additional Tips

  • Remember, only PC Beat Saber players can see your awesome color palette choices. Quest users will see the default colors.
  • Every characteristic (standard, noarrows, lawless, one saber, etc) and every difficulty within those characteristics (Easy, Hard, Expert, et al) must have your colors injected into the INFO.DAT. What’s cool is that different difficulties/characteristics can have their own colors!
  • Your editor may wipe this data out – so you must inject the colors after you’re totally done editing and are ready to upload your map to your playtesters or Bsaber.com.
  • BMT will save your custom color set between sessions. So if you have a “signature color set” you like to use, BMT will store it away for you for the next time you run it.