In this guide, I will explain how to use the editor for song setup, audio synchronization and some error solutions in Rift of the NecroDancer.
Editor Guide
Here’s how to use the editor for song setup, audio sync, enemy placement, and some bug fixes:
Importing Files
To get started, click the level settings button in the top right. All of the settings for files, difficulties and the song metadata can be found here. Scroll down and find the three settings that say import audio file/cover art/background video.
Before importing your audio file, a key issue with the current editor version is that songs cannot be synced in the editor, and it does not reflect the game’s sync. The game files use an independent sync value to the editor, so I figured out an odd workaround: add 8*(1/(bpm/60)) of silence to the song file in an audio editor, which should make the song’s offset exactly 0 thus avoiding any sync issues. You must go to open – open track directory and open (songname)_1 in a text editor and then change the “playbackOffset” field at the bottom to 0 to ensure this works. If there are multiple difficulties you might need to open each file individually.
Some songs might work without this, but it solves the issue of songs beginning during the 3-2-1 countdown; you can’t place enemies in the first 8 beats in the editor, so we add 8 blank beats to the audio and begin working after them.
The editor does not reflect this sync value, so I had to shift +4 beats (Shift page up 4 times) during editing and then move it back 4 beats (shift page down 4 times) for in-game testing. I’ll update this if I find an easier method.
Next, import your cover image. It must be a square and it must be under 1mb for the steam workshop upload to work, so a 500×500 image is ideal.
A video file can also be imported, which unfortunately must be encoded in vp8 webm format. The easiest way to get this is to throw whatever video you have into an online converter at the cost of video quality. As far as I can tell, video files cannot be accurately synced as they seem to begin playback the moment the level loads as opposed to the audio starting around the 3-2-1 countdown. It would require lots of guesswork.
Song Settings
BPM: The beats per minute of the song you’re using. This information can normally be found online through either a manual bpm tapper, programs that find it for you or a database with the song’s info in it.
Subdivision: Reflects the note value lock when you hold shift in the editor for precise enemy placement. I recommend using 4 to catch the most useful note values: beat, half-beat and quarter beat.
Title: The name of the song.
Subtitle: An extra info field that appears on the left during song selection. You can include a fun tagline or extra info about the song.
Artist: The artists and/or singers of the song.
Difficulty: The current difficulty being edited: it can be easy, normal, hard or impossible.
Character: The sidekick that appears on the right during gameplay.
Intensity: The number rating of the current difficulty.
Select audio/cover/video file: The settings used in the previous guide section.
Variants: A subcategory that lets you assign multiple difficulties to the same song. Click the add variant button at the very bottom to add new ones, then you can select them and change their difficulties and object placement individually.
How to Use the Editor
An important note: you should reload your project every time you open the editor to ensure that changes save to the right file. By default, it reloads the notes of your last project without actually opening it so it’s good to ensure it’s open.
Upon loading the editor, you will see the rift lane with the player’s arrows in the middle and beat numbers on the left. The first important thing to know is that by default, the arrows are locked to the middle of the screen while placing notes, but will move according to where you scroll during song preview so try not to scroll at all while previewing. This ensures smooth camera experience, but if you mess it up you can preview the song and scroll up or down to restore the original arrow position.
Choose the pen tool at the top to begin placing enemies. Select them from the right and hold shift to accurately place them on beats or between them. Placing an enemy will display it relative to the position of the arrows; for example, a shield skeleton above the arrows will be one shield skeleton, but the same one below the arrows will be a dead shield plus the dead skeleton it spawns half a beat later. Some enemies such as blademasters have odd positioning that requires a bit of intuition to figure out. When deleting them, you have to select the space they spawn from and not where they die.
Press space to begin music previewing from the location of the player arrows. You can control the sfx volume with / and * which can help isolate the music or check timing of the enemies you place. Some enemies may clip into each other during certain patterns, marked by a red X. Blademasters will not have this mark if their attack charge moves them backwards into an enemy so place them wisely.
Armadillos are timed to thirds, but this may not be accurately displayed in the editor preview. It’s better to count their timing in your head based on where you place them.
Wyrms can be placed on any beat, but their tail will always round to 1 beat after wherever you placed it i.e. 1 1/4 segments at 2 1/4 and 3 1/4 etc.
The f5 to test button seems to be a deprecated feature from the original crypt editor, so you must playtest in game if you want a more accurate recreation than the preview. A lot of the settings are also carried over from the old editor so it might be best to leave most bindings defaulted until the menu is streamlined.
Notes
I’ve only made one song to test the editor so far, but it took me a while to figure out how to use the editor and make the song playable in game so I hope these quick tips help streamline the process.
Features such as traps and bpm changes aren’t included since I haven’t tried them yet, but let me know if there’s any useful info I should add or if you have any questions/issues.