Skip to content

Workflow

Swifter edited this page Nov 25, 2024 · 14 revisions

Previewing Maps On Desktop

An essential step in developing maps is setting up your game to work on desktop. This is referred to as "FPFC" (First Person Flying Controller). You'll need fpfc in your game's launch options in order to enable it.

By default, having the fpfc launch option will make the game unplayable in VR. However, one of the core mods SiraUtil allows you to switch in and out of FPFC by pressing G, and automatically enables/disables it depending on if you have your headset active.

SiraUtil also gives you the ability to pause/unpause, and allows you to actually exit the song.

Viewing Game Log

When developing maps, it is possible to screw something up and cause the game to throw errors. It's important to be able to see the log, so you know when these errors are happening.

You can enable a terminal window which will display the game's log by using the --verbose launch option.

Reading Map Errors

Some errors will be sort of meaningless to the average user and should be reported to the mod author. However, some are a lot more friendly and give useful information.

img.png

The region I highlighted with blue is called the stack trace, and essentially describes where the error took place in the program. Above that though, you can see a more human-readable error message: Could not parse custom data for custom event [AnimateTrack] at [0] Could not find track [myTrack].

This means there is an AnimateTrack event at beat 0 that tries to animate a track that no objects have. This information is vital for solving problems.

Launch Options

The Steam version of Beat Saber allows you to launch the game with certain flags (launch options) that tell the game how to launch.

You can add launch options by right-clicking Beat Saber in your library, and going to the General settings.

img.png

As shown above, you can have multiple launch options by separating them with a space.


If you're using BSManager, these flags are automatically added by the buttons in the interface. You have the option to add more (such as -aerolunaisthebestmodder) with the "Advanced launch" button.

Reloading Maps

When developing maps, it's necessary to reload them to see your changes.

Reloading Song List

In order to reload the song list, you should press Ctrl + R and then navigate to the song again.

  • Note: For levels in the CustomLevels and CustomWIPLevels folder, you can use R to reload them. However, since we set up a custom playlist, it isn't reloaded by R.

If you want to navigate to the song without scrolling through the song list, see the Focus Map In Song List section.

Hot Reloading In Difficulties

Follow these instructions to set up hot reloading: https://github.com/Aeroluna/Heck/wiki/ReLoader (also see launch options if you're confused about that)

After setting this up, you'll be able to scrub the map and hot reload certain beatmap elements. However, hot reloading using space does not reload the environment.

In order to reload the environment, you should go into the UserData/Heck.json file and change ReloadOnRestart to true.

img.png

Now, whenever you reload the map using R, the environment will be reloaded as well.

Focus Map In Song List

It can be frustrating to have to scroll through the entire song list to find your map again after reloading the song list, so I typically take one of two approaches.

Option 1

You can use SongBrowser to filter the song list to the name of your map. This means that every time you refresh playlists, your map will be the only one that shows up in the WIP playlist.

The nice thing is that it also saves this filter upon quitting and restarting the game.

  1. Click "Filter By" in the bottom of the song list. img.png
  2. Click "Search". img.png
  3. Search for your map.img.png

Now whenever you press Ctrl + R to reload playlists, you can click on the output playlist and it will focus your map immediately.

alt text

Option 2

You can use BetterSongList to keep your position in the song list when you reload.

The advantage of this approach is that you don't need to filter for your song, but the disadvantage is that you will need to find it in the list again every time your game is restarted or you switch playlists.

However, BetterSongList is considered more modern than SongBrowser and is typically supported faster and in newer versions.

Clone this wiki locally