Rhythm Doctor Level Editor Accessibility Mod User Manual


Table of Contents


Main Content

0. TL;DR Version

If you don't like reading my time-wasting nonsense professional hardcore user manual, or if you prefer to explore on your own, here are some important sections. I think it's still better to read them.

1. Basic Introduction

1.1 What is this?

That's a good question. This proves you've touched upon the most fundamental and important core concept of this project. So what exactly is it?

Isn't that obvious? The name says it all. No need to ask such simple questions. What? You thought I would actually write the user manual in a serious and formal tone? No, no, no, that's not my style. If I really wanted to write seriously, I might as well let AI help me write it - it would do a better job than me anyway.

Well, after my detailed introduction, I'm sure you already know what this project is for, so let's continue. Actually, I didn't say anything at all

1.2 Main Features

1.3 Important Notes

To prevent you from thinking the manual is too long and not wanting to read it, I need to state some important notes upfront.

  1. This mod currently has certain limitations, especially for visual features (such as window dance, sprites, etc.) which are not yet fully supported.
  2. Although the mod is relatively stable, it's still recommended that you develop a habit of saving frequently. I've encountered inexplicable crashes before (see details here), but fortunately I had this good habit. Well, I was forced to develop it.

2. Installation

2.1 System Requirements

Note: It is recommended to use the latest public beta of the game for the best compatibility.

Click here to see how to switch

2.2 Installation Steps

After extracting, besides this manual, you should also see the main folder. Go into it, select all, copy to the directory where your rhythm doctor.exe is located, and paste. That's it. The next time you run the game, the mod will run smoothly.

3. Quick Start

3.1 Editor Basic Concepts

Before really starting to explain how to use the mod, you need to understand some basic concepts of the native editor. I'm actually not very knowledgeable in this area either, so I'll just briefly summarize. If you don't want to read it, just skip ahead.

3.1.1 Tabs

There are six tabs in the editor, which can be switched by pressing number keys 1-6 on the main keyboard. They are: 1 Sounds, 2 Rows, 3 Actions, 4 Rooms, 5 Sprites, and 6 Windows. Each tab manages different types of events.

3.1.2 Events

You can think of events as instructions that tell the game what to do and when.

Various actions in a level can be called events. For example, playing music, nurse voice prompts, various effects, dialogues, and various beats.

3.1.3 Rows

Rows are equivalent to the "patients" you need to "treat". All beat events occur on rows.

3.1.4 Rooms

Rooms are used to control screen splitting and layout display, somewhat similar to split-screen. A level can only have four rooms at the same time. Each room can only have a maximum of four rows. In other words, a level can have a maximum of 16 rows.

3.2 First Launch

In the main menu, find Level Editor, this feature is still not compatible with narration., and press enter to enter.

Wait, didn't you say this mod makes it support narration? Well, don't worry about those details.

Anyway, if this is your first time entering, you'll need to agree to a terms of service. Press down arrow to read it, then find agree and press enter. PS: Wait, what does this have to do with "A Dance of Fire and Ice"?

Ahem, let's get back to the topic. When you press enter, you'll definitely notice that the music from level1 suddenly starts playing, but don't panic. This is because the editor loads a simple demo level by default when opening, and the level starts directly mainly because the game's operation keys conflict with the mod's. But it's not a big deal, it only happens occasionally with a few dialogs. You just need to calmly press P, and the level will pause. Or would you rather listen to the song?

After agreeing to the terms, you can try pressing left and right arrows to browse the events in the current tab. However, this demo level only has three events, located in the Sounds, Rows, and Actions tabs. If you can hear the screen reader announce the event name and location, that proves you've successfully entered the editor.

3.3 Preparation Before Creating a Level

If you can't wait to show off your skills and create a level, please don't rush. Before that, you need to understand the following preparation work:

  1. Create a new folder anywhere on your computer that you like.
  2. In the editor, press ctrl+n to create a new level, and set the save location to the folder you just created.
  3. Alright, now you can start.

4. Basic Operations

4.1 Menu/Dialog Navigation

