Epic Online Services (EOS) Voice is a high-quality, cross-platform voice solution that works well with many different backend architectures. Since EOS services are modular, teams can adopt Voice on its own and connect it to whatever backend powers their game.
At AccelByte, a lot of studios use our session system as the source of truth for parties, teams, and matchmaking. So we built a small, open-source pattern that mirrors that session state into EOS Voice rooms, keeping memberships aligned and delivering credentials to game clients when they join.
It’s simply a clean way to connect backend-driven session logic with a modular voice system. We created the pattern for our own platform, and open-sourced it so any team using any backend can adapt it.
Why Voice Systems Need Session Awareness
Real-time voice isn’t just streaming audio, it relies on understanding what’s happening in the game’s social or session layer. No matter which voice provider you use, the voice service needs to know:
Some teams handle this directly inside their backend. Others use lobby systems. EOS Voice is flexible enough to work with either approach. It simply needs accurate, timely information about player membership so it can keep voice rooms aligned with what's happening in the game.
Our Approach: A Simple Pattern That Mirrors Session State Into EOS Voice
To help studios who use AccelByte as their backend source of truth, Damar Inderajati (our Engineering Manager) built a lightweight service on AccelByte Extend that keeps Epic Online Services Voice aligned with AccelByte Sessions.
This pattern is backend-agnostic, we built it for our own environment, but any backend with session or party events can adopt the same flow. We’ve open-sourced the implementation so teams can reuse it directly or adapt it to their needs.
How to Use This Pattern in Your Game:
Just reach out to your account manager to activate the hosted Extend app in your environment. No servers or infrastructure to maintain. Check out the Extend app directory for documentation.
Although we built it to connect EOS voice with AccelByte’s backend, the architecture is versatile enough that you can adapt it to work with virtually any backend that has a session system.
- Configure EOS credentials: EOS App ID, Client ID, Client Secret, Deployment information
- Wire up session events for these event types and map it to your backend's equivalent events: session.created, session.joined, session.left, session.deleted
- Deploy the service using Docker, Cloud Run, Kubernetes, or your preferred infrastructure.
- Implement token flow: When a player joins a session, the service generates an EOS Voice token. Send this token to your game client and pass it to the EOS SDK.
What’s Next
This is just the first Extend app we’re sharing publicly. We’re starting to collect all the little bits of backend glue we end up building internally and turn them into small, reusable pieces for the community.
The next one in line is an Extend app for Epic Online Services’ Trust and Safety Features.
Damar just wrapped it up. The Extend app listens for Easy Anti-Cheat events from the client and dedicated server, decides what action to take such as applying a temporary ban, permanent ban, sending a report, or updating telemetry and keeps everything consistent across the backend. We’ll share that write-up next and continue building out more 🙌