Kylemc1413 / SongCore

A plugin for handling custom song additions in Beat Saber.
MIT License
87 stars 48 forks source link

SongCore

A plugin for handling custom song additions in Beat Saber.

Configuration

info.dat Explanation

v1.31.0 has recently released info.dat v2.1.0 which adds _colorSchemes and _environmentNames, read the bsmg wiki if you intend to use these features https://bsmg.wiki/mapping/infodat-format.html#color-schemes

"_version": - Format Version, below is an example of 2.0.0
"_songName": - Name of your song
"_songSubName": - Text rendered in smaller letters next to song name. "ft. Artist"
"_songAuthorName": - Author of the song itself
"_levelAuthorName": - The person that mapped the note chart
"_beatsPerMinute": - BPM of the song you are using
"_songTimeOffset": - Offset playing the audio (in seconds)
"_shuffle": - Time in number of beats how much a note should shift
"_shufflePeriod": - Time in number of beats how often a note should shift
"_previewStartTime": - How many seconds into the song the preview should start
"_previewDuration": - Time in seconds the song will be previewed in selection screen
"_songFilename": - Filename of the audio file
"_coverImageFilename": - Filename of the cover file
"_environmentName": - Game Environment to be used
  Possible environmentNames (-> Name listed in game):
    - DefaultEnvironment -> The First
    - Origins -> Origins
    - TriangleEnvironment -> Triangle
    - BigMirrorEnvironment -> Big Mirror
    - NiceEnvironment -> Nice
    - KDAEnvironment -> KDA
    - MonstercatEnvironment -> Monstercat
    - DragonsEnvironment -> Dragons
    - CrabRaveEnvironment -> Crab Rave
    - PanicEnvironment -> Panic