In any dialog/menu, you can press arrow keys to browse controls, and enter to confirm. Press tab to switch between clickable items. If there are links in the text, you can press the space key to open the link list, use up/down arrows to select a link, and press enter to open it in the browser.

When in the level editor main interface, you can press f10 to open/close the editor's main menu. In this menu, you can create new levels, open levels, publish levels, and other operations. Of course, most of these operations have more convenient shortcuts, see the appendix.

4.2 Timeline Navigation

On the editing page, left/right arrow keys switch between events in the current tab, enter jumps to the event's location and plays.

However, there are two exceptions. When you're in the Rows or Sprites tab, you need to first press up/down arrows to switch to a row or sprite, then you can press left/right arrows to browse events. At the same time, you can also press shift+enter to edit rows. Editing sprites is not currently supported.

4.3 Creating Rows and Events

Press insert or f2 under a tab, and a menu will pop up listing the available event types for the current tab. Use up/down arrows to select, and press enter to create. If you're in the Rows tab, the created event will be placed on the currently selected row by default.

In the Rows or Sprites tab, press ctrl+insert or ctrl+f2 to create a new row or sprite, the operation is the same as creating an event.

Tip: When adding an event, pressing ctrl+enter directly will create the event and automatically open the event editor at the same time.

4.4 Editing Events

4.4.1 Moving Events

The mod provides a simple set of shortcuts to adjust the beat position of events. This set of shortcuts, aside from different keys and different adjustment targets, has a lot in common with the edit cursor. As follows:

Note 1: If the selected event doesn't have a beat property, pressing z and x will change to moving forward/backward by 1 bar, and modifier keys are not supported.

Note 2: The above shortcuts are effective for all selected events.

Note 3: If the selected events include both events with beat properties and events without beat properties, they cannot be moved.

4.4.2 Editing Event Properties

There is also a set of shortcuts to quickly adjust some basic properties of events. As follows:

4.4.3 Advanced Editing

Although the above two sets of shortcuts are convenient, they also have some shortcomings:

  1. They cannot adjust all properties.
  2. Although the mod provides modifier keys to increase adjustment precision, it's still not enough in some cases.

Therefore, if you need more precise adjustment, you can press ctrl+enter to open the external editor for editing. For more information about the external editor, please refer to Chapter 6.

4.4.4 Quick Actions

Now let me introduce a special shortcut: ctrl+shift+enter. Depending on the type of event you currently have selected, it performs several different actions. They are as follows:

The quick actions above may not be perfect. If you have any ideas for improvement, feel free to give me your feedback.

4.5 Grid System

The grid divides the timeline into equal units at a fixed ratio, helping you align beats more precisely. If you've used a digital audio workstation, this concept should be familiar.

A grid unit is expressed as a fraction 1/x, meaning each beat is divided equally into x parts.

If the above explanation confused you, don't worry — you'll naturally understand it after using it for a while.

Here's how to use it.

Press alt+g in the editor to open the grid settings menu. This menu supports up/down arrow key navigation and number key shortcuts for quick selection. You can also press esc to close the menu or enter to confirm at any time.

The menu contains nine options. The first eight are preset common options that cover most situations. If those aren't enough, the editor also supports a custom grid. Navigate to the custom grid option with up/down arrows or press number key 9, then press enter to apply directly, or ctrl+enter to set a custom grid size. Your custom value is saved until you close the level editor — even if you switch to another grid unit, you can easily switch back.

You might ask: the grid is set up, but how do I use it?

Patience — you'll find out shortly.

4.6 Edit Cursor

To make it more convenient for visually impaired players, the mod introduces the edit cursor feature. The edit cursor is a player-controllable temporary anchor point that doesn't move with playback and can be freely adjusted in position, making it convenient for players to quickly locate when creating events and other scenarios. Below are its shortcut key instructions.

PS: I know some people definitely didn't understand the definition of edit cursor above, but trust me, after reading the shortcut key instructions you should understand... I hope...

In addition to quick jumping, the edit cursor's applicable scope also includes:

5. Advanced Features

5.1 Virtual Selection and Event Chains

5.1.1 Virtual Selection

