Choosing the right netcode for your game

We just posted a new blog about Choosing the right netcode for your game

We evaluated and researched today’s most popular netcode frameworks for multiplayer games to inform your decision.

Please let us know what you thought! @DavidSalgado and @BHouse will be happy to get to any of your questions.

3 Likes

I’m disappointed.
Or maybe this is the wrong word. I am Shocked. I’m angry.

Unity, my dear friends, I love you guys, I really do, My company and it’s games are made on Unity, and I have done plenty of consultant work for companies making real production multiplayer games. and I can tell you, this blog, and this report is just… Wrong, I mean… completely wrong… outright. misinformation.

Who wrote this blog? who made this research?
Is it anybody that actually knows how to make multiplayer games?
Doesn’t seem like it.

I am just perplexed. This document reads like a high school report. I don’t want to offend somebody but really. it does.
Somebody has to be harsh and say the truth. as example you use a unknown made up term “DGS”, again, no offence to the author, it’s just a very entry level paper, which isn’t expected*.* Neither is networking entry level stuff

Sorry for the longread but here are the facts.

TLDR:

  • You are comparing completely different things, more like apples and oranges, on arbitrary undefined meaningless statistics.
  • The market research doesn’t include half of the solutions.
  • Some solutions are outright a wrong way how to network your game and will hurt anyone trying to build a game on them.
  • The products are not tested on actual real world production games successes.
  • Winner is not a winner
  • Unity has no viable solution.

Wrong compare
Each solution presented is very different, some don’t do much for you more than syncing some variables/RPC’s you present it, some take the whole task of networking out of your hands so you can actually just make a fun game.
This is a giant difference. As example your “winner” MLAPI doesn’t do much of what you want a library to do for you, Concepts like RPCs are fire and forget, you have no idea which order they come in. Every server auth movement example have to make up for this, by implementing reconciliation… this library doesn’t take care about a basic tick-engine, correction, reconciliation, prediction, etc etc etc.
Whilst on the other side of the spectrum Quantum, is a fully deterministic framework where you can literally make a game almost like a single player game, and it’s completely networked out of the box, you don’t have to think about anything, it just works… and it’s amazing too. How is MLAPI better?
The statistics you give stars for in your compare are just silly, it is not defined how you get those stars, what they mean and they are on points that are not even helping your customers choose a library. You have not provided any actual data, just your conclusion with no way to back it up (which basically means its arbitrary).
Also I seen some straight up miss-information and/or lies about some solutions (Quantum, Mirror, etc.)

Leaving out solutions
I understand you have to make a scope for this compare, but from my research and knowledge in the production game field, MLAPI is barely used, whilst Forge was left out, as example. (not that those are good solutions but just saying)

Wrong way to do networked games
I see the options a developer has to network their game in Unity as a trap into a minefield.
Once a developer chose a certain solution, and tries to make his game in it, he usually is stuck in it’s (usually wrong) way of doing things. As a industry professional with experience, and in contact with many other industry professionals in the field of networked games I have seen too many projects fail.
Most networking solutions are focused on one thing:
How to pack data and send it and receive it, whilst this is just not how you network a game.
A networked game is all bout the simulation. Let that sink in, SIMULATION.
Everything revolves around that, How do you simulate a game, across devices. so for a player it is fun and smooth.
The way how to pack data, and take care about packet loss or delays, it is things way less important than the simulation.
Exactly in this field, most solutions fall flat, they don’t take care about it, you have to build it yourself, so what is the point of the library then at that point?
Networking is way more than having some data on one end and having it on the other end.
Even worse is advising people to use a low level library that uses TCP for it’s reliability, ever network engineer knows that TCP data will push UDP data out of the pipe, which is why reliable UDP libraries were designed in the first place.

Real world production games
This is the big/main one for me, What actually should matter is what games have been made on each solution, and what these developers had to do/workaround or make themselves to make their games in a released and working state.