"_customData": {
  "_contributors": [
    {
      "_role": - Role of contributor
      "_name": - Name of contributor
      "_iconPath": - Filename of icon to use for contributor
    }
  ],
  "_customEnvironment" - Custom platform override, will use "environmentName" if CustomPlatforms isn't installed or disabled
  "_customEnvironmentHash" - The hash found on ModelSaber, used to download missing platforms
},
"_difficultyBeatmapSets": [
{
  "_beatmapCharacteristicName": - Characteristic of the BeatmapSet, Refer to Characteristics further down
  "_customData":
  {
    "_characteristicLabel" : - The name to display for this selected characteristic when the icon is hovered
    "_characteristicIconImageFilename" : - The file name of the characteristic icon
  },
  "_difficultyBeatmaps": [ - DifficultyBeatmaps must be listed in Ascending Oder to show properly in Game
    {
      "_difficulty": - Name of the Difficulty (Easy/Normal/Hard/Expert/ExpertPlus)
      "_difficultyRank": - Rank of the difficulty corresponding to above (1/3/5/7/9)
      "_beatmapFilename": - Filename of the associated beatmap
      "_noteJumpMovementSpeed": 10,
      "_noteJumpStartBeatOffset": 0,
      "_customData": {
        "_oneSaber" : - true means the level is One Saber, false means the level uses both sabers
        "_showRotationNoteSpawnLines" : - false disables the lower note spawn line on rotational maps
        "_difficultyLabel" - The name to display for the difficulty in game
          Note: Difficulty labels are unique per _beatmapCharacteristicName
        "_editorOffset": 0,
        "_editorOldOffset": 0,
        "_colorLeft": { - The RGB values to override the colors to if the player has custom song colors enabled
          "r": 0.013660844415416155,
          "g": 0,
          "b": 0.07069587707519531
        },
        "_colorRight": {
          "r": 0.0014191981941151946,
          "g": 0.14107830811467803,
          "b": 0.07064014358987808
        },
        "_envColorLeft": {
          "r": 0.013660844415416155,
          "g": 0,
          "b": 0.07069587707519531
        },
        "_envColorRight": {
          "r": 0.0014191981941151946,
          "g": 0.14107830811467803,
          "b": 0.07064014358987808
        },
    "_envColorLeftBoost": {
          "r": 0.013660844415416155,
          "g": 0,
          "b": 0.07069587707519531
        },
    "_envColorRightBoost": {
          "r": 0.0014191981941151946,
          "g": 0.14107830811467803,
          "b": 0.07064014358987808
        },
        "_obstacleColor": {
          "r": 1,
          "g": 0,
          "b": 0
        },
          Color range for r,g, and b is a 0-1 scale, not 0-255 scale
      If a color is not present as an override and the player has overrides enabled, 
      it will use the color from the player's current color scheme, with the exception 
      of envLeft and envRight which will first try to use colorLeft / colorRight, the environment boost colors will fallback to the respective environment colors if not used
        "_warnings": - Any warnings you would like the player to be aware of before playing the song
        "_information": - Any general information you would like the player to be aware of before playing the song
        "_suggestions": - Any mods to suggest the player uses for playing the song, must be supported by the mod in question otherwise the player will constantly be informed they are missing suggested mod(s)
        "_requirements": - Any mods to require the player has before being able to play the song, must be supported by mod in question otherwise song will simply not be playable
      }
    }
  ]
}

The following is a template for you to use:

{
    "_version": "2.0.0",
    "_songName": "Song Name",
    "_songSubName": "Ft. Person",
    "_songAuthorName": "Artist",
    "_levelAuthorName": "Mapper Name",
    "_beatsPerMinute": 160,
    "_songTimeOffset": 0,
    "_shuffle": 0,
    "_shufflePeriod": 0.5,
    "_previewStartTime": 12,
    "_previewDuration": 10,
    "_songFilename": "song.ogg",
    "_coverImageFilename": "cover.jpg",
    "_environmentName": "DefaultEnvironment",
    "_customData": {
        "_contributors": [{
                "_role": "Kirb",
                "_name": "Kyle 1413",
                "_iconPath": "derp.png"
            }, {
                "_role": "Lighter",
                "_name": "Kyle 1413 The Second",
                "_iconPath": "test.png"
            }
        ],
        "_customEnvironment": "Platform Name",
        "_customEnvironmentHash": "<platform's ModelSaber md5sum hash>"
    },
    "_difficultyBeatmapSets": [{
                        "_customData" : {
                                "_characteristicLabel" : "MyCharacteristic",
                                "_characteristicIconImageFilename" : "test.png"
                        },
            "_beatmapCharacteristicName": "Standard",
            "_difficultyBeatmaps": [{
                    "_difficulty": "Easy",
                    "_difficultyRank": 1,
                    "_beatmapFilename": "Easy.dat",
                    "_noteJumpMovementSpeed": 10,
                    "_noteJumpStartBeatOffset": 0,
                    "_customData": {
                                    "_oneSaber" : true,
                                                "_showRotationNoteSpawnLines" : false,
                        "_difficultyLabel": "",
                        "_editorOffset": 0,
                        "_editorOldOffset": 0,
                        "_colorLeft": {
                            "r": 0.013660844415416155,
                            "g": 0,
                            "b": 0.07069587707519531
                        },
                        "_colorRight": {
                            "r": 0.0014191981941151946,
                            "g": 0.14107830811467803,
                            "b": 0.07064014358987808
                        },
                        "_envColorLeft": {
                            "r": 0.013660844415416155,
                            "g": 0,
                            "b": 0.07069587707519531
                        },
                            "_envColorRight": {
                                "r": 0.0014191981941151946,
                                "g": 0.14107830811467803,
                                "b": 0.07064014358987808
                            },
                            "_obstacleColor": {
                                "r": 1,
                                "g": 0,
                                "b": 0
                            },
                        "_warnings": [],
                        "_information": [],
                        "_suggestions": [],
                        "_requirements": [
                            "Mapping Extensions"
                        ]
                    }
                }
            ]
        }
    ]
}

Capabilities

Capability Mod
"Mapping Extensions" Mapping Extensions
"Chroma" Chroma
"Chroma Lighting Events" Chroma
"Chroma Special Events" Chroma

Beatmap Characteristics

Characteristic Source
"360Degree" Base Game
"90Degree" Base Game
"Standard" Base Game
"NoArrows" Base Game
"OneSaber" Base Game
"Legacy" Base Game
"Lawless" SongCore
"Lightshow" SongCore

Characteristics Editing

Characteristic Labels

Saber Count

Rotational Spawn Lines

All Directions Environment outside of 90/360

Custom Generated Mod Characteristics

Custom Characteristic Can Be Applied To Description Source Mod
"Horizontal" "Standard", "NoArrows", "OneSaber", "Lawless" Invert Left-Right Chirality
"Vertical" "Standard", "NoArrows", "OneSaber", "Lawless" Invert Up-Down Chirality
"Inverse" "Standard", "NoArrows", "OneSaber", "Lawless" Inverse Chirality

Keyboard Shortcuts

(Make sure Beat Saber's window is in focus when using these shortcuts)

For modders