Virtual selection is a more flexible selection system than the native editor's, independent of the native editor's selection. Using both selections together can improve efficiency when performing complex event selections. Hopefully this can somewhat compensate for the inability of visually impaired players to use mouse drag selection.

Below are its shortcut key instructions.

The extension menu contains the following operations:

Meananing: Let the editor actually select all events in the virtual selection, so you can batch operate them, such as changing their positions uniformly or deleting them.

Meaning: Add all events currently selected in the editor to the virtual selection, making it easier to create event chains, etc. (see below for details).

5.1.2 Event Chains

The event chain feature allows you to save fixed combinations of events as presets, so when you need to reuse them, you don't have to insert each event one by one — just insert a pre-created event chain and all events will automatically appear in the level. Event chains for each level are stored independently and cannot be used across levels. If your level has custom game mechanics, this feature might be helpful.

Are you wondering why this feature is discussed together with virtual selection? Don't worry, take a look at the usage instructions and you'll understand.

To use this feature, you only need to remember two shortcuts:

When selecting an event chain, you can press left/right arrows to adjust the speed multiplier, which affects the spacing between events after insertion. The default is 1x (the original spacing of the event chain). At 0.5x the spacing will be stretched to twice the original, at 2x it will be compressed to half, and so on.

Note: Event chains are stored in the .RDLEAccess/EventChains folder under the current level directory. If you want to use them in another level, you need to copy them manually. This is for easier organization and management.

5.2 Conditions System

If you want certain event(s) to only trigger when specific conditions are met, you can use conditions. The following only covers how to use the conditions system through the mod; for more detailed rules on writing conditions, please search for RDLE tutorials on your own.

Select an event, then press alt+c to open the conditions menu. The following operations are supported in this menu:

Yes, this section is that short. After all, the operations themselves aren't difficult — the tricky part is planning and writing the conditions. So the rest is up to you to find tutorials. This is a mod user manual, not an editor user manual.

As levels grow larger, finding the event you're looking for among a sea of events becomes increasingly difficult. Therefore, the mod provides a feature that quickly matches events based on rules you define.

In the editor, press ctrl+f to open the search dialog, where you can set filtering rules for events. In this menu, press tab/shift+tab to switch between various options, up/down arrows to adjust the value of an option, and enter to attempt matching events that meet the criteria and automatically select them.

Once you've set up your match rules, you can press f3 and shift+f3 at any time to search backward/forward from the edit cursor for events matching the criteria. If you want to change the match rules, simply press ctrl+f again to readjust.

5.4 Tag Mode

In the editor, you can press shift+main keyboard 0 to toggle tag mode. This is a feature of the native editor itself, but the mod handles it differently from the original. When tag mode is enabled, the mod's behavior changes as follows:

In the dedicated tag editing dialog, in addition to manually entering tags, you can also quickly insert some commonly used tags. Feel free to explore.

Note: Support for tag mode is experimental. I'm not sure if this is necessary, and I hope to hear your feedback.

5.5 Editing Level Metadata

On the main page, you can press number key 0 on the main keyboard at any time to open the metadata editing page. Here you can edit some basic information about the level.

6. External Editor (RDEventEditorHelper)

6.1 What is this?

Because the official inspector panel is quite complex and troublesome to adapt, I simply made a separate external editor. This editor is completely rendered using Windows native UI, so screen readers can operate it very conveniently. It is currently used to edit events, rows, and metadata.

6.2 How to use?

When you select an event or row in the level editor, or press number key 0 on the main keyboard, the helper will launch. It will generate UI based on the object currently being edited, and you can directly use the screen reader to navigate between properties. After editing is complete, just click the OK button to apply it to the game. If you want to abandon the edit, just press esc or click the Cancel button.

Additionally, if the focus is on a sound list, you can press the space key to play the currently selected sound effect.

During editing, if the helper freezes or fails to launch for any reason and you cannot perform any operations, you can quickly press esc five times in the game to force terminate it. Note: Do not do this if the helper is working normally, or all changes you made in the helper will be lost.

7. Known Issues and Limitations

This mod still has many features waiting to be improved. The following lists currently known issues and limitations. The issues in the list will be attempted to be resolved one by one in future versions.

