🎙️ Easy Proximity Voice Chat¶
Welcome to the official documentation for Easy Proximity Voice Chat (EPVC), the drop-in proximity voice chat for Unreal Engine.
No OnlineSubsystem. No EOS/Steam voice setup. It runs over your game's normal replication, works on dedicated servers, and is fully testable in PIE. Voice is treated as a real gameplay signal: channels, radios, voice effects, occlusion through geometry, runtime-swappable config, server & client muting, and Blueprint events.
🎯 Designed to be integrated in minutes, not weeks. Add one component, flip one setting, and talk.
🆕 What's new in 1.1¶
- Radios & Receivers: drop the new Proximity Voice Receiver component on any actor and it rebroadcasts a whole channel out of it. Radios, intercoms, PA speakers, walkie-talkies. See Radios & Receivers.
- Voice Effects: run voices through a Source Effect Chain (bitcrusher, filter, EQ...) straight from the config asset. See Voice Effects.
- Emitter selection: a speaker heard from their body and a radio no longer comb-filters, one emitter wins with a smooth crossfade. See Configuration.
- Per-emitter occlusion: a radio behind a wall is muffled even when the speaker is out in the open.
- Debug overlay: one line per emitter, brightest = the one you're hearing.
💥 What is Easy Proximity Voice Chat?¶
EPVC gives every player a spatialized voice that other nearby players hear based on distance, world geometry, and channels, without you touching any online backend. Drop the component on your player, decide when it transmits (push-to-talk, open mic, trigger zone), and the plugin handles capture, encoding, replication, jitter buffering, and 3D playback.
- ✅ 100% over normal replication, no OnlineSubsystem / EOS / Steam voice
- ✅ Works with Steam and EOS out of the box, zero extra setup
- ✅ Dedicated-server ready & PIE-testable
- ✅ Blueprint-first API
- ✅ Data-Asset configuration, swappable at runtime
🔌 Steam & EOS Compatibility¶
Yes, EPVC works with Steam and EOS. To be clear about what "no OnlineSubsystem" means: EPVC replaces their voice stack, not their networking. You keep using Steam or EOS for sessions, matchmaking and transport exactly as you do today.
This works because EPVC only ever speaks the language of standard Unreal replication — a Server RPC to send captured audio, a NetMulticast RPC to distribute it. Steam and EOS plug in one layer below that, at the NetDriver / SocketSubsystem level (SteamSockets, EOSNetDriver). Your voice packets ride over whatever transport is active without ever knowing about it.
The result is that the exact same code path runs everywhere:
| Setup | Works | Notes |
|---|---|---|
| PIE / standalone | ✅ | No online backend needed |
IpNetDriver (LAN, direct IP) |
✅ | |
| Steam listen server (P2P) | ✅ | No bHasVoiceEnabled, no Steam voice config |
| Steam dedicated server | ✅ | |
| EOS listen server (P2P / relay) | ✅ | No EOS RTC / Voice product required |
| EOS dedicated server | ✅ |
You do not need to enable Steam voice, provision an EOS RTC (Voice) product, or add OnlineSubsystemSteam / OnlineSubsystemEOS to your dependencies for EPVC to function.
⚙️ Key Features¶
Proximity Voice¶
- Spatialized 3D playback with attenuation
- Built-in jitter buffer for smooth audio over the network
- Works for listen server and dedicated server
Channels¶
- Speakers talk and listen on a channel
- Listeners only hear speakers on their own channel
- Great for teams, radios, lobbies, spectators
Radios & Receivers¶
- One component turns any actor into a radio, intercom or PA speaker
- Rebroadcasts a whole channel with its own attenuation, volume and effects
- Hear the channel without being on it, no replication needed on the actor
- Smart emitter selection when a voice reaches you from body and radio
Voice Effects¶
- Per-speaker Source Effect Chain (bitcrusher, filter, EQ, ring mod…)
- Applied per emitter: clean on the pawn, crunchy on the radio
- Swappable at runtime like any other config setting
Occlusion¶
- Voices get muffled by world geometry between speaker and listener
- Per physical material presets (glass, concrete, wood…)
- Volume + low-pass stack realistically per surface
Muting¶
- Local muting: mute one player for yourself only
- Server muting: block a player (or everyone) for the whole session
- Authority-safe, replicated
Runtime Config¶
- All tunables live in a
ProximityVoiceConfigData Asset - Swap presets live with a single call (e.g. enter a "no-voice" zone)
Blueprint Events & Debug¶
- Activity, channel, mute and self-voice events
- In-world debug overlay (ranges, occlusion lines, live levels)
📚 Guides¶
Use the navigation to set things up, in order:
- Quick Start, enable voice and hear your first words
- Configuration (Data Asset), tune capture, playback, latency
- Channels, separate who hears who
- Radios & Receivers, rebroadcast a channel out of a radio or intercom
- Voice Effects, bitcrusher, filters and the radio crunch
- Muting, local & server muting
- Occlusion, muffle voices through walls
- Blueprint Events, react to voice in your UI/gameplay
- Debug Overlay, see what's happening in-world
📢 Join the Community¶
Got ideas? Need help? Found a bug?
Join the Discord server to connect with other devs, give feedback, or ask for support. Your suggestions directly shape future updates!