r/vrising•
tsx-cloud

vrising + bepinex + arm

Tips/Tricks

Why bother with ARM? Because you already have it — a Raspberry Pi 5, an Orange Pi 5, a free Ampere A1 from Oracle Cloud... and hey, just because.

Overview

Spinning up a vanilla V Rising dedicated server on an ARM device is pretty straightforward if you use emulators like:

  • Box64
  • FEX-Emu

But once you dive into modding the server with BepInEx plugins, things start to get messy. The big issue? Emulators tend to choke on certain parts of the BepInEx pipeline. More on that here: https://github.com/BepInEx/BepInEx/issues/336

How BepInEx works

  1. BepInEx uses UnityDoorstop to hook into the VRisingServer.exe process at launch.
  2. On first launch — or after a game update: 2.1. Cpp2IL converts IL2CPP binaries into C# code. 2.2. Il2CppInterop then uses that code to generate Interop .dlls that let plugins talk to the game.
  3. A .NET runtime starts up, loads the Interop .dlls and all your plugin .dlls.

The ARM problem

Everything falls apart around steps 2.1–2.2:

  • FEX-Emu consistently crashes while running Cpp2IL.
  • Box64 hangs during .dll generation in the Il2CppInterop phase.

The Fix: Patch Il2CppInterop

After some trial and error, a workaround was found:

Disabling multithreaded file writing in Il2CppInterop completely solves the issue under Box64.

Specifically, the patch removes the multithreaded file output, which tends to behave unpredictably with Box64.

Patch:
https://github.com/tsx-cloud/Il2CppInterop/commit/165621195eb8f9009dc3da9aaf2e124333148c04

Prebuilt Docker Image

If you don’t feel like wrestling with Wine, Box64, Doorstop, and rebuilding BepInEx by hand — here’s a ready-to-go container with full plugin support:

How to Run It

  1. Create a file named docker-compose.yml and copy the contents from Docker Hub.
  2. Start the container with: docker compose up
  3. Drop your plugins into: ./vrising/server/BepInEx/plugins
  4. By default, the ENABLE_PLUGINS variable is set to false. Flip it to: - ENABLE_PLUGINS=true

Extra Box64 Tweaks You can further tweak Box64 behavior using this config file:
./vrising/server/BepInEx/addition_stuff/box64.rc

This lets you fine-tune the emulator for your specific device or OS quirks.

Performance

Emulation is always a tradeoff — compatibility vs. speed
To see where that balance lands, a few tests were run on a Google Cloud VM with an Axion (Neoverse-V2) CPU: c4a-highmem-2 (2 vCPU, 16 GB RAM, 50 GB SSD, 3000 IOPS, 140 MB/s)

GeekBench 6 CPU Test

GeekBench was run in four different setups:

ModeScoreRelative to native
ARM native3470100%
Box64131338%
Box64 + Wine NTSync On118534%
Box64 + Wine NTSync Off117534%

Takeaway: Lose about 60% performance from emulating x64. Running Windows apps via Wine adds another ~4% overhead.

V Rising Server Boot Time Test

To keep things fair, the comparison is made against an x64 CPU with similar raw single-thread performance — AMD EPYC Turin (Zen 5) CPU: c4d-highmem-2, 2 vCPU

Case 1: Booting with a 160 MB save file

PlatformBoot timeRelative to native
Native (Zen 5)23 sec100%
FEX-Emu + Wine109 sec21%
Box64 + Wine111 sec21%

Case 2: Same save + regenerate BepInEx Interop .dll

PlatformBoot timeRelative to native
Native (Zen 5) NTSync On99 sec100%
Native (Zen 5) NTSync Off102 sec97%
Box64 + Wine NTSync On359 sec27%
Box64 + Wine NTSync Off367 sec27%
FEX-Emu + Wine❌ crash—

Bottom line: Emulation is tough — performance drops to about a third.

Links

Docker image for vrising + BepInEx + ARM, also includes a build for x64 architecture
https://hub.docker.com/r/tsxcloud/vrising-ntsync

Docker image with steamCmd, box64 + wine
https://hub.docker.com/r/tsxcloud/steamcmd-wine-ntsync

Geekbench-6.4.0-Linux/geekbench6 on AMD Turin
https://browser.geekbench.com/v6/cpu/12363745

Geekbench-6.4.0-LinuxARMPreview/geekbench6
https://browser.geekbench.com/v6/cpu/12375616

box64 Geekbench-6.4.0-Linux/geekbench_x86_64
https://browser.geekbench.com/v6/cpu/12375508

box64 wine geekbench_x86_64.exe (ntsync on)
https://browser.geekbench.com/v6/cpu/12374593

box64 wine geekbench_x86_64.exe (ntsync off)
https://browser.geekbench.com/v6/cpu/12375184

Posted Jun 11, 2025, 8:44 PM UTC

145
Loading comments…