I created a tool to convert a standard Beat Saber level into a 360 degree one! Here's how it works.
When Beat Saber dropped their early december update, it included 360 degree levels. These are levels that are able to rotate the platform, and the player has to follow the rotation of the platform to be able to hit the incoming blocks.
The amount of 360 levels was rather limited, only a few were included. This is the main reason I made this tool.
I began making this tool in december 2019, just a few hours after the update dropped.
The tool iterates the standard, non-360 level per timeframe (0.1 seconds for example), for each timeframe, it does the following things:
The code for a simple rotation event to the left looks like this:
// store the left notes in the current frame (~0.1 second) in an array
BeatMapNote[] leftNotes = notesInFrame.Where((note) => (note.cutDirection == 2 || ((note.cutDirection == 4 || note.cutDirection == 6) && note.lineIndex <= 2)) && (note.type == 0 || note.type == 1)).ToArray();
// if there are more than 2 left notes and left rotation is enabled (could be disabled due to too mush rotations at once)
if (leftNotes.Length >= 2 && enableGoLeft)
{
// set the current event direction to left
EnsureGoLeft();
// return (rotationAmount, shouldGenerateWall)
return (leftNotes.All((note) => note.cutDirection == 2) ? 2 : 1, true);
}
This is done for each timeframe in the level. And for multiple note configurations that should create a rotation event.
For example, here's a middle wall that got removed because it is not fun when you have to step to the left and rotate at the same time!
To avoid conflicts, left walls are only placed when going left and right walls are only placed when going right. These freshly generated walls can be cut off later (step 3), if they are too long.
Here is an example of 2 walls that got generated:
For instructions on how to use and install the tool, you must visit the GitHub page.
Enjoy!