Blog

We Built (and Open-Sourced) a simple pattern for Connecting EOS Voice to Any Game Backend

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:

  • who’s currently in a party or session
  • when players join, leave, or switch groups
  • when a voice room should be created
  • when it should be closed

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.

The idea is simple: your backend defines who’s in a party or session, and the service updates EOS Voice rooms to reflect those changes. The flow is straightforward:

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:

  • If you’re already using AccelByte:

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.

  • If you're on another backend, you can adapt the open-source code:

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.

- Clone the repository

- 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 🙌

Find a Backend Solution for Your Game!

Reach out to the AccelByte team to learn more.