Skip to main content
Universal Modder
Menu

How to Mod Risk of Rain 2 with Universal Modder

To mod Risk of Rain 2 with AI, start with a small C# plugin in a separate mod-manager profile. Get the loader and one known source project working before adding a custom survivor, model or skill set. That gives your agent a concrete baseline and gives you a way to tell a dependency problem from a new code bug. First complete the Universal Modder installation checks in your chosen agent.

Can Universal Modder mod Risk of Rain 2?

Yes. Working Windows mods include a Helldiver survivor and an Arkham Knight Batman survivor. Both use a Unity Mono loader API route: BepInEx and R2API, with C# code and additional asset work. They run on RoR2 1.4.1#912 with Unity 2021.3.33f1; later game builds can break them, so record your version first.

The Helldiver project is built around controlled feature checks; the Batman project adds a more involved animation and asset-bundle pipeline. Both are single-player only. Read the full Helldiver build notes on GitHub.

Use solo runs for this guide. R2API restricts modded Quickplay and Prismatic Trials; do not remove those restrictions to test a plugin. A future private co-op project needs its own client, host and synchronization checks.

The Valheim guide also uses BepInEx, but pairs it with Valheim-specific packages and Jotunn instead of R2API. If your first goal is simply one new item, compare the Terraria tModLoader route. The game guides help you choose a project before committing to one game's dependency stack.

What you need

RequirementWhat to record
Your own PC game installationExact RoR2 version, storefront and actual game folder
A separate mod-manager profileIts resolved folder and installed dependency versions
BepInEx support for RoR2The packages required by the current source project
A C# build environmentThe project's target framework and supported SDK
R2API modules where usedBoth compile-time references and runtime dependencies
A backup of important savesA mod profile separates packages, but should not be assumed to isolate every save

Follow the R2Wiki First Mod guide: it uses Visual Studio with .NET desktop development and a development profile distinct from the one used for ordinary play. Its example has a documented dependency list and source solution.

Do not copy an older survivor project's SDK choice into a new project. Compare your actual game and source dependencies first. R2API uses separate modules; reference only the ones your project needs, as listed in the R2API README.

Step-by-step

1. Establish the loader profile

Create a fresh development profile in your chosen mod manager. Follow the maintainer's current prerequisite instructions for BepInEx, HookGenPatcher and the R2API modules used by its example. Launch that profile once, then close the game and inspect its log.

Keep the profile path and dependency list in the project record from the tutorial. If you accidentally launch a vanilla shortcut, copying a DLL into the profile will not make that other launch load it.

2. Inspect the example source with your agent

Obtain the Risk of Thunder ExamplePlugin source. Open it in your agent and ask:

text
Select code
Use Universal Modder to inspect this Risk of Rain 2 example plugin.
Compare its target framework, game references and R2API modules with my install.
List the build output and the exact development-profile destination.
Explain its existing test action before changing any behavior.
Keep the first change limited to one item text entry and a clear load log.

You can select the code to copy it manually.

The repository is a minimal maintainer example with logging and an item. Build that baseline before allowing the agent to rename identifiers or replace its project files.

3. Build and place the artifact

Open the solution, use its Debug configuration and build. Inspect the actual output directory rather than assuming a target-framework folder from an older tutorial. With the game closed, place the resulting plugin and debug symbols in the development profile's BepInEx/plugins directory, following the First Mod guide.

Keep one installed copy of your plugin. If an automatic post-build step also copies it, record that destination so you do not test an old DLL while editing a new one.

4. Verify the baseline in a solo run

Launch through the same profile. Confirm the plugin's load entry and check the log for dependency errors. In the maintained example, the guide's test action is F2 during single player to spawn its item; confirm that your source revision still binds that key before using it.

Observe the item and its text, then close the game. This confirms the baseline you ran; a custom survivor or an online session needs its own checks.

5. Change one thing and compare

Ask the agent to change one visible item text entry. Review the diff, rebuild and replace only your artifact. Repeat the same scene and action, then check that the new text appears. Keep the successful source revision before adding a numeric behavior change.

For a later stat change, define a measurable comparison: same survivor, same stage conditions, same items and only the intended plugin enabled. Record the observation and logs; do not judge the effect from a complicated run with many other mods.

6. Check removal

Exit the game, remove or disable only your experiment and launch the baseline profile again. Keep dependencies that other packages use. Preserve your source and test log, and avoid deleting a whole shared BepInEx directory as a shortcut.

Example prompts for Risk of Rain 2

Adapt these prompts to your own project:

text
Select code
Add one configurable numeric effect to my working item plugin.
Use the current R2API module for the feature and declare its dependency.
Design a solo comparison that distinguishes zero, one and two item stacks.

You can select the code to copy it manually.

text
Select code
My plugin fails while loading a dependency.
Compare the build references with the actual profile DLLs and log entries.
Find the first relevant error and propose the smallest dependency correction.

You can select the code to copy it manually.

The debugging prompts help keep these checks narrow. Use the CLI reference if you add asset preparation or capture after the code works.

Mods people built for Risk of Rain 2

The Helldiver project adds skills and stratagems to a custom survivor. The Batman project adds a melee-focused kit and a separate animation pipeline. Their build notes cover model updates, dependency breakage and runtime verification.

Neither is a drop-in starter package. Both convert assets locally from the authors' own game installations and limit what they distribute. For an original public mod, use your own or licensed assets and consult the sharing FAQ. You can learn the loader workflow without reproducing either character.

Known issues and fixes

SymptomFirst check
Plugin load entry is missingConfirm the launched profile, plugin destination and current build artifact
Dependency or missing-method errorCompare runtime modules with compile-time references and the actual game build
A previously working profile fails after updatingReproduce in a small development profile with a recorded compatible dependency set
Item appears but text is wrongInspect language tokens and the Language module dependency
Asset bundle fails or has missing scriptsCheck the Unity version and exact script names used to build it
A co-op feature differs from a solo resultTreat networking as a separate feature requiring client and host tests

Stale R2API dependency groups and old loader profiles fail in newer environments. Preserve the first error and the complete version list before updating packages at random. For a missing agent skill or toolkit command, start with Universal Modder troubleshooting.

Frequently asked questions

Does a working single-player mod automatically support co-op?

No. The known working survivor mods are single-player only; their multiplayer behavior is untested. A co-op mod needs separate checks for network state, required client content and host behavior.

Do I need the Unity editor for my first Risk of Rain 2 plugin?

The small code-and-item example can use the maintainer's existing project without a new custom model. Unity becomes relevant when you build new asset bundles, and its version must match the route you are using.

Should I install one old R2API package for every dependency?

Use the current modules required by your project's source and their declared dependencies. Reference only the split R2API modules a project actually uses; stale dependency groups fail in newer environments.