Welcome back to our series on Unity Gaming Services – this third article will focus on our Multiplayer suite.
Our Multiplayer tools enable developers to explore multiplayer game creation and craft the optimal online experiences for their players.
We provide services in three main pillars:
What is it? Netcode for GameObjects is a high-level networking library that enables Unity developers to add networking functionality to their multiplayer games without the need to focus on low-level protocols. This is a multi-platform solution, has a transport-agnostic layer, and works with Unity Transport which provides performant packet delivery that can be encrypted end-to-end with DTLS. Netcode for GameObjects is currently in pre-release.
What problems does it solve?
How does it work?
Netcode for GameObjects enables Unity developers to synchronize scene and game object data across multiple application instances connected in the same networking session in the creation of multiplayer games.
Netcode for GameObjects is currently best suited for small-scale games, like our Boss Room and Galactic Kittens demo game samples. You can choose to configure one of the clients as a client-host or support dedicated server scenarios.
Eager and savvy developers may choose to leverage the MIT-licensed and freely available source code to extend or modify the provided components for their unique multiplayer needs.
How do I get started? Install the package, join the Discord, or visit our documentation.
What is it? Netcode for Entities is a high-level networking library that enables Unity developers to add networking functionality to their multiplayer games. Netcode for Entities is required when the networked objects are based on the experimental DOTS ECS framework. As such, Netcode for Entities is experimental and is not recommended for production use at this time.
What problems does it solve?
How does it work? Netcode for Entities uses a server authoritative network model with client prediction. That means that when you use Netcode for Entities, your simulation will be split into two separate simulation units: Server and client. The server simulation runs the simulation for all connected clients and is considered the true simulation state. The client simulation receives snapshots of the simulation state from the server.
Because it takes a while for the snapshot to reach the client, the client will compensate for that by running the same simulation as the server to predict what the server will simulate.
With this setup, you need to annotate your data to decide how entities and inputs are synchronized and what is most important. Based on those annotations, Netcode for Entities will keep the client and server synchronized. Netcode for Entities will focus on synchronizing the most important objects first, to make sure it can handle a large number of objects and clients with a limited bandwidth.
How do I get started? Netcode for Entities is experimental, which means it needs to be manually added to your project manifest for evaluation purposes. Please visit our documentation for more information.
What is it? Multiplay is an engine-agnostic game server hosting service that combines bare metal and cloud servers to help scale your game to millions of players, all while keeping gameplay smooth and lag-free.
What problems does it solve?
How does it work? Multiplay is a hybrid, auto-scaling hosting platform that uses bare metal servers and burst capacity in the Cloud.
Server allocations are made with priority to machines in an always-ready-to-start state, resulting in very low wait times. Multiplay anticipates the needs of your player demand and when planned capacity is expected to be exceeded, Multiplay bursts into the cloud to bolster availability and ensure players aren’t being rejected from joining a game or suffering long wait times.
Scaling up capacity is the easy part – our orchestration allows for dynamic de-scaling closely following your player concurrency. Cloud machines can be created and destroyed on-demand, so the system will quickly shut them down when the game session hosted in the cloud ends to keep costs down. If you want to know more, check out this blog.
How do I get started? Contact us or visit our documentation site.
What is it? Matchmaker swiftly and automatically matches the right players together for the best multiplayer gaming experiences. Matchmaker is currently in Beta.
What problems does it solve?
How does it work?
Matchmaker uses developer-configured match logic, a customizable evaluator, and a matchmaking loop with scheduled match function execution to match players in your game into the right sessions. Developers are able to customize the matchmaking logic to better suit their games, using either standard or rule-based logic. This logic can be configured by creating a JSON formatted config file and uploading it using the Unity Matchmaker CLI.
An ideal matchmaking system operating in ideal conditions can quickly create high-quality matches. However, under real-world conditions, there are many factors that can affect time-to-match and match quality.
Using Unity’s Matchmaker, you can determine strategic ways to balance match quality and time-to-match easily. Matchmaker provides the following functionality to make it as simple as possible to get the right players together:
For more detailed information on how Matchmaker works, check out our documentation here
How do I get started? Contact us!
What is it? Relay is a service that allows players to connect and enjoy immersive multiplayer gaming experiences – all without needing a dedicated game server. Relay is currently in beta.
What problems does it solve?
How does it work? The Relay service leverages Unity Transport to enable secure peer-to-peer listen-server UDP communications between players. Relay supports DTLS (datagram transport layer security) encryption of all UDP communication to and from the Relay servers, which enables your users to deliver data that is securely encrypted and authenticated.
Relay allows players to connect by using a join code style workflow and a listen server. Instead of using dedicated game servers (DGS), the Relay service provides connectivity through a universal relay server acting as a proxy.
The Relay service has two key components: the Relay servers and the Relay allocations service.
How do I get started? Join the beta or visit our documentation site.
What is it? Lobby is a flexible solution that connects players in custom private or public rooms for great multiplayer gaming experiences. Lobby is currently in beta.
What problems does it solve?
How does it work? Players create public lobbies using simple game attributes which other players can then search, discover, and join. Invite-only lobbies also allow players to create private spaces for select participants only.
Quick join lets players join a game session as fast as possible. The player specifies their requirements and then joins a matching lobby if one is available. You can also use this method to implement simple matchmaking or to let players join games in progress.
How do I get started? Join the beta or visit our documentation site.
What is it? Vivox is an engine-agnostic service that enables player communication through in-game voice and text chat.
What problems does it solve?
How does it work? Whether you want to use 2D Voice Chat, walkie talkie style channels for teammates to communicate, or make truly immersive worlds and use 3D positional channels, you can get up and running with Vivox in a couple of days. Your players will have full control of their volume, mute, and be able to mute others easily.
Vivox is engine-agnostic and available on all major platforms. However, we do provide wrappers for Unity and Unreal to allow for a quicker path to implementation within those engines.
With support for all major platforms, enabling cross-play is a super simple task. All that you need to do is have players on different platforms join the same channel.
There are two different types of channels – 2D and 3D-positional.
2D channels are what most people think of when they think of voice chat in games. This is the typical function that allows players to hear and speak to all teammates, no matter where they are on the map.
3D-positional channels take into account a player’s position and orientation to represent audio in 3D space. This allows your players to have a more immersive experience by naturally hearing other players around them.
Players can easily be in multiple channels at one time. This lets players be in a 3D-positional channel, where they can hear players running around them in game space, while at the same time be in a 2D squad channel, or even multiple 2d channels.
We provide you with vital accessibility features that meet compliance needs and enable players who rely on these services with an amazing experience.
Additionally, Vivox helps to keep toxicity out of your game with moderation features like administrative server-to-server APIs that allow you to mute or kick players. You can also enable Server-Side Recording so that you can review potentially toxic chat and discipline the offending player.
How do I get started? Register an account or contact us, or visit our documentation site.
Get started with our Unity Gaming Services by picking and choosing what you need from the Unity Dashboard, or check out our pricing information.
Interested in the full series? Check out our previous posts:
To stay in the loop with future pieces, follow our new UGS channels on Twitter and Facebook or visit our new Unity Gaming Services Forums.