Winner is not a winner
You recommend your users to MLAPI as the best overall, I want to say that this is biased.
The lead developer recently got hired by Unity (this is not mentioned)
There are no launched games or proven to actually work in real world scenarios (both MLAPI itself and the relay and punch and its udp library) Compared to other solutions there is really no community surrounding it.
The library itself is basically a re-hashed version of UNET, which by most is deemed not a good library or the right way to do networked games.

The real winner, is a solution that solves the problems your users have to make a networked game.
hint; it is not MLAPI or Mirror.

So this is what you recommend… a fresh re-hash of your old UNET-architecture with no launched games, not proven to work in real world scenario and no community almost?
Where the author works for you since this month…

Unity has not it’s own viable solution
The real reason we are all talking about these things, and we are having libraries to compare is because Unity has not reacted to the market and presented us with a proper networking solution developer in-house, it has failed on this job for 10 years already.
Every solution presented was a wrong way to do networking, from Raknet to UNet and now to the new dots networking, this is not how you network a game.
You guys have to get together, possibly to be harsh, fire the networking team, fire the networking lead, and start over.
Find real industry professionals that have multiplayer production games under their belt, hire them, give them a salary they cannot refuse steal them if you have to… Let them make an actual multiplayer solution that we can use.
Recently with all the IPO build-up you bought companies that didn’t help your customers, like Multiplay, or Vivox you paid millions!, why don’t you guys use such money to hire good developers with multiplayer experience… or as an alternative buy up Exitgames/Photon, integrate it into the engine, they seem to have multiplayer down. That would have been an actual useful acquisition.

Whatever you do, the clock is ticking, Your competition, as example Unreal has a good multiplayer solution build into the engine for years, and developers are not blind, if your choice is to walk this minefield, or roll your own solution, or just go for the competing engine… think about it.

With love and hope,

Maxim.

53 Likes

Ok, I’ve never written much on this forum. But I fully share Vincenzo’s thoughts.

I would just add that it is useless and counterproductive to publish such articles. I understand the need to make Unity look better than it currently is. And I think I understand this need.
But this is masochism.

You haven’t been able to come up with a decent solution in ten years and keep moving forward as if we haven’t all noticed.
And the more we ask for a decent solution, the more you keep feeding us terrible and unclassifiable things.

I’m starting to get fed up, I’ll start evaluating alternatives, like everyone else.

9 Likes

Mirror is not using Linq in hot path.

We would kindly ask you to please stop publishing misinformation about our work.

8 Likes

Hi, And welcome to his forum!

Years? feels more like 3 Decades.

I love when developer talks about of what they are actually doing with all the difficulties and characteristics. Probably this blog is more for or from marketing. We are all pointing eye to the Unity framework because it has done amazing things and we pretend. So this is the Unity 2021 software roadmap. I look forward to March 2022 when Unity 2021.3LTS will be released.

Hey @mischa2k , we had a call with a few of the Mirror community members and it seems that what customers brought up about Linq was related to old Mirror versions. We’re happy to make changes to the PDF and let the broader community know that Mirror has evolved from there.

As I mentioned, there were no lies anywhere =) we were echoing what customers experienced and they had challenges with Linq and Mirror, if these are solved at this point… great!!

I’ll post on the discord channel when the new version of the report is up

Cheers

David

2 Likes

Great question! We actually see each of these networking implementations as optimal for different game use-cases, and in the very long-term, we hope to offer high-quality solutions for all of them. That said, our initial focus is in client-server, which includes DGS and Listen server…

From a planning perspective, we are working on both GameObjects solutions and DOTS, and both are client-server focused at the moment. While we understand the first-party comment, we recommend you to give a try to any of the frameworks we’ve mentioned. The communities behind these are doing a great job.

I’m afraid that we’ve not shared a timeline yet as we are still solidifying our plans and hiring more people. We can assure you that we’re working hard though!

1 Like

Can you stop using fall guys as an example (I see someone mentioned it in the comments)? They wrote their own networking and as such they’re not an example of “hey look, you can do multiplayer in Unity”.

