Multiplayer development status and next milestones - May 2024

Hello everyone! The multiplayer team is here to share our next multiplayer roadmap update!

What are Unity’s multiplayer solutions?
Unity’s multiplayer solutions include our network framework (such as Netcode for Entities and Netcode for GameObjects), the Transport layer, our multiplayer tooling suite, and Unity Gaming Services - all of which enable the successful creation, launch, and growth of your multiplayer games through a rapidly growing end-to-end platform.

Unity’s multiplayer journey
Unity’s multiplayer journey has seen significant evolution:

In 2015, Unity Networking (UNET) debuted, offering basic features like client-server architecture, object synchronization, and high-level networking components. However, it fell short of meeting complex multiplayer project needs and was deprecated in November 2018.

In March 2018, the Data-Oriented Technology Stack (DOTS) was announced, introducing a data-oriented and entity-component system (ECS) architecture. This enhanced performance, scalability, and offered a more comprehensive netcode solution.

Responding to demand for simpler multiplayer solutions for casual co-op multiplayer games, Unity acquired the MLAPI framework in December 2020, which would later become the foundation of Netcode for GameObjects. We celebrated the release and success of Netcode for GameObjects 1.0 in June 2022, which offered Unity-supported tools, regular package updates, live support, a growing community, and better support for our Unity Gaming Services features and functionality that were announced just a year prior in October of 2021.

Netcode for Entities 1.0 launched shortly after with Unity 2022 LTS in June 2023 providing a production-ready netcode solution that completed our netcode offerings, enabling support for scalability and competitive action multiplayer genres.

Through the Unity 2022 LTS, we’ve provided you with two extensive Netcode solutions that allow you to create a range of multiplayer experiences from casual co-op to large-scale competitive actions games, an expanded Multiplayer tooling kit with network inspection features like Network Scene Visualization and Network Profiler, a dedicated-server package with workflows for creating server-authoritative projects, our production-ready multiplayer sample BossRoom, and a whole selection of Bitesized samples showcasing key multiplayer experiences. We also released the Unity Transport 2.0 package with the addition of WebGL support that can now be used to enhance cross-platform and web multiplayer experience. The Unity Transport low-level networking library is the foundation used by both Netcode solutions and also allows you to build your own customized Netcode for specific game needs on all Unity Engine supported platforms.

Example of studios who shipped using Unity multiplayer solutions
We’ve seen some amazing multiplayer games come from studios and creators of all sizes, but we want to take the time to uplift some particular games, whose early adopter developers have been putting in a lot of effort to work with us to help make our tech what it is today:

  • Stickylock Studios - Histera (March 2023): The battlefield is always changing in this free-to-play tactical multiplayer FPS! The ‘Glitch’ spawns in map sections from the past, present or future, with themed weapons and equipment from those eras.

  • Sunblink Entertainment - HEROish (March 2023): Assemble your troops in this strategy/action RPG and equip powerful spells to wage war across three different campaigns - then climb the PvP ranks in fast-paced 1v1 or 2v2 competitive battles!

  • Fika Productions - Ship of Fools (Nov 2022): Join a friend in this seafaring roguelite co-op game where you play the Fools, the only creatures fool enough to brave the sea.

  • Hugecalf Studios - Turbo Golf Racing (August 2022): Experience the fast-paced arcade-style motorsport racing with up to 8 of your friends as you jump, flip, glide, boost, and dash with Turbo-charged cars and be the first to get your ball in the hole.

If you’d like to learn more about the experiences of developing multiplayer games from the creators of these titles above, check out our 2023 GDC talk that goes over how to create, launch, and manage multiplayer games with Unity.

Resources to get started
We released our new exciting Megacity Metro sample in March focusing on creating multi-platform multiplayer games with support for mobile devices and cross play. It serves as a guide for creating a competitive action game with more than 100+ concurrent players, demonstrating the use of DOTS, Netcode for Entities, Physics, Rendering, and Unity Gaming Services. You can review our live session at GDC 2024 here or replay our recent webinar to catch a deeper breakdown of the sample and how to kickstart your next ambitious multiplayer title in Unity 2022 LTS.