But then again, I hope the official version will support accessibility soon, so this mod won't need to keep updating.

  1. The Sprites tab is barely supported.
  2. Window dance? What's that? Addendum: I took a look, it seems to be editable, but I can't see it anyway, so I don't know if it works or not.
  3. Some custom options are not supported (such as custom characters).
  4. Bookmark functionality is not supported.
  5. Event multi-selection support is not flexible enough.
  6. Since a separate property editor was written, the operation should not be as smooth as the original version (although I don't know exactly how smooth the original version is).

8. FAQ

How to switch the game to the beta branch?

If you have the Steam version of the game, follow these steps:

  1. Find Rhythm Doctor in your Steam library.
  2. Right-click and select Properties.
  3. Switch to the Betas tab.
  4. Select the second entry in the list, i.e. beta public beta testing.
  5. Restart the game.

How to report issues effectively?

You can find ways to contact me in 9.3 Contact Information.

First, please describe your problem and steps to reproduce it in detail. Also, it's best to attach the logs from when the problem occurred.

How to view logs:

  1. Open BepInEx/config/BepInEx.cfg with a text editor.
  2. Find [Logging.Console] and set Enabled = true.
  3. Launch the game. A console window will appear alongside the game window.
  4. Reproduce your problem.
  5. After successfully reproducing the problem, switch to the console window and check whether there are any log entries with an Error prefix. If there are, provide me with that log entry and some nearby entries. If not, provide the most recent entries anyway — you never know, it might reveal the issue.
  6. If you don't want the console window to appear every time the game starts, refer to step 2 and set Enabled = false.

Why isn't the mod loading?

Please make sure your execution steps are: enter the main folder, select all and copy, paste in the game's main program directory, rather than directly copying the entire main folder over.

Why won't the helper open?

If you're just randomly trying to open it by pressing enter, it's perfectly normal that it won't open; if you can't open it when you want to edit an event in the game, and there's an error dialog, please download .NET Framework 4.8 and try installing it.

Why does the game freeze after the save dialog pops up?

This is a low-probability event, and I'm not sure what the problem is. This is why I mentioned earlier about developing the good habit of saving frequently. If you have this habit, then you're lucky; if not...

Why do all native editor shortcuts stop working after I click cancel in the save dialog when exiting the level editor?

After my testing, this seems to be a problem with the game itself? Because I tried the same operation without running the mod, and the problem can still be reproduced. You can only press alt+f4, then save or discard, exit the game and re-enter to solve it. But this is much better than the previous situation, isn't it?

9. Appendix

9.1 Native Editor Common Shortcuts Reference

Note: This only lists some commonly used shortcuts, not a complete list. If you want to see a more complete one, it's better to look for official documentation.

Shortcut Function Notes
ctrl+n New level None
ctrl+o Open level None
ctrl+shift+o Open last edited level None
ctrl+u Open URL None
ctrl+s Save None
ctrl+shift+s Save as Strange, why doesn't it work for me?
ctrl+shift+r Run current level as standalone None
ctrl+shift+p Export for publishing None
alt+s Level editor settings None
alt+q Exit None
ctrl+z Undo None
ctrl+shift+z/ctrl+y Redo None
ctrl+x Cut None
ctrl+c Copy None
ctrl+v Paste The original game behavior is to paste at the center of the view, the mod changes it to paste at the edit cursor.
ctrl+b/ctrl+shift+v Paste to next bar None
ctrl+d Clone selected event None
a Toggle auto mode None
f Toggle fullscreen In fullscreen mode, the timeline is hidden, mainly used for previewing levels. In this state, the edit cursor may not work as expected.
m Toggle metronome None
p Play/Pause None
delete/backspace Delete selected event None
Number keys 1-6 Switch between six different tabs None
ctrl+Number keys 1-4 Switch to different rooms If currently in another tab, will automatically switch to the Rows tab.
home Return to level start None
pageup/pagedown Rewind/Fast forward? I personally don't find it very useful.
shift+home Select all events before the currently selected event in the current tab (or row) I know this is a bit convoluted.
shift+end Select all events after the currently selected event in the current tab (or row) I also know this is convoluted too.
ctrl+shift+home Select all events before the currently selected event This is much better.
ctrl+shift+end Select all events after the currently selected event This too.
shift+0 Toggle tag mode See 5.4 Tag Mode for details. The mod currently has limited support for tag mode. When in this mode, while using arrow keys to browse events, the mod no longer announces event positions, but instead announces event tags.
esc Exit Full Screen/Deselect None

9.2 Mod Shortcuts Reference

Shortcut Function Notes
Up/Down arrows Browse between menu items None
enter Activate selected item None
space Open link None

Basic Operations

Shortcut Function Notes
f10 Open/close editor main menu None
` (backtick) Toggle single/two-player mode This is only for testing how the level behaves in different modes; it does not change level data.
Left/Right arrows Browse events in current tab (or row) None
Up/Down arrows Switch rows/sprites in Rows/Sprites tab None
enter Jump to selected event's position and start playing None
alt+g Open grid settings menu See 4.5 Grid System for details.
ctrl+f Open search dialog See 5.3 Event Search for details.
f3/shift+f3 Search backward/forward from edit cursor for events matching search rules None

Editing Operations

Shortcut Function Notes
ctrl+enter Open helper to edit event None
ctrl+shift+enter Execute quick action for the corresponding event See 4.4.4 Quick Actions for details.
shift+enter Open helper to edit row None
Number key 0 Open helper to edit metadata None
insert or f2 Insert event at edit cursor None
ctrl+insert or ctrl+f2 Add row/sprite to room (only valid in Rows/Sprites tab) None
z/x Move selected event forward/backward by 1 grid unit (or 1 bar) Add shift for 0.1 beat, add alt for 0.01 beat, add shift and alt for 1 bar. See 4.4.1 Moving Events for details.
c Snap event to nearest grid None
e/shift+e Switch target property to adjust See 4.4.2 Editing Event Properties for details.
r/t Adjust property value Supports modifier keys, see 4.4.2 Editing Event Properties for details.
alt+c Open the conditions menu for the selected event See 5.2 Conditions System for details.

Edit Cursor

Shortcut Function Notes
/ (slash) Move edit cursor to playhead position None
shift+/ Announce edit cursor's current position None
ctrl+/ Snap edit cursor to nearest grid None
ctrl+shift+/ Open edit cursor jump dialog None
alt+/ Jump to edit cursor's position and start playing None
, (comma) and . (period) Move edit cursor forward/backward by 1 grid unit Add shift for 0.1 beat, add alt for 0.01 beat, add shift and alt for 1 bar.

Virtual Selection and Event Chains

Shortcut Function Notes
shift+space Add/remove currently selected event to/from virtual selection None
ctrl+shift+space Clear virtual selection None
- (minus)/= (equals) Browse events in virtual selection Add shift to quickly jump to the first/last item.
ctrl+shift+x Cut all events in virtual selection None
ctrl+shift+c Copy all events in virtual selection None
ctrl+alt+space Open virtual selection extension menu None
ctrl+; (semicolon) Save all events in virtual selection as an event chain None
; Insert an event chain at the current edit cursor position None

9.3 Contact Information

Email: huangzitong94@gmail.com

QQ: 1528344627

itch.io page

GitHub

AudioGames forum thread

9.4 Sponsorship

If this mod has been helpful to you and you'd like to support my development work, in addition to recommending it to more people, you can also consider giving me some financial support. Please note that sponsorship here is directed to me personally and has nothing to do with 7th Beat Games.

Since this project uses AI assistance, I need to continuously invest funds to purchase AI API credits during development. If accumulated over time, the total cost of developing this mod will become increasingly high. Therefore, all sponsorship funds will be used entirely to purchase AI model usage credits to ease my financial pressure.

Sponsorship is entirely voluntary. Whether or not you sponsor, it will not affect your full use of any features in this mod, and I will not treat you differently in terms of issue reporting or future maintenance.

Note: Due to geographic limitations, I can only accept sponsorships via WeChat Pay and Alipay. If you cannot use these two platforms, please feel free to ignore this section.

WeChat Pay QR Code

Alipay QR Code