A native stereo VR mod for Far Cry 2 (Dunia engine) with full motion controls, by Braxus.
The game renders each eye itself through its own engine, with the headset's per-eye projection, so the image has correct depth and scale. It is not a 3D re-projection. Output goes through OpenXR. Development and testing used a Meta Quest 3 through Virtual Desktop (VDXR), but any OpenXR runtime should work.
Version 1.0.3.1, mod build v233. Supports the Steam and GOG versions with the same DLL.
Optional headset-driven body rotation is available for the supported Steam
binary. In [VR] in fc2vr.ini, set HeadsetBodyYaw=1 and
GrassHeadYawFix=1 together to turn the on-foot body with your physical heading
while keeping grass facing stable. Both default off. This adapter is not yet
supported on GOG; see behavior, limits and tests.
- Native stereo rendering:
- every eye is a real engine render with the headset's off-axis projection;
- one wide culling camera shared by both eyes;
- sun shadows shared between the eyes, which brings busy towns to a solid 90 fps.
- Smooth motion: frame pacing (even movement steps at the headset's rate), steady arms and hands (float-precision fix, steadied shoulders, a hand stabiliser), and a steady view in cars, taxis and buses.
- Head tracking, with recentering (hold the left stick for 1 s, or F8).
- Room-scale walking (optional): walking around your room moves you in the game; walls stop you, and leaning stays leaning.
- Head-based movement (optional): the left stick walks you where you look instead of where your body faces.
- Motion controls: the Quest controllers drive the game's own gamepad input, so every menu, vehicle and button prompt works.
- Weapons in your hands: each weapon has its own grip pose, two-handed holds, and aiming down sights and scopes by raising the gun to your eye.
- Body holsters: rifle over the right shoulder, pistol at the right hip, machete in front of the chest.
- Physical machete swings.
- Grenades and molotovs: thrown with an arc preview.
- Optional VR climbing and NPC grabbing.
- Map and GPS held in the hand.
- Monocular: with the map up, the right grip brings it to your eye, where the right trigger tags targets.
- Mounted guns, aimed with either stick.
- Optional flashlight: raise the left hand to your left temple and pull the trigger.
- HUD and menus on floating panels; the aiming dot follows the gun.
- DLSS / DLAA (NVIDIA RTX) through a small 64-bit helper process, with per-eye history.
- Smooth or snap turning, with an adjustable smooth-turn speed (Home key, then Left / Right arrows).
- Optional graphics fixes:
- remove the brown colour filter;
- remove rim lighting;
- fix bouncing NPCs;
- steady camera.
- Launcher (ImGui):
- one-click install for the Steam or GOG game folder, with uninstall;
- settings pages and a controls guide;
- limits the game to 16 CPU cores, which the engine needs.
- Far Cry 2 (Steam or GOG) on Windows 10 or 11, set to DirectX 10 (see below). The mod does not work in DirectX 9 mode.
- An OpenXR runtime: Virtual Desktop (VDXR), SteamVR, Meta Quest Link and others.
- For DLSS, an NVIDIA RTX GPU. Without one, the mod runs without DLSS.
Far Cry 2 is a 32-bit game, so it needs an OpenXR runtime that supports 32-bit apps. Some runtimes only install a 64-bit version (for example Pimax's own PiOpenXR). The game then starts on the monitor, but the headset stays dark and fc2vr.log shows xrCreateInstance failed: -51.
- The launcher's Overview page has a VR runtime section. It says whether the runtime set up for 32-bit games is usable, and lets you pick any installed runtime that supports 32-bit games for Far Cry 2 only.
- Runtimes known to work: Virtual Desktop (VDXR), and SteamVR 2.17 or later set as the OpenXR runtime in SteamVR's settings. Pimax headsets can run through SteamVR.
Far Cry 2 can run in DirectX 9 or DirectX 10. The VR mod only works in DirectX 10. If the game starts on the monitor but nothing appears in the headset, the game is most likely in DirectX 9 mode. Use any one of these ways to switch:
- Steam: when you press Play and Steam asks which version to launch, choose the DirectX 10 entry. If you ticked "remember my choice" earlier, use the file method below instead.
- In the game: if your version shows a DirectX setting in the video/graphics options, set it to DirectX 10 and restart the game.
- Edit the profile (always works): close the game. Open
Documents\My Games\Far Cry 2\GamerProfile.xmlin a text editor (Notepad is fine). Find the<RenderProfile ...>line and setPlatform="d3d10a"(in DirectX 9 mode it readsPlatform="d3d9"). Save the file and start the game.
Check: open GamerProfile.xml after playing. If the <RenderProfile> line shows Platform="d3d10a", the game is in DirectX 10.
The game has to keep up with the headset's refresh rate (90 Hz on most headsets). Below it, frames reach the headset unevenly and everything that moves judders, most of all in vehicles. The launcher's Collect logs zip shows it in the PACE lines of fc2vr.log (fps vs. runtime refresh). If you can't hold the rate, set the headset to a lower refresh rate (72 or 80 Hz, e.g. in Pimax Play, the Oculus app, Virtual Desktop or DisplayRefreshRate=72 in fc2vr.ini), lower the render resolution or use a lower DLSS quality mode.
Version 1.0.1 fixes the most common cause: Windows 11 slows the game's timer while its window is in the background, which caps it at 64 fps. If the cap remains, check:
- Anti-aliasing must be None in the game's video options (
MultiSampleMode="0"inGamerProfile.xml). MSAA turns DLSS off and costs a lot in VR; DLSS / DLAA already does the anti-aliasing. - No frame-rate limiter: "Max Frame Rate" in the NVIDIA Control Panel / NVIDIA app (global or for FarCry2VR.exe), RivaTuner / MSI Afterburner, Lossless Scaling and similar tools.
- Virtual Desktop: frame rate set to 90 Hz (or the rate you want), and its performance overlay to see whether network or decoding is the limit.
Then send the launcher's Collect logs zip: it now includes the frame pacing, the headset refresh rate, NVIDIA driver settings and running overlay / limiter tools.
- Download
FarCry2VR-1.0.3.1.zipfrom the Releases page and unzip it. - Run
FarCry2VR-Launcher_1.0.3.1.exe, pick your Far Cry 2 folder (Steam or GOG), and press Install. - Make sure the game is set to DirectX 10 (see above).
- Start your OpenXR runtime (for example Virtual Desktop), then start the game from the launcher.
To install by hand instead, copy everything in the zip's manual_install folder into the game's bin folder: dinput8.dll, fc2vr.ini, openxr_loader.dll, nvngx_dlss.dll and fc2vr_dlss_host64.exe. Use the launcher to uninstall, or delete those files.
The NVIDIA DLSS runtime (nvngx_dlss.dll) is redistributed only inside the release zip, as part of the mod. It is never in this source tree.
| Control | Action |
|---|---|
| Left stick | Move. Click: sprint. Hold in for 1 s: recenter. |
| Right stick | Turn. Pull down: crouch. Click: syrette (heal). |
| Right trigger | Fire. With the machete, swing it instead. |
| Left trigger | Reload / clear a jam. With the right grip held: throw. At your left temple: flashlight. |
| A | Jump. Left grip + A: re-take the weapon's hold. |
| B | Tap: next weapon. Hold: grenade / molotov. Left grip + B: weapon away / back. |
| X | Use: doors, turrets, pick-ups, vehicles. |
| Y | Map / GPS. Also answers the phone. |
| Left grip | Two-handed hold, grab, climb. |
| Right grip | At a holster spot: draw that weapon. Gun at your eye: sights / scope. With the map up: monocular. |
| Menu | Pause menu. |
Vehicles:
| Control | Action |
|---|---|
| Right trigger | Accelerate |
| Left trigger | Brake / reverse |
| Either stick | Steer |
| Left grip | Handbrake |
| Right grip or A | Change seat |
| X | Get out |
| B | Headlights |
Keyboard:
| Key | Action |
|---|---|
| F8 | Recenter |
| End | Hand-angle menu |
| Home | Smooth turning speed |
| F9 | Stereo on/off |
All settings live in fc2vr.ini, which has a comment on each key. The launcher edits them for you.
The build uses llvm-mingw and runs on Linux or Windows (with MSYS2 or Git Bash).
# the mod (32-bit dinput8.dll proxy) and, with NGX set, the 64-bit DLSS helper
TC=/path/to/llvm-mingw/bin NGX=/path/to/ngx sh mod/build.sh
# the launcher: put the five payload files into launcher/payload, pack them, build
python3 tools/pack_payload.py
TC=/path/to/llvm-mingw/bin sh launcher/build.shNGX is a folder containing the NVIDIA DLSS SDK (sdk/include, sdk/lib) from https://github.com/NVIDIA/DLSS, plus an empty dummy folder. It is not included here. Without NGX, only the mod DLL is built.
Contributor tracking fixes and offline verification are recorded in contribution status. This branch is not a new release. The isolated math tests need CMake and a C++17 compiler, but no game or OpenXR runtime:
cmake -S mod/tests -B build/tracking-tests
cmake --build build/tracking-tests --config Release
ctest --test-dir build/tracking-tests -C Release --output-on-failureSource layout:
| Path | Contents |
|---|---|
mod/src/main.cpp |
Engine hooks: stereo double render, eye cameras, culling, shadows, near pass, UI layers, settings |
mod/src/xr.cpp |
OpenXR session, swapchains and layers (projection, HUD/menu quads, scope, monocular ring) |
mod/src/controls.cpp |
Controllers → XInput gamepad, action-map tracking, gestures |
mod/src/arms.cpp |
Arms and weapons in the hands, holsters, machete, throwing, climbing, NPC grabbing, flashlight, monocular |
mod/src/dlss_*.cpp, mod/src/dlss_host/ |
DLSS client (32-bit) and helper process (64-bit) |
mod/src/afw_fc2.cpp |
Alternate-frame warping (experimental, off by default) |
mod/src/gogmap.inc |
Steam → GOG address map (one DLL for both versions) |
launcher/ |
ImGui launcher with an embedded, LZMA-compressed payload |
Mod and launcher by Braxus, developed with Claude (Anthropic).
Licensed under the GNU GPL v3 (see LICENSE). Third-party components keep their own licenses; see THIRD_PARTY_NOTICES.md.
The DLSS helper program comes with an additional permission to link it with NVIDIA's DLSS SDK (see LICENSE-NVIDIA-EXCEPTION.md). NVIDIA's nvngx_dlss.dll is proprietary NVIDIA software, not covered by the GPL; it is redistributed only inside the releases, under the NVIDIA RTX SDKs License (copy: docs/NVIDIA-RTX-SDKs-License.txt).
This is an unofficial fan project, not affiliated with or endorsed by Ubisoft. Far Cry® is a trademark of Ubisoft Entertainment. No game files are included.
This product uses NVIDIA DLSS technology. NVIDIA and DLSS are trademarks of NVIDIA Corporation.