When it comes to learning how Unity’s multiplayer offerings work together, we know few things beat having an actual reference project to dig through. So we’ve built and documented many of the common networked gameplay scenarios across samples, and our website to help you get started:

  • Netcode for Entities, Netcode for GameObjects, ECS Samples, and Bitesize Samples: The netcode documentation and samples for both netcode tech stacks reflect the latest APIs and usage for most multiplayer scenarios. These resources will be especially useful for new users looking to learn about the fundamental concepts of networked gameplay.

  • BossRoom: Unity’s longest running production-ready multiplayer sample built with the GameObjects Netcode workflows, this sample is a 3D casual co-op game with production-level code and integrated with our Lobby and Relay hosting services.

  • Building a production ready multiplayer game with Unity [Webinar series]: If you’re looking to build a small-scale cooperative multiplayer game with Unity, join us for this four-part series with our Multiplayer team! We’ll dive into the Boss Room sample to explore building a production-ready multiplayer game with Unity and Netcode for GameObjects.

  • Small-Scale Competitive Multiplayer Template: This is your starting point to create and ship a multiplayer project using Netcode for GameObjects and Unity Gaming Services. The template includes a Bootstrapper tool that helps you test faster using various network modes (Host, Client, Server) and dynamic configurations, in-Editor tutorials, and a barebone event-driven gameplay flow. Find it in the Unity Hub today.

  • Megacity Metro Sample: Megacity Metro showcases how creators can build large-scale, cross-platform multiplayer titles that support more than 100+ concurrent players, demonstrating the use of Netcode for Entities integrated with the Unity Gaming Services solution like Multiplay Hosting, Authentication, Voice Chat and Matchmaker.

Browse our latest Multiplayer Resource Roundup for a full curated list of resources to get familiar with the latest multiplayer demos, samples, and templates.

Multiplayer in Unity 6
With Unity 6, we are lowering the complexity of making multiplayer games by offering a seamless, end-to-end solution that not only enables the creation but also the launch and growth of multiplayer games.

For the Unity 6 Preview milestone, several of these capabilities are still in an Experimental state, which means they are not yet supported for production. We intend to rapidly transition them to Pre-release and Release states for a fully supported experience on Unity 6 that integrates your feedback.

1. Netcode for GameObjects license
We are changing the license for Netcode for GameObjects version 2.0.0 and future releases to the Unity Companion License (UCL License):

com.unity.netcode.gameobjects copyright © 2021-2024 Unity Technologies

