Vloxximity is a Guild Wars 2 proximity voice chat addon for Nexus. It pairs a Nexus addon client with a lightweight Rust relay server so players can talk to nearby players, squad members, and party members with positional audio.
- Nexus addon client for Guild Wars 2.
- Map-based proximity rooms driven by MumbleLink position data.
- Squad and party voice rooms driven by Nexus RTAPI group events.
- Push-to-talk, voice activity, and always-on voice modes.
- Per-room-type PTT bindings for map, squad, and party chat.
- Directional and 3D spatial audio with distance attenuation.
- Input/output device selection, volume controls, mute, and deafen.
- Optional peer markers rendered at world-space peer positions.
- GW2 API key validation for account-aware identity and persistent mutes.
- WebSocket relay server with TLS support, rate limits, size limits, and idle cleanup.
.
├── client/ # Nexus addon DLL crate
├── server/ # WebSocket relay server crate
└── Cargo.toml
The workspace contains two crates:
vloxximity-client: compiled as acdyliband loaded by Nexus.vloxximity-server: relay server for room membership, positions, and audio frames.
- Rust stable.
- Guild Wars 2 with Nexus installed for client usage.
cargo-xwinand the MSVC Windows target for Linux cross-compilation of the client.- A reachable relay server. The default client URL is
ws://localhost:8080/ws.
Install the Windows build tools used by the client crate:
cargo install cargo-xwin
rustup target add x86_64-pc-windows-msvccargo build -p vloxximity-server --releaseRun locally:
cargo run -p vloxximity-serverThe server listens on 0.0.0.0:8080 and exposes:
GET /healthGET /ws
The client must be built for Windows. Native Linux cargo check/cargo build will fail in Windows-only dependencies.
cargo xwin build -p vloxximity-client --target x86_64-pc-windows-msvc --releaseOutput:
target/x86_64-pc-windows-msvc/release/vloxximity_client.dll
Copy the built DLL into your Nexus addon directory.
vloxximity_client.dll
Inside Nexus/GW2:
- Open the Vloxximity settings window.
- Set the relay server URL if you are not using
ws://localhost:8080/ws. - Select input and output devices.
- Bind push-to-talk keys in Nexus keybind settings.
- Optionally add a GW2 API key with
accountpermission for account validation and persistent mutes.
By default the server runs without TLS for local development.
For production, set both TLS environment variables:
export VLOXXIMITY_TLS_CERT=/path/to/fullchain.pem
export VLOXXIMITY_TLS_KEY=/path/to/privkey.pem
cargo run -p vloxximity-server --releaseWhen TLS is enabled, clients should use a wss://.../ws server URL.
The server can spawn synthetic peers for local audio/spatial testing:
cargo run -p vloxximity-server -- --testpeer
cargo run -p vloxximity-server -- --testpeer=orbit
cargo run -p vloxximity-server -- --testpeer=gridorbit creates a moving peer. grid creates anchored peers at several distances.
Vloxximity stores user settings in the Nexus-provided addon directory.
settings.json: audio, room, spatial, and server settings.mutes.json: persisted account mute list.- GW2 API key: Windows Credential Manager on native Windows.
api_key.txt: Wine/Proton fallback.
Only the GW2 account permission is needed currently.
Room ids use a client-agreed prefix format:
map:<map-or-instance-key>
squad:<server-cluster-id>
party:<server-cluster-id>
The relay treats room ids as opaque strings. The client uses the prefixes for routing, volume, spatial behavior, and PTT selection.
Format the workspace:
cargo fmtCheck the server crate:
cargo check -p vloxximity-serverCheck or build the client through the Windows target path:
cargo xwin build -p vloxximity-client --target x86_64-pc-windows-msvc- Map rooms are managed automatically from MumbleLink.
- Squad and party rooms can auto-join when Nexus RTAPI reports group membership.
- Release builds collapse Nexus log output into one
Vloxximitychannel; debug builds keep per-module log channels.