Search Unity

A closer look at Multiplayer

March 24, 2022 in Games | 13 min. read
Magnifying glass zooming in over a building
Magnifying glass zooming in over a building
Share

Is this article helpful for you?

Thank you for your feedback!

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.

Table showing different Unity Gaming Services pillars (Multiplayer highlighted)

We provide services in three main pillars: 

  • Creation of your multiplayer game
  • Connection of your players
  • Communication between players
Multiplayer services breakdown between creation, connection, and communication

Creation

Netcode for GameObjects

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? 

  • You can focus on your game rather than low-level protocols and networking frameworks
  • Provides an adapter to ease the communication with the Unity Relay service
  • Provides a ready built networking foundation for small-scale cooperative games

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.

Netcode for Entities

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? 

  • Provides a networking foundation for medium to large multiplayer action games when the networked objects are based out of the DOTS ECS framework
  • Made for synchronizing a large number of networked objects or a large number of clients
  • Provides a scalable foundation for rollback data to minimize input latency and offers the ability to run and debug clients and servers in the same processes

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.

Connection

Multiplay

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? 

  • Allows you to operate your multiplayer game without the need to build and run the infrastructure yourself. 
  • Support a fluctuating player base at all times with automatic scaling

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.

Matchmaker

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? 

  • Save time and resources by using a proven matchmaking system rather than building one in-house
  • Improve your player experience by matching them with other people in their region and skill level 

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:

  • Configurable data provides your matchmaker with information to make the perfect match
  • Multiplay game server hosting integration helps your game to scale and achieve worldwide success
  • Flexible backfill connects players to ongoing matches
  • Quick time-to-match ensures that players spend less time waiting

For more detailed information on how Matchmaker works, check out our documentation here

How do I get started? Contact us!

Relay

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? 

  • A more cost-effective way to connect multiplayer gamers than paying for server hosting
  • Ensures secure communications with DTLS encryption

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.

Lobby

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? 

  • Lobby allows your players to decide who they play with and how they want to play with others 
  • You can get your players online and connected in new gaming sessions in a matter of hours
  • Lobby is an easy and cost-effective way to connect players for gaming sessions

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.

  • A public lobby lets your players create, browse, and join public lobbies that fit their search parameters
  • A private match lets your players create private lobbies where they can invite other players by sending them a lobby code

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.

Communication

Vivox

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? 

  • Allows you to add player communication to your games easily without building an in-house solution.
  • Engine agnostic to plug into any engine you’re using to build your multiplayer game 
  • Our technology is fully integrated in your game so players don’t need to interrupt the game experience to switch to a third-party communication app. We promote community building and play more strategically, play better, and make friends.
  • Vivox invests in speech-to-text, text-to-speech, and other technology to help developers meet regulatory requirements and support them in making gaming accessible to everyone

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.

Build your ideal tech stack

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.

March 24, 2022 in Games | 13 min. read

Is this article helpful for you?

Thank you for your feedback!