Experimental PCVR mod targeting Inscryption Act 1 and Kaycee's Mod, with a Quest 3 connected to SteamVR through Steam Link. The development installation is the Epic Games Windows build.
Current prototype: managed plugin 0.3.4 with the user-verified native renderer from 0.2.0. The user completed an entire battle with working controller pointing and readable cards in 0.3.2. Version 0.3.3 adds dialogue trigger input, headset subtitles and a togglable 10-degree viewing tilt; dialogue and subtitles were subsequently confirmed by the user. Version 0.3.4 adds a stable map overview, narrow reward/altar input, and read-only distortion diagnostics; these latest additions await headset testing. See runtime test 08. See runtime test 07. The controller installer requires the exact verified native binary. Version 0.2.1 regressed the view and crashed; its timing change is withdrawn and native source has been restored to the earlier sequence. See rollback results, controller audit, and controller test instructions. Version 0.3.2 fixes a confirmed input initialization bug and uses a consistent table seat rather than capturing an arbitrary scripted view; see runtime test 06. The original minor movement distortion and stereo UI/effect integration remain unresolved.
- Epic build
1.10WIN, Unity2019.4.24f1, Mono, 32-bit x86. - The installed player has VR disabled in
boot.configand no discovered OpenVR provider in its native plugin directory. - Managed XR APIs exist. This does not establish usable VR rendering.
- BepInEx 5.4.23.2 x86 is pinned as the development dependency.
- The user installed and ran the diagnostic plugin successfully. See runtime test 01 for results. No game assemblies or saves were edited by the development tools.
Run from the repository in PowerShell:
.\scripts\bootstrap.ps1
.\scripts\bootstrap-openvr.ps1
.\scripts\build.ps1 -GamePath 'C:\Program Files\Epic Games\InscryptionWkwPQ'The bootstrap downloads the official BepInEx release into .dependencies and verifies its SHA-256 before extraction. Run scripts/bootstrap-openvr.ps1 to fetch the pinned OpenVR bindings before the managed build. The build script uses Windows' .NET Framework compiler and references the installed game's managed libraries without redistributing them. No .NET SDK is required for this build path.
Output: artifacts/BepInEx/plugins/InscryptionVR/InscryptionVR.dll.
For the renderer, also run scripts/build-native.ps1 (workspace-local portable compiler), then scripts/test-native.ps1 for isolated mock ABI/lifetime tests. Install into the existing loader with scripts/install-local.ps1 -EnableStereoRenderer; it backs up the prior plugin/config/log, verifies installed hashes and selects the renderer without enabling competing probes. A protected game folder may require elevation. The agent handles installation in the current session.
For this controller update, retain the verified native artifact rather than rebuilding it. Run scripts/test-controls.ps1, then install with scripts/install-local.ps1 -EnableStereoRenderer -EnableControllerPointer. Native mock tests cover 49 baseline assertions; controller checks cover 25 trigger assertions, 25 context-routing assertions, 12 map/viewpoint assertions, 16 OpenVR ABI assertions, 23 staged stick-gesture assertions and 49 installed-game metadata contracts. The production cursor, dialogue and event binding constructors are also executed against installed assemblies to check actual reflection lookup flags. These checks do not establish live headset interaction. Thumbstick navigation code is staged but not wired into gameplay; alternate input and view navigation hooks are researched in the input roadmap.
Build a complete loader-and-plugin package with scripts/package.ps1. Follow the first runtime test instructions to collect capabilities before attempting headset rendering.
Use a separate modding installation/profile with x86 BepInEx 5. Copy the built plugin into BepInEx/plugins/InscryptionVR. The normal diagnostic mode is the starting point; read BepInEx/LogOutput.log after reaching a Kaycee's Mod battle. Configuration is generated by the first plugin launch.
The plugin's OpenVR probe is explicitly opt-in. It cannot add a missing native provider. See its generated configuration for the probe and diagnostic controls. Do not call an initialization result successful VR until a headset test confirms stereo views and tracking.
The installed player reported supported=[None] and zero XR subsystem descriptors, so skip the legacy probe for this build. Use scripts/package-openvr-update.ps1 and the native OpenVR probe instructions for the next test. This includes Valve's pinned v2.12.14 win32 DLL and license. The native probe establishes runtime communication only.
The user completed installation, native SteamVR connection and the first stereo headset test. Subsequent refinements still need headset comparison. Proprietary game assemblies and dependency binaries are excluded from Git.
- Capability gate: load plugin, inventory XR devices and cameras, establish whether the built-in OpenVR path is usable.
- Seated rendering: stereo table, head tracking, scale and recentering. If legacy XR is unavailable, investigate an x86 provider or direct OpenVR compositor bridge.
- Kaycee's Mod gameplay: controller ray selection, cards, sacrifices, bell, items, maps and menus.
- Act 1 coverage: cabin traversal, puzzles, scripted view transitions and story events.
- Physical interactions and polish: card handling, haptics, comfort and compatibility.
The initial backend decision and its primary sources are in docs/vr-backend.md. Game hook findings are in docs/game-integration.md.
Before declaring the rendering milestone complete, verify distinct per-eye views, head rotation and translation, recentering, card readability, scene transitions, loss/recovery of tracking and clean exit through Steam Link on Quest 3. A compiled DLL alone does not satisfy this gate.