Licensed under the Unity Companion License for Unity-dependent projects (see https://unity3d.com/legal/licenses/unity_companion_license).

Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.

The previous versions of the Netcode for GameObjects releases remain under the MIT license.

We’ve updated the Netcode for GameObjects license to allow adding new features that couldn’t be rolled out under the previous license. You will still be able to access and modify Netcode for GameObjects source code under the Unity Companion License with a valid Unity Editor license.

2. Build, launch, and scale playtests

  • Experimental Multiplayer Center
    To simplify building multiplayer games, we’ve created the Experimental Multiplayer Center package (com.unity.multiplayer.center) available in the package registry. Multiplayer Center is a streamlined guidance tool designed to onboard you into the realm of multiplayer development. This central location in the Editor gives you access to the tools and services Unity offers for your project’s specific needs to introduce multiplayer concepts into your project.

The Multiplayer Center presents interactive guidance based on your project’s multiplayer specifications, access to resources and educational materials, and shortcuts to deploy features and experiment rapidly with multiplayer capabilities.

  • Multiplayer Widgets
    Experimenting with multiplayer services can be a long process. We’re working to integrate pre-made Unity Gaming Services widgets (UGS) available directly within Multiplayer Center, enabling you to experiment with multiplayer features involving backend services in minutes and save integration time and start iterating on your gameplay immediately.

This includes services like Multiplay, Relay, Lobby, and Vivox – and adds the capability for you to swiftly gauge the compatibility and suitability of a UGS service for your specific game requirements. For example, the integration of the Relay service into Editor allows you to easily create a session and connect your playtesters earlier, speeding up your quality iteration loop.

Multiplayer Widgets are not yet available in Unity 6 Preview. More information will be shared later on its availability.

  • Multiplayer Play Mode
    Once you have working gameplay, the next step is to try it out and get a feel of the multiplayer experience. We’re working on the Multiplayer Play Mode package that allows you to validate your multiplayer implementation and improve your gameplay quality early across runtime processes, reducing the setup time to test multiplayer games and allowing you to keep a quick iteration loop during the development process.

Multiplayer Play Mode enables you to test multiplayer functionality across separate processes without leaving the Unity Editor. You can simulate up to four players (the main Editor player plus three virtual players) simultaneously on the same development device while using the same source assets on disk. You can use Multiplayer Play Mode to create multiplayer development workflows that reduce the time it takes to build a project, run locally, and test the server-client relationship.

  • Dedicated Server package
    To facilitate the deployment of a dedicated server, we’re working on the Dedicated Server package to consolidate the dedicated game server workflow in the editor with a solution that enables the deployment of server builds both locally and to hosting solutions to accelerate the multiplayer development process.

It will allow you to switch a project between the server and client role without the need to create another project. To do this, you’ll be able to use Multiplayer roles to distribute GameObjects and components across the client and server.

Multiplayer roles allows you to decide which multiplayer role (Client, Server) to use in each build target. This breaks down into:

  • Content Selection: Provides UI and API for selecting which content (GameObjects, Components) should be present/removed in the different multiplayer roles
  • Automatic Selection: Provides UI and API for selecting which component types should be automatically removed in the different multiplayer roles
  • Safety Checks: Activates warnings that help detect potential null reference exceptions caused by stripping objects for a multiplayer role

3. Experimental Distributed Authority
We’ve added the support of the distributed authority mode in Netcode for GameObjects 2.0 (com.unity.netcode.gameobjects) when paired with the new Experimental Multiplayer Services package (com.unity.services.multiplayer). With distributed authority, clients have distributed ownership of/authority over spawned NetcodeObjects during a game session. The netcode simulation workload is distributed across clients, while the network state is coordinated through a high-performance cloud backend Unity provides.

To facilitate your onboarding with the Distributed Authority experimental feature, we are now providing access to the backend service , with all the information you need to get started with the Experimental Netcode for GameObject 2.0 and the new Experimental Multiplayer Services experimental packages.

4. Experimental Multiplayer Services package
Building a multiplayer game requires integrating several products and services together. With the new Multiplayer Services package (com.unity.services.multiplayer), we’re simplifying integration and dependencies management across multiplayer services while offering a new way to interact with the products.

The Multiplayer Services package is a one-stop solution for adding online multiplayer elements to a game. Powered by Unity Gaming Services (UGS), it combines capabilities from services such as Relay and Lobby into a single new “Sessions” system to help you quickly define how groups of players connect together.

The Multiplayer Services package enables you to create peer-to-peer (P2P) sessions while providing multiple methods for players to join those sessions, such as by a Join Code, by browsing a list of active sessions, and “Quick Join.”

5. Onboarding content
We’re simplifying the multiplayer learning curve even further with new guided content. On Unity Learn, we’re working on our first Multiplayer Course aimed at teaching you the basics of Netcode for GameObjects and guiding you through your first networked project.

We’ve also made great progress on a series of multiplayer-friendly templates for you to experiment quickly with using new multiplayer features and services in your project. Use these templates to quickstart your competitive action multiplayer game or multiplayer VR game directly from the Unity Hub.

To facilitate your onboarding with Distributed Authority and Dedicated Server, we’re working on several new additions to Bitesize Samples. These will help you learn when and why these features might be needed in your multiplayer game, how it works, and how to implement it in your own projects.

Future Development
1. Netcode unification
For Netcode, we’ll be focusing on simplifying the tech stack to offer one Netcode solution delivering all the features you need regardless of your gameplay style and project requirements. We are integrating GameObjects workflows with the performance and scalability of ECS Netcode infrastructure to support multiple types of games, spanning from casual co-op to large-scale competitive games.

The unified Netcode users will benefit from the performance and scalability of Netcode for Entities with capabilities such as prediction, interpolation, and lag compensation. At the same time, you’ll enjoy the convenient workflows and ease of use inspired by the Netcode for GameObjects solution.

2. Entities and other DOTS updates
You can see the full details of what we’ve been up to on the Entities side – and what’s next for our DOTS roadmap – in our September 2024 DOTS Update .

See you soon on upcoming multiplayer events!
Coming up on May 15: A free online webinar that reviews the Megacity Metro sample project and demonstrates important features of Netcode for Entities, Multiplayer Play Mode, and more. Register here.

We’re now preparing for new and updated features and resources targeted for Unity 6. We’ll be sharing more details about these projects at Unite 2024 coming up this September 18-20 in Barcelona, keep an eye out for updates!

Thank you for your continued feedback
We’re extremely grateful for the feedback you all have shared both online and at events like GDC 2024 and we are constantly reviewing your inputs for consideration toward our multiplayer roadmap. Please keep it coming, post your questions / thoughts in this thread, and know that we are carefully reviewing your input for consideration towards our public roadmap page. In addition to the forums, you can also engage with us over on the Unity Multiplayer Networking Discord.

10 Likes

Thank you for the thorough roundup of information!

I have a few questions from what you’ve shared in this thread,

The license change in particular seems to site a few troubling statements when considered with NGO.

Section 1 of the license states: “and in no event may the Work be used for competitive analysis or to develop a competing product or service.”
Does this mean that as a user of Unity, I can’t use NGO to benchmark its performance versus other available solutions for a given product development? (DOTS Netcode, Photon Fusion, FishNet, Mirror, etc?) Does this also mean that those alternative solutions are also banned from making concrete comparisons? What does Competitive analysis concretely mean here?

And in Section 3.2 “Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Work and derivative works of the Work, and you hereby assign and agree to assign all such rights in those derivative works to Unity.”
Does this mean that if any developer makes a significant effort to improve how NGO works, you get immediate ability to redistribute it? From my understanding any adjustment to the NGO package will count as “derivative of the work” and as such, can be demanded by Unity to anyone who makes that adjustment.

In Section 7. “USE IS ACCEPTANCE and License Versions. Your access to and use of the Work constitutes your acceptance of this License and its terms and conditions. This License may be modified or updated; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Work under the updated License.”
What does this mean under a hypothetical scenario where a user publishes a product using NGO, ceases development of the now available product, and NGO updates its license with a controversial term (such as last year’s “install fees”)? My current understanding is that the new terms are meant to be enforced into retro-acceptence, which sounds wrong. I’d like a clarification please, as this is a scary term to be under.

Regarding Distributed Authority, I want to point out that in its early experimental version, I have checked the source code and submitted multiple issues, but in no case have I seen any code specific to the multiplayer services package. What is their connection? It’s certainly not easily found in the early experimental source code. Distributed Authority is just a mode that exists within Netcode and is Transport agnostic and not reliant on any unity multiplayer service. Why the arbitrary pairing in the mention?

Thanks again, excited to see where netcode goes, though that excitement is slightly tempered by the new companion license :face_with_spiral_eyes:

4 Likes

The experimental version is… well experimental… :smile:

When NGO v2.0.0 and the Experimental Multiplayer Services package (com.unity.services.multiplayer) are both installed, you will be able to start a cloud hosted distributed authority session. Currently, use of the Multiplayer Services distributed authority cloud state service is not generally available, but you can always send us a message on what your plans are for using it prior to it becoming generally available (select the importance level relative to your project to get the submission form).
9823623--1412130--upload_2024-5-8_20-21-36.png

There will be an announcement when it becomes generally available as well.

2 Likes

Does this effectively work as a terminal-based session of unity, that is the Distributed Authority host, and isn’t provided a player but still holds authority? Or is it something else? Does it actually show up as one of the client Ids for the connecting clients? I would love to know more about this.

(Would also love questions to the license changes, if available!)

I take it this is an entirely separate service from Relay? If it’s just a state service, I’m guessing the cost for this is only when downloading states, e.g. when transfering to a new host for host migration? Since the top cloud providers only charge for egress bandwidth, there should be no cost for ingress right?

The use case I’m thinking of is to use the DA state service along with Steamworks Relay service. Essentially minimizing costs by using Steam’s free Relay for peer communications and only resorting to downloading state from the DA service when a host disconnects (for host migration).

Don’t expect an answer from Unity employees regarding licensing questions. :wink:
This is legal territory so you’d have to talk to someone from the legal team or consult a lawyer.

I’ll offer my thoughts, this isn’t legal advice and you’ll find more discussions with concerns and clarifications if you google the UCL.

Primarily that statement exists to make it illegal to base your own work (or features) on Unity’s work in order to make a competing work or feature.

You can still make your internal comparisons and analysis to see which framework best matches your requirements, but not to make or improve a competing product or advertise your competing product as “better”. Since this work is shared in source code form that restriction applies what is already illegal for practically any commercial software: binary analysis, reverse engineering, and such.

But then you have general interests (fair use?) where, say, a journalist is indeed allowed to dissect any software in order to find proof that it is doing something illegal or ethically questionable or has security holes and can then report about such findings in public. So in my opinion it won’t stop anyone from publishing performance comparisons between networking frameworks - perhaps unless it’s done by a competitor, directly or indirectly.

This applies when you push changes to the public repository (send a pull request). It is also aimed at preventing someone from simply forking NGO and improving it and then claim that as their work.

As long as you keep any modifications to yourself I don’t think it falls under “derivative work” because it’s what you do as part of your development work. If you publish your changes to NGO then you created a derivative work. I believe there is something to that effect in the license that makes this clearer.

Read it again. This very clearly rules out retroactively applying license changes:
“you will comply with the terms of the updated License for any use of […] the Work under the updated License.”

If license changes in 3.0 and you use 2.0 the new license does not apply to you until you upgrade to 3.0.

What’s the “Quickstart” package?
9824328--1412271--upload_2024-5-9_13-54-37.png

I tried adding com.unity[.multiplayer][.services].quickstart but these aren’t recognized.

You can think of it as an intelligent relay that holds state (or a “cloud state service”).
You can find out more about the network topology here. The big take away is that state updates between clients (with owner authoritative motion models and/or updating NetworkVariables) is cut in half.

One (of several) benefits is that everything is treated as owner authoritative and clients can spawn NetworkObjects locally that helps visually synchronize things like spawning projectiles (or the like). Similarly, one can use deferred despawning to help with the visual synchronization of impacts (i.e. explosion or the like).

Ownership has also been expanded to include ownership flags where clients can either immediately take ownership locally, are required to request ownership, and of course you can mark NetworkObjects as distributable to distribute the over-all network up-stream bandwidth consumption and authority related processing.

I tried Multiplayer Play Mode in our project and got following bug . Tested it in a separate project and have some questions:

  • What should I do to update states of Virtual Players? Do I always need to deactivate → activate them for changes to take effect? I noticed that changes to assets/scripts are not reflected otherwise in Virtual Players.
  • I see you’re creating symlinks of Assets and ProjectSettings. Could you also add options for creating symlinks of other folders? We have a folder that is regenerated on demand in project root.
  • I noticed we can’t reposition panels in Virtual Players. Are you planning to support repositioning in the future?

In the meantime we’ll continue to use ParrelSync

Update: To facilitate your onboarding with the Distributed Authority experimental feature, we are now providing access to the backend service , with all the information you need to get started with the Netcode for GameObject 2.0 and the new Experimental Multiplayer Services experimental packages.

1 Like

Hi there,
I try to load “the com.unity.multiplayer.widgets” package but, package manager doesn’t find it.

I haven’t tried at Unity 6.

9840246--1415805--Screenshot 2024-05-17 at 12.10.23 PM.png

Hi. I have special requirement that need to have pure .NET 8 runtime as server and using Unity Transport as Unity client. Is that the current latest Unity Transport 2.2.1 able to connect to pure .NET 8 that I believe by default needs to establish UDP connection? Or even better will official invest resources into making Unity Transport working at pure .NET 8 by putting define to strip out unity specific code?

Glad to hear it! Sounds like you’re on track for a solid multiplayer experience.

Our September Roadmap update is now available.