Runtime patches for Echo VR (echovr.exe) that enable it to connect to echovrce community game services. Both the game client and dedicated game server use these DLLs to communicate with the Nakama-based backend.
Part of the nEVR project — keeping Echo VR alive.
- gamepatches →
dbgcore.dll— Runtime game modifications (CLI flags, headless/server modes, Detours-based hooks). Used by both client and dedicated server. - gameserver →
pnsradgameserver.dll— Game server networking (session management, events, external service communication). Used by the dedicated server only. - telemetryagent — Game state monitoring and telemetry streaming
- quest — Standalone runtime patches for Oculus Quest (Android/ARM64)
- gamepatcheslegacy — Frozen v1 implementation (self-contained with local common/)
- gameserverlegacy — Frozen v1 implementation (self-contained with local common/)
- dbghooks — Debugging hooks and function tracing for reverse engineering
- supervisor — PowerShell scripts for server orchestration (firewall, ports, instance management)
- common — Shared utilities (logging, globals, base64, symbol resolution)
- protobufnevr — Protocol buffer code generation from extern/nevr-proto submodule
nevr-runtime/
├── src/
│ ├── gamepatches/ # Game runtime patches DLL (PC)
│ ├── gameserver/ # Game server networking DLL (PC)
│ ├── quest/ # Quest standalone runtime (Android/ARM64)
│ ├── telemetryagent/ # Telemetry collection DLL
│ ├── legacy/ # Frozen v1 implementations
│ ├── common/ # Shared C++ utilities
│ └── protobufnevr/ # Protocol buffer definitions
├── extern/ # External dependencies (minhook, nevr-proto)
├── cmake/ # Build configuration helpers
├── scripts/ # Build scripts (Wine cross-compilation)
├── docs/ # Documentation
├── CMakeLists.txt # Top-level CMake configuration
├── CMakePresets.json # CMake build presets
├── vcpkg.json # Dependency manifest
└── Makefile # Build convenience wrapper- CMake 3.20 or higher Download
- One of:
- MinGW (cross-compile from Linux) - Recommended
- MSVC via Wine (Linux with Windows SDK mounted)
- Visual Studio 2022 (native Windows)
make configure # Configure with MinGW toolchain
make build # Build all components./scripts/setup-msvc-wine.sh # One-time setup
./scripts/build-with-wine.sh # Full build using MSVC via WineOpen the command palette (CTRL+P) and CMake build, when asked to select a kit, select Visual Studio Community 2022 Release - x86_amd64.
Or from command line:
mkdir build
cd build
cmake ..
cmake --build .After building, DLL artifacts are in build/mingw-release/bin/ (MinGW) or build/release/bin/ (MSVC):
gamepatches.dll→ Deploy asdbgcore.dllto game directorygameserver.dll→ Deploy aspnsradgameserver.dllto game directorydbghooks.dll→ For debugging/development onlytelemetryagent.dll→ For telemetry collection
See component-specific README files for detailed usage.
- GamePatches and GameServer are loaded into the game process (DLLs)
- GameServer communicates with the game via in-process hooks and with external services (ServerDB, WebSocket, HTTP)
- TelemetryAgent polls game state via HTTP API or direct memory access
- All protocol types are defined in
extern/nevr-protosubmodule
| Project | Description |
|---|---|
| nevr-runtime (this repo) | Runtime patches for echovr.exe (PC + Quest) |
| nevr-server | Custom game server (Rust) |
| nakama | echovrce game service backend |
scripts/build-with-wine.sh- End-to-end MSVC build via Winescripts/cl-wine.sh,lib-wine.sh,link-wine.sh- MSVC toolchain wrappersscripts/protoc-wine.sh- Protobuf compiler wrapperscripts/setup-msvc-wine.sh- Wine environment setup
Add local customizations to cmake/local.cmake (auto-included if exists). This file can override settings or add custom install rules.
Example:
# Deploy DLLs to game directory after build
set(GAME_DIR "C:/Program Files/Echo VR")
add_custom_command(TARGET gamepatches POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:gamepatches> "${GAME_DIR}/dbgcore.dll"
)Dependencies are managed via vcpkg (see vcpkg.json):
- curl - HTTP client for external API communication
- jsoncpp - JSON parsing
- minhook - Function hooking (Windows API)
- opus - Audio codec
- protobuf - Protocol buffer serialization
External submodules (in extern/):
- nevr-proto - Shared protocol definitions and game structures
- Logging: Use
Log(level, format, ...)fromcommon/logging.h - Game flags: CLI/mode flags (isHeadless, isServer) are in
gamepatches/patches.cpp - Protocol messages: Symbol IDs defined in
gameserver/messages.h - Protobuf: All types generated from
extern/nevr-proto- never edit generated files
Create distribution packages:
make dist # Full package with debug symbols
make dist-lite # Stripped binaries without debug symbolsOutputs:
dist/nevr-runtime-v{VERSION}.tar.zstdist/nevr-runtime-v{VERSION}.zipdist/nevr-runtime-v{VERSION}-lite.tar.zstdist/nevr-runtime-v{VERSION}-lite.zip
See LICENSE file for details.