Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Resurrected VRMod
Play Risk of Rain 2 in VR with motion controls on the current game build. Unofficial OpenXR rebuild of DrBibop's VR mod, with Seekers of the Storm, Alloyed Collective and Hallowed Concepts survivor support.
| Date uploaded | a week ago |
| Version | 1.0.6 |
| Download link | Blowntobytes-Resurrected_VRMod-1.0.6.zip |
| Downloads | 432 |
| Dependency string | Blowntobytes-Resurrected_VRMod-1.0.6 |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2122README
Resurrected VRMod — Risk of Rain 2 VR mod, unofficial build by Blowntobytes
Play Risk of Rain 2 in virtual reality with motion controls, on the current Steam version of the game.
This is an unofficial, community-maintained rebuild of DrBibop's RoR2VRMod. The original mod stopped working after the game moved to a newer Unity engine; this build ports it to that engine, switches it to OpenXR, and fixes the things that broke along the way. All credit for the mod itself goes to DrBibop and the original contributors (see Credits). Released under the same MIT license.
Installation
With r2modman / Thunderstore Mod Manager (recommended): install it from Thunderstore with the "Install with Mod Manager" button, then start the game with "Start modded". If you previously imported a pre-release zip of this mod as a local mod (or still have DrBibop's original VRMod installed), uninstall that entry first — two copies of the mod must never be installed together.
[Manual install] Install BepInExPack (which brings RoR2BepInExPack, FixPluginTypesSerialization and BepInEx GUI with it) and HookGenPatcher. Then download the Latest zip — on that page, open Assets and click Blowntobytes-Resurrected_VRMod-<version>.zip. Do not use GitHub's green "Code" button; that gives you the source code, not the mod.
Then in r2modman / Thunderstore Mod Manager: Select Settings → Profile → Import local mod → select the zip in Downloads → Import local mod and start the game with Start modded.
The first launch copies the OpenXR native files into place; if the headset stays black the very first time, simply launch again. Pick up both controllers before the title screen so the runtime wakes them.
- Source code: https://github.com/Blowntobytes/RoR2VRMod
- Original mod: https://github.com/DrBibop/RoR2VRMod
- Found a bug? Open an issue on the GitHub page above and attach your
BepInEx/LogOutput.log.
Multiplayer
Only VR players need the mod. You can play with vanilla (non-VR) players.
Requirements
- Risk of Rain 2 (current Steam build).
- A PC VR headset with an OpenXR runtime: SteamVR (any SteamVR headset, Index, Vive, Pico/Quest via Steam Link, Virtual Desktop, ALVR), the Meta/Oculus PC runtime (Quest Link / Air Link), or Windows Mixed Reality.
- BepInExPack with its own dependencies (RoR2BepInExPack, FixPluginTypesSerialization, BepInEx GUI) and HookGenPatcher. The mod manager installs all of these for you. FixPluginTypesSerialization is required: without it the game starts in flat screen.
Which headsets work, and the one setting that matters
The mod does not care which headset you own — it asks Windows for whatever OpenXR runtime is currently active. So the only thing to get right is that the runtime matching your headset is the active one:
| Headset | Set this as the active OpenXR runtime |
|---|---|
| Quest 2/3/Pro over Virtual Desktop | Virtual Desktop streamer → Streaming → OpenXR runtime VDXR |
| Quest over Link / Air Link, Rift CV1, Rift S | Oculus (Meta) PC app → Settings > General → Set Oculus as active OpenXR runtime |
| Valve Index, HTC Vive, Bigscreen Beyond, other SteamVR headsets(unconfirmed) | SteamVR → Settings > OpenXR → Set SteamVR as OpenXR runtime |
| Windows Mixed Reality, HP Reverb G2 | Mixed Reality Portal / OpenXR Tools for WMR → set WMR as the runtime |
Only one runtime can be active at a time, so switching headsets means flipping this setting. Controller bindings are registered for Oculus Touch, Quest Touch Pro, Valve Index, HTC Vive, HP Reverb G2, WMR and the generic KHR profile, so the button layout below applies on all of them (Index/Beyond knuckles: the "grip" is the squeeze).
Turn off "Use Desktop Game Theatre while SteamVR is active" in the game's Steam properties.
Do not turn on the old "Use Oculus mode" config option — it is a leftover from the pre-OpenXR mod and does nothing in this build.
Controls
Bindings are built in (this build does not use the SteamVR binding editor). Button names follow the Oculus/Quest layout; on Index, Vive and WMR controllers the equivalent buttons are used.
Gameplay (right-handed; turn on "Left dominant hand" in the VR settings to swap the skill buttons)
| Input | Action |
|---|---|
| Left stick | Move |
| Right stick | Turn / look |
| Right trigger | Primary skill |
| Left trigger | Secondary skill |
| Left grip | Utility skill |
| Right grip | Special skill |
| A | Interact |
| B | Jump |
| X | Use equipment |
| Y (tap) | Pause menu |
| Y (hold) | Scoreboard / profile |
| Left stick click | Sprint (or turn on Auto Sprint in the VR settings to sprint automatically) |
| Right stick click | Ping |
Key items and elements (Hallowed Concepts content) — the left grip doubles as a modifier while you are carrying a key item. Hold it and press another button; the grip's own skill (Utility) then fires when you release the grip, and only if no combo was used during the hold, so nothing goes off by accident. Without a key item the grip, A and stick behave exactly as normal.
| Input | Action |
|---|---|
| Left grip (hold) + A | Use the key item |
| Left grip (hold) + right stick left | Previous element |
| Left grip (hold) + right stick right | Next element |
| Left grip (release, no combo used) | Utility skill, as normal |
While the grip is held, A does not interact and the right stick does not turn. The wrist panel on your left hand shows the key item you are carrying and reminds you of the buttons.
HTC Vive / original Windows Mixed Reality wands — these have no A/B/X/Y, so the trackpad clicks and menu buttons stand in (HP Reverb G2 has real A/B buttons and uses the normal layout):
| Wand input | Acts as |
|---|---|
| Right trackpad click, lower half | A (interact / confirm; key item = left grip + this) |
| Right trackpad click, upper half | B (jump / back) |
| Left trackpad click, upper half | X (equipment / ready) |
| Left trackpad click, lower half | Sprint (left stick click) |
| Right menu button | Ping (right stick click) |
| Left menu button | Y (tap = pause menu, hold = scoreboard) |
| Right trackpad swipe left / right while holding left grip | Previous / next element |
Steam Frame — mapped like a Quest/Touch controller: right A = A, right Y = B, left D-pad down = X, left D-pad up = Y, left View button = menu; sticks, triggers and grips are the same.
Enforcer — this survivor alone has the grips and triggers swapped so the shield is on the shield hand and the shotgun on the gun hand:
| Input | Action |
|---|---|
| Left trigger | Primary (shotgun) |
| Right trigger | Secondary |
| Left grip | Special |
| Right grip | Utility (Protect and Serve — raise the shield) |
The shield is only drawn while raised; its transparency is the Enforcer: Shield opacity slider in the VR settings. Left/right dominant hand still applies on top of this.
Menus — the controllers act as a gamepad, and every on-screen prompt names the button that really does it (A is A, the trigger glyph means the trigger):
| Input | Action |
|---|---|
| Left stick | Move the selection |
| A | Confirm |
| B | Back / cancel |
| X | Ready / alternate confirm |
| Left trigger | Back to the survivor grid (previous page) |
| Right trigger | Forward to the panels on the right — expansions / DLC, artifacts (next page) |
| Left grip / right grip | Previous / next tab in the settings panel. Nothing anywhere else — they cannot trigger anything by accident on the character select screen |
| Y | Open / close the pause menu, skip the intro cutscene |
On the character select screen, A picks the highlighted survivor; the Ready button then becomes the highlighted control, so press A again (or move to it with the stick) to ready up. One press never does both. Up/down on the rules panel walks Difficulty → Expansions → Artifacts; A on the Expansions or Artifacts header opens that picker.
Typing (VR keyboard): move the highlight onto any text box (game browser search and filters, host name, password, tags, the password box on a game's info panel) and press A. A keyboard appears below the menu: left stick moves over the keys, A types, X is backspace, Y is space, B closes and keeps the text, and DONE confirms the box the way Enter does. A bright amber frame always shows which menu control is selected.
Chat: click the left stick on the character select screen (or in a run while the game is paused) to open the keyboard on the chat box. B or DONE sends the message; B with nothing typed just closes it. The highlight returns to the menu afterwards.
VR settings
Open the in-game Settings and pick the VR tab (the same options are in BepInEx/config/VRMod.cfg, editable from the mod manager's Config editor). Notable options in this build:
- Auto Sprint — On by default - sprint automatically whenever you push the left stick, and re-engage on its own after anything cancels the sprint (firing a skill, taking a hit).
- Highlight chests — Chest, teleporters, shrines will have a yellow glow for easy locating.
- Item hints — On by default When pinging an item or scrolling through items in a command run, item name and info will be included on your left wrist or at the bottom of the item panel.
- Seated mode — On by default Because who wants to stand when playing this game? You can disable it to switch to standing mode but you'll have to restart the game to apply.
- Hidden item displays — items whose 3D model is hidden on your own character in VR (default: Kinetic Dampener). Comma-separated, matched by in-game name; the items still work.
- Menu selection frame / VR keyboard / VR chat (left stick click) — On by default the amber selection frame, the on-screen keyboard and the chat shortcut; each can be switched off.
- Enforcer: Shield opacity — how solid Enforcer's shield looks while shielding (0 = invisible, 100 = solid).
- Runtime hands — the hand, aim and held-weapon positions for the Seekers of the Storm, Alloyed Collective and Hallowed Concepts survivors are built into the mod and are no longer in the config file; there is nothing to tune. Older config files are cleaned up automatically.
Known issues in this build
- Hand models are not shown inside menus (menus are navigated like a gamepad). Hands and weapons work normally in a run.
- The hands for the Seekers of the Storm, Alloyed Collective and Hallowed Concepts survivors are generated from the character model at runtime rather than hand-made, so they are functional rather than pretty. Their positions are fixed in the mod and cannot be adjusted by players.
- The loading screen can sit at 0 % for about 20 seconds before it starts counting. This comes from the FixPluginTypesSerialization dependency on the current game build, not from this mod; it happens with the VR mod disabled too.
- Playing with vanilla players: the October 2026 game build loads extra unused characters in any modded game, which broke multiplayer with unmodded friends (they could not see you, or got stuck in the pod). This mod corrects that, so with the VR mod installed you can play with vanilla players again; without it, any other mod on its own still has the problem.
- Bhaptics / Shockwave haptics suit support is still compiled in but has not been tested with this build.
- Character support from VRAPI (custom survivors with VR hands) is included unchanged and untested.
The mod's internal plugin ID is still com.DrBibop.VRMod, so other mods that depend on the VR mod or VRAPI keep working.
Building from source
The original Visual Studio project files are kept, but this build was produced with a self-contained, offline toolchain that needs only PowerShell 7 — see build-tools/README.md for the reference-assembly setup and the exact build commands. The packaged zip layout (manifest.json, README.md, CHANGELOG.md, icon.png, plugins/, patchers/) is the standard Thunderstore format.
Credits
DrBibop: original mod and patcher programmer, animator
MrPurple6411: patcher programmer
dotflare: 3D artist
Ncognito: 3D artist
eliotttate: original creator, code assist
HutchyBen: code assist
AmadeusMop: code assist
Daerst: fixed the biggest and oldest bug of the original mod
laila, HutchyBen, Skarl1n, Geb, Popzix, Terrorcotta211: controller support for the original mod
Blowntobytes: current-game-version port, OpenXR rebuild and maintenance of this fork
The ParentCamera.projectionMatrix = _childCamera.GetStereoProjectionMatrix(eye) stereo fix came from a community report.
CHANGELOG
Changelog
This package continues DrBibop's RoR2VRMod (MIT), whose own history ends at 2.9.2; its original changelog is kept in the source repository as CHANGELOG-original-DrBibop.md. Version numbers restart at 1.0.x for this package.
1.1.0
New
- Rebindable VR controls. A new BINDINGS tab (next to the VR tab in Settings) lets you put every gameplay action on any button: plain presses, two-button combos (hold one button, press another), and separate tap / hold actions on the same button. Click a row, then press the button or combo you want. Prompts and wrist hints follow your bindings. Choices are stored in
[Bindings]inVRMod.cfg; "Reset all bindings" restores the defaults. - Remote-operated drones (when you are dead in multiplayer and take over a drone): the left stick flies along where you look (forward/back) and strafes left/right, the right grip climbs and the left grip descends. The grips do not fire drone skills while flying.
- New VR option "A: Jump when nothing to interact with" — A interacts as usual, and jumps when there is nothing in reach.
- Wrist chat on the left watch is taller, so more chat history is visible, and new option "Wrist chat always visible" (on by default) stops it fading out.
- Gamepad / third person: Auto Sprint now also works with a regular controller (Xbox etc.), and Y on the gamepad skips the intro cutscene.
- Left-handed mode now shows the Seekers of the Storm, Alloyed Collective and Hallowed Concepts survivors as an exact mirror image of right-handed mode, and they aim with the left hand.
- Item hints also work when pinging Bazaar and Crucible terminals. The key item wrist panel shows N'tormat's current page.
Changed
- Default combos: the key item modifier moved from the left grip to X (hold skills such as Engineer's harpoons work again). X + B = use key item, X + right stick left/right = previous/next element, X + A = switch equipment set.
- Enforcer: the shotgun is always in your dominant hand (right hand by default, left in left-handed mode) and the shield in the other, with the normal trigger/grip layout (dominant trigger = shotgun). The old "Enforcer: Mirror hands" option is gone. Shots and tracers come out of the shotgun, items attached to the shield only show while the shield is raised, and the hand/shotgun/shield positions are re-tuned.
- The new survivors always aim with the dominant hand (right hand in right-handed mode, left hand in left-handed mode), whichever hand holds the weapon.
- The Eclipse Lite proc flash is disabled in VR.
Fixed
- Drone flight dove into the ground: pushing the stick forward always flew down. Sprint (and Auto Sprint) forces a drone downwards in the game's flight code; sprint is now off while flying.
- Character select: after picking a survivor the loadout could not be selected or scrolled until you went back and picked again (the menu was left with nothing selected). Fixed.
- Drone picker and item / Command pickers: the highlight kept jumping back to the first entry, mostly with a gamepad or in multiplayer. Fixed.
- Wrist chat: no longer flickers or jumps to a random part of the chat history when you turn your wrist.
- Projectiles that came from above your head now come out of your hand: Seeker's Spirit Punch (no more aiming low), False Son's Laser of the Father (now clearly visible from the hand), Engineer's Laser Cutter beams; Seeker's Palm Blast charge/flash is on the hand.
- BINDINGS tab: stick directions are written out ("R stick left/right") instead of showing "?"; the VR and BINDINGS tabs scroll correctly to the selected row.
Known issues
- Switching left/right-handed mode in the middle of a run can leave held weapons see-through or firing from the wrong spot — restart the run after switching.
- When you join someone else's game as a client, skills that the host spawns for you (for example Seeker's Palm Blast) start at your character's head height instead of your hand.
1.0.6
Fixed
- Playing with vanilla (unmodded) players works again on the October 2026 game build. The game now loads extra unused ("junk") characters and skills whenever any mod is installed, which made a modded game's character tables differ from a vanilla player's: vanilla players saw you under the Ready button, got stuck in the escape pod, and the log filled with "malformed packet" errors. The mod now loads content exactly the way the vanilla game does. This affected every modded player on this build, not only this mod, and is fixed whenever this mod is installed.
Changed
- Controls section of the README covers key items, the Vive/WMR wand layout, Steam Frame and the Enforcer button swap.
1.0.5
New
- Updated for the October 2026 game update (Hallowed Concepts): rebuilt against the new game code, HUD, wrist panels, scoreboard and character select work again, and the bundled OpenXR/Input System libraries no longer spam errors.
- VR hands for the new survivors Enforcer and Acolyte, built from the characters' own arms, with their held weapons. Enforcer's shield only appears while you are shielding.
- Enforcer: triggers and grips are swapped left/right (shotgun on the left, shield on the right). New setting
[Survivor Settings] Enforcer: Shield opacity(0-100 %, 0 = invisible), also in the in-game VR settings. - Transformations: Acolyte's Reaper form and the Shrine of Compulsion Lemurian get their own hands and a first-person view scaled to the form's size, using the game's own camera height.
- Key items: hold the left grip and press A to use the key item; hold the left grip and flick the right stick left/right to change element. A wrist panel shows the key item and what the buttons do.
- Y button: tap for the pause menu, hold for the scoreboard.
- HTC Vive and original Windows Mixed Reality wand controls (DrBibop's SteamVR layout: right pad up = jump, right pad down = interact), including the VR keyboard on trackpad wands.
- Steam Frame controller support.
- All runtime hand, aim and weapon positions for Seekers of the Storm, Alloyed Collective and Hallowed Concepts survivors are tuned and built in.
Fixed
- Eclipse, Simulacrum, Prismatic Trials and Scavenger Bingo menus showed only the background in VR; their buttons are visible and usable again.
- Character select: the left trigger switches to the survivor grid again after the game update; the sprint icon is found again in the new HUD.
- The intro "skip" prompt is moved into view instead of being cut off at the edge.
- Key item button prompts no longer show as "unmapped".
- A temporary body (Shrine of Compulsion polymorph) no longer bakes the whole creature onto your controllers.
- A recurring hitch while playing, caused by the config file being re-read too often.
- Changing a VR setting in the in-run pause menu could leave the character unable to move afterwards: the stick could carry the menu selection onto a HUD control (the key item slot), and a selected control keeps the game in menu mode. HUD controls are no longer reachable by stick navigation, and a leftover selection is cleared when the menu closes.
Changed
- The per-character hand, aim and weapon settings and the
RuntimeHands (experimental)section are removed fromVRMod.cfg; their values are built into the mod and players can no longer adjust them. Old entries are cleaned out of existing config files automatically. - Dependencies: BepInExPack 5.4.2122 (which installs RoR2BepInExPack, FixPluginTypesSerialization and BepInEx GUI) and HookGenPatcher.
Known issue
- The loading screen can wait at 0 % for about 20 seconds on the current game build. This is caused by the FixPluginTypesSerialization dependency and also happens with this mod disabled.
1.0.4
New
- VR keyboard: press A on any text box in the multiplayer menus (game browser search and filters, host name, password, tags, and the password box on a game's info panel) to type with the controllers. Left stick moves, A types, X backspace, Y space, B closes, DONE confirms. Setting:
[VR Settings] VR keyboard. - Chat from the controllers: click the left stick on the character select screen, or in a run while paused, to type a chat message; B or DONE sends it, B with nothing typed closes. The menu highlight is restored afterwards and the closing press never reaches the lobby. Setting:
[VR Settings] VR chat (left stick click). - Bright amber selection frame around the currently selected menu control (
[VR Settings] Menu selection frame). [VR Settings] Hidden item displays: hides chosen items' 3D models on your own character in VR (default: Kinetic Dampener).- Per-survivor forearm switch for the runtime hands (
<Body>_Forearm; off for False Son, replaces the old global "Include forearm"). - Runtime hand, aim and weapon offsets in the config are re-read within 3 seconds of saving the file while in game (no restart, no Debug mode needed).
- Retuned aim/laser defaults for Seeker, Chef, Operator and Drifter, and False Son's club offset.
Fixed
- Highlight chests: the glow now goes out when a chest, money pod or multishop terminal is used up by any player (host or client), including the other two terminals of a tri-shop; money pods are highlighted too.
- Auto Sprint no longer interrupts skills that keep playing after the button is released (Bandit's Lights Out wind-up and similar); it waits for the weapon states to go idle.
- Multiplayer menus are fully navigable with the stick: the server browser's filter column is shown in VR and reachable, right/left crosses between the filters and the game list, the Host screen's lobby panel (Invite / Copy / Leave) is reachable, and the highlight never disappears after a refresh or panel change.
- Character select: up/down on the rules panel passes through the Expansions and Artifacts headers, so their pickers can be opened without pushing left.
- Kinetic Dampener display no longer reappears after a stage change.
- False Son's forearms are no longer baked into his VR hands.
- Obsolete settings (
Include forearm,*_IncludeForearm,Intro cutscene seated height) are removed from the config file automatically. - Menu glyph lookup at the title screen no longer throws a NullReference, and the Ready prompt (X) on the character select screen no longer disappears in multiplayer.
- Game info panel: its password box and details are reachable and typable.
- Health bar repositioning no longer spams NullReference errors in multiplayer when a body has no model yet.
1.0.3
- README: revised install steps (r2modman profile code for dependencies, then Import local mod), controls and VR settings sections; Thunderstore page text now matches the GitHub README.
1.0.2
- README rewritten with step-by-step r2modman instructions (code for the dependencies, then Import local mod).
- Source repository made public.
1.0.1 — first public release
(1.0.0 was consumed by a failed upload and was never published.)
Runs on the current game
- Ported to the game's current Unity engine and rebuilt on OpenXR (SteamVR, Meta/Oculus PC, Virtual Desktop VDXR and Windows Mixed Reality runtimes). Controller profiles for Oculus/Quest Touch, Touch Pro, Valve Index, HTC Vive, HP Reverb G2, WMR and the generic KHR profile.
- Seated (device) tracking origin with eye-level camera; right stick click recenters anywhere, including menus.
- Clean OpenXR shutdown on exit.
Survivors
- VR hands for the Seekers of the Storm and Alloyed Collective survivors (Seeker, Chef, False Son, Drifter, Operator) generated at runtime from the character model, posed from the bind pose so item pickups no longer bend them.
- Operator: gun attached to the left hand with tunable offsets; the docked drone leaves the right claw when thrown and returns when the skill is ready.
- Per-hand position and rotation offsets for every survivor in the config, shipped with in-headset tuned defaults.
Menus and HUD
- Every menu is navigated like a gamepad and every prompt shows the real button (A confirm, B back, triggers page left/right, grips switch settings tabs, Y pause).
- Seeker's lotus and meditation mini-game sit above the health bar (heights configurable).
- End-of-run report readable in VR, with configurable width and text size; left/right triggers page through players.
- Confirmation dialogs draw in front of the pause menu; pause menu draws in front of the report.
- Equipment slot icon, countdown and stock (including MUL-T's second slot) and the item strip initialise correctly on the hand HUD.
- Pickup notifications use the game's own duration.
- "Game window not focused" warning restored.
Intro cutscene
- Typed story text renders in the headset; seated height during the cutscene is configurable; the Skip prompt is visible from the start and only Y skips.
- Splash logo no longer drawn twice.
Settings
- VR tab in the game's settings: Auto Sprint, controller aim pitch, intro camera yaw, left dominant hand, snap turn, first person, HUD options.
- Config file:
BepInEx/config/com.DrBibop.VRMod.cfg(plugin ID unchanged so mods depending on the VR mod keep working).