# Integration with the Vivox Unreal SDK

> Learn how to integrate the Vivox Unreal Software Development Kit into your project.

> **Note:**
>
> The Unreal SDK does not currently support using Vivox with Unreal's [Live Coding](https://docs.unrealengine.com/5.0/en-US/using-live-coding-to-recompile-unreal-engine-applications-at-runtime/) feature in Unreal 5.2.

Vivox provides group text and voice communications through channels. Users can communicate with each other by joining the same channel.

Channels support the following functionality:

* Voice
* Voice rendered with 3D effects (positional/directional audio)
* Text
* Muting a user for oneself
* Muting a user for all users in the channel
* Forced removal of a user from a channel (“kick”)

Channels have the following characteristics:

* Channels are identified by channel IDs.
* Channel IDs are assigned by the game.
* Channels are platform agnostic - game clients running on different platforms interoperate with each other.
* Channels are created on demand, and inactive channels consume no Vivox resources.

Users have the following characteristics:

* Users are identified by user IDs.
* User IDs are assigned by the game and must be unique to each user.
* Users that are not logged in to the system consume no Vivox resources.
* Users can subscribe to the presence of other users. Presence is a status and message that a user can optionally share with other users, regardless of whether either user is in a channel.

To expose Vivox capabilities to players, a game developer must perform the following actions:

* Determine how to map player IDs to Vivox user IDs.

  * Ensure that there is one Vivox user per game player.
  * Typically, games use the player ID as a portion of the Vivox user ID, because the player ID is already unique to the player.

* Determine how to map game audio and text-enabled object identifiers to Vivox channel IDs.

  * Typically, games use the game object identifier as a portion of the Vivox channel ID.

  * Audio or text-enabled game objects include the following examples:

    * Guild channels
    * Team channels for team versus team match play
    * Lobby channels
    * Private conversations between two players
    * Physical regions in a game world that map to 3D audio spaces

* Determine the client platforms that are supported by a game.

* Integrate the game client with the Vivox Core SDK to ensure that the following actions occur:

  * When a player logs in to a game, the corresponding user is logged in to the Vivox system.
  * When a player activates a game object (for example, joining a guild channel or entering a particular region in a game), the player is placed into the corresponding Vivox channel.
  * When a player wants to see the presence information of another player, the game client creates a subscription relationship between the corresponding Vivox users.
  * When text messages are available in a channel, display those text messages in the game.

* Modify the game server to deliver Vivox access tokens to game clients (if a game developer wants to secure access to the Vivox voice system).

  * A Vivox access token is a JSON Web Token that grants the holder of that token a one-time permission to execute a particular Vivox operation.

  * The following operations are controlled by access tokens:

    * Signing in to Vivox as a specific user
    * Joining a specific Vivox channel as a specific user

* Optionally modify the game server to communicate directly with the Vivox Voice Server by using the [Vivox Server to Server Web API](../server-to-server-api-reference/server-to-server-web-api-overview), which allows you to perform the following actions:

  * Drop or kick a user or all users from a channel
  * Mute or unmute a user or all users for everyone in a channel
