Skip to content

🎙️ 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 ProximityVoiceConfig Data 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:


📢 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!

👉 Join the Discord