Because yeah, I can potentially do anything if I write my own rendering / input / UI / networking / audio / light mapping (all things a game engine is supposed to handle), but if I write my own because your features aren’t there or are bad, you don’t get to say “hey look, you can do X with Unity, isn’t Unity great?”, okay?

Going back to this article:

  1. Unity does not have two solutions. It has an abandoned one and a not ready one, which adds up to 0 solutions. (This describes a lot of Unity features these days sadly)

  2. That there are so many, good even, community solutions is a result of people getting fed up with how you handled networking so far. It’s proof you’ve managed things poorly. You don’t get to use them for your marketing and you don’t get to judge them.

11 Likes

Also since in the blog post you’re implying that you’re covering the most common networking solutions and ratings are based on the feedback you got from customers: are you telling us DOTS networking (a solution with 0 major games on the market I believe) is a very common, highly rated solution, based on feedback from your customers or did you rate it on your own, based on nothing?

5 Likes

2 Likes

Thanks!!!

If you want to have a production-ready and easy to use networking solution you also need to have a good gameplay framework.
UE4 is a perfect example - by grabbing a sample project and compiling it you will have an autoritative client-server based action game (skeleton of a game of course) with the quality of UT ( or Forntnite these days) with features like client-side prediction, rollbacks etc.

This not only includes a “networking” solution (non-reliable and reliable state replication, RPCs etc) but a solid foundation of using it in a proper way - all the game building blocks: server-side game controller, player controllers with local prediction etc.

This approach works good because it not only makes things possible to code but shows a proper way of doing so in the lease problematic way.

Unity should really make a good gameplay framework (or a set of frameworks fopr action games, turn based games etc).
and then build a networking solution that works well under that hood.

For now, there is no even an out-of-the-box character controller available from first party devs…

5 Likes

Just a correction, Photon Quantum supports up to 64 players (not sure if this information is available in any of their public materials).

In the Road to 2021 blog post, it’s stated:

Do we know if Mediatonic used any of the publicly available networking packages? Based on their dev logs it sounds like it’s all custom, and if so maybe not the best example!

2 Likes

No one using SpatialOS? Interesting as it’s the only networking that supports both Mono and DOTS.

It’s been 20 days :slight_smile:

8 Likes

The problem with Spatial OS is that it’s a typical big Venture Captial blow up company.
And they claim to have the most amazing solution, and looking at their SDK, it isen’t bad. They use kind of proper game networking models, nothing revolutionary (like Photon Quantum) But at least get the basics right for Eventual Consistency, and scaling across multiple servers for an MMO.

The problem what i heard from developers using their tools is the price, The prices are so high that even if your game gets successfull you are unable to make any profit because of the insane CCU and server hosting costs they ask. meaning any MMO you build or even small game simply has to pay too much premium to Spatial OS, and it’s basically a sinkhole.

This is why that famous Spatial OS MMO quit.

Looking at their game they build a custom networking based on unity stuff. from the looks of it it’s a basic Client Authority, syncing player state. So nothing fancy. Easy to cheat, not very good.

At least first server instance (100-300 players) is free. Unlucky that Unity bought Multiplay that created conflict of interest.

I guess over time they will lower their pricing but looking at their news from time to time it seems like they are focusing on Unreal a lot more. It could be a lost opportunity. Even if right now it’s pricy and in alpha state who knows if in 5 years 500 players multiplayer won’t be a standard and Unity will be left behind.

Unity is already left behind COMPLETELY on multiplayer compared to other engines like Unreal… So that is not news.

Not completely: Fall Guys, Among Us, Garena Free Fire, Escape from Tarkov, Rust, Albion.

Obviously all of them have to use custom solutions. Albion uses Unity only as rendering layer.

So because the company that wants to “democratize game development” Unity has no solution at all, the only successful multiplayer games on the platform use custom solutions. Which are very hard to build.

If you make a similar list of successful unreal multiplayer games, almost all of them use the build-in network engine…

You exactly proven my point. Unity is been completely left behind on multiplayer.