Skip to content

Runtime Unity Editor (RUE)

RUE Description

Runtime Unity Editor is an In-game inspector, editor and interactive console for applications made with Unity3D game engine. It's designed for debugging and modding Unity games, but can also be used as a universal trainer.

When applied to BeatSaber; RUE can be used to interact with objects in loaded scenes.
Not only can this be helpful for modders, but it can also benefit environment artists, providing an easy way to find specific objects and inspect them.

Question

Looking for something more modern?

If you're looking for a more modern tool, check out Unity Explorer (Ported to BSIPA.. Originally Developed by Sinai.)

Specifically for BeatSaber, Unity Explorer offers a more intuitive UI all over, and allows you to navigate scenes more efficiently.

RUE is still useful and works well with Beat Saber, especially if you're using mods like Chroma or Noodle.

This guide focuses on Runtime Unity Editor (RUE) for those sticking with that workflow, however both aren't much different.


Features Covered

  • Modifying GameObject transform
  • Destroying / Changing activity of GameObjects
  • Inspecting / Modifying components of GameObjects

RUE is made up of modules.
For this page, we will only be covering the Object Browser and Inspector modules, along with small/extra features.

PSA: This repo was specifically made with Chroma and Noodle in mind, so not all features that RUE offers will be coveredβ€”just in-depth explanations of the most helpful features.


Installation

Note: While you can refer to the Official repo for further documentation, you cannot install the repo version as it’s designed for other mod loaders like MelonLoader. We use a modified version of IPA for BeatSaber (BSIPA).

The installation process of RUE is the same as a typical BeatSaber plugin:

  1. Download the RUE .zip file from the BSMG Discord pc-mod-dev channel, or click here to directly download.
  2. Open the zip, and drag both Libs and Plugins folders into your BeatSaber root folder.
  3. Done! Launch BeatSaber and move on to the Navigation section below.

To open RUE, press the G key in-game. This opens the RUE UI (it may have some tabs already open).

Focus on the bottom UI area β€” this displays all the available RUE modules. Toward the right are additional toggles and tools.

We’ll start with Time, then cover the key modules.


Time

Time allows you to manipulate the Unity scene's timescale.

  • Higher values = faster animations and movement
  • Lower values = slower animations and movement

Two buttons are included:
- > resets time to 1.00
- ⏸️ Sets time to 0 (pauses time) β€” press > to unpause

Note: Time does not affect the speed of songs/maps.


Modules

RUE includes several modules: Clipboard, Inspector, Object Browser, Profile, REPL Console, Viewer.

We’ll only cover the Object Browser and the Inspector.


Object Browser

  • Lists all GameObjects in the scene
  • Allows editing of transform properties (Position, Scale, Rotation, etc.)
  • Lists all components tied to that object, allowing you to edit their properties in the Inspector.

Object Browser Anatomy

Click on each colored section to learn about it!

Search Options Object List Transform Properties Component List
  • Where you are able to search and filter through the GameObject list
  • Filter Options:
    • Names (Search by object name, default filter)
    • Components (Search by specific component type)
    • Properties and Statics (not relevant)
  • Clear β€” Clear search filter
  • Dump Obj β€” Not relevant

🟩 – Object List

  • Lists all GameObjects
  • Click to select an object
  • Grey boxes indicate an expandable parent object
  • Greyed-out objects indicate the object is inactive
  • Selected objects are highlighted blue
  • Right click to open the context menu, pretty much the transform properties

πŸŸ₯ – Transform Properties

Shows transform properties of the selected GameObject:

  • Toggle object active/inactive
  • Transform Control
    • Position, LocalPosition
    • Scale (LossyScale, LocalScale)
    • Rotation (EulerAngles, LocalEulerAngles)
  • Inspect button β€” sends object to Inspector
  • ❌ β€” destroys the GameObject

LossyScale (Read-only) - Accumulated scale of an object to the hierarchy LocalScale: Scale of the object relative to it's parent (USE THIS)

Warning

For RUE Users: Some transform sliders like rotation will behave in a strange way.
If this is an issue for you, I'd recommend using Unity Explorer.


🟦 – Components

  • Lists all components on the selected GameObject
  • Click a component to open it in the Inspector
  • Click the grey box to enable/disable the component
  • Includes a search filter like the main search bar

NOTICE

Environment Objects (including the player) use the normal unity transform units of 1 meter.
However, Gameplay objects (notes, bombs, etc..) use Noodle Units which is 0.6 meters for the convenience of making notemods. Learn more about this on the conversion ratios page.

Inspector

Used to inspect and modify GameObjects or their components.

Component properies like attenuation on the BloomFogEnvironment component can be changed here!

Inspector Anatomy

Click on each colored section to learn about it!

Search filters Tabs and member lists Properties view

πŸŸ₯ – Filters

  • Textbox + checkboxes
  • Only Declared β€” filters out likely useless properties
  • Fields β€” may be relevant (example shown below)

🟩 – Tabs & Member List

  • Tabs represent selected GameObjects/components
  • Member list shows deeper inspected objects
  • Tabs = parent
  • Members = children
  • Selected tabs/members = blue
  • Use tabs to organize multiple inspections

Tip

If you have an overwhelming amount of tabs, click the "Close all tabs" button located in the top right of the inspector to clear the list.


🟧 – Property View

Where all modifications are made:

  • Value/Return Type β€” Type of property
  • Member Name β€” Name of the property
  • Value β€” Current value that you can modify

Example

bool active = true;

Appears in the inspector as:s

  • Type: System.Boolean
  • Member Name: active
  • Value: true


Fields can appear as buttons (sub-class) β€” click to inspect deeper.

Example of a useful field: _fogParams, which controlls the fog.

Example for _fogParams

BloomFogEnvironmentParams _fogParams;
OR

  • Type: BloomFogEnvironmentParams
  • Member Name: _fogParams

Modifying the fog in game is a great way to get a feel for finding specific objects in different ways, and modifying component properties. Watch a video on how to do this with RUE here.

Usage Examples

Here are some examples to get you going with RUE.
I recommend to follow along in-game to get the hang of it!

Since there is dialogue missing from the videos, there are some explanations to some things you may have questions about.
Just click on the title of the card to see the video and expand it for explanations.

I used "spells" published by Swifter as the map for the examples, check it out here!

Find and modify the fog in a map (Component searching)

To change fog in BeatSaber, you must modify the parameters in the BloomFogEnvironment component. (Chroma taps into this component when you wish to change the fog on your map.)

Because there is only one BloomFogEnvironment component in the scene, we can search for it using the Component filter.

We could use "environment" as the search since its the parent object name, but component searching is more concrete, and sometimes quicker.

Find and modify lasers (Component searching)

Lasers in BeatSaber have the TubeBloomPrePassLight component on them – This is to control their visual behavior.
If you have ever modified a laser, or even a geometry light you may have heard of this component to modify specific properties like colorAlphaMultiplier and bloomFogIntensityMultiplier.

Because there are a ton of lights in this map, it takes some time to find the laser but not long.


That about covers the installation and basics for RUE!