Updated! Free networking solution comparison chart.

CodeSmile and myself have been making efforts to create a comparison chart for the most mentioned free networking solutions. This chart also provides a list of all known networking solutions, free or paid. Eventually, benchmarks as well.

There are several potential stages for a feature/category. They are color coded and can be found at the top of the comparison page. Eg: fully supported, not supported, limited. Further explained, all compared solutions support object pooling, but Mirror and Netcode require several dozen lines of code to use the feature. In result 'Object Pooling' is considered supported, but not 'Automatic Object Pooling'.

Source: developers which have used one or more of the networking solutions were asked to help fact check this chart. The chart is accurate to the best of my knowledge*.* We found more difficulties in validating some NGO features, and we know NGO is still growing. If someone is familiar enough with NGO and is able to make corrections we'd really like your input!

If something is incorrect, missing, or changed please contact myself or CodeSmile in a message so we may update the chart asap; please behave professionally!

THE CHART: https://docs.google.com/spreadsheets/d/1Bj5uLdnxZYlJykBg3Qd9BNOtvE8sp1ZQ4EgX1sI0RFA/edit#gid=233715429

19 Likes

@Punfish Thanks for posting it! :)

For users, please be sure to switch tabs (sheets) as this document contains multiple tables with a summary of networking libraries, feature matrix and benchmark results.

5 Likes

This is a great effort from you two! And I appreciate this, and I am sure the whole community is thankful!

Right now, the sheet just lists some of the solutions and some notes on them, right? It's not ranked from top-to-bottom in any way? I don't see any scores beside each solution.

It has multiple tabs. Its not ordered as far as i know, first page just lists some networking solutions out there.

2nd Tab is the comparison table between the 3 big ones (Free) Mirror, FishNet and NGO.

Hope this answeres your question.

This is a very subjective list while at the same time trying to give the impression it is based purely on facts.
I appreciate the effort but have to point out it is not a good basis to make decisions. At least for professionals.

2 Likes

[quote=“tobiass”, post:5, topic: 899755]
This is a very subjective list while at the same time trying to give the impression it is based purely on facts.
I appreciate the effort but have to point out it is not a good basis to make decisions. At least for professionals.
[/quote]
May I know what part of the list is subjective?

It aims to be factual for the solutions listed but it is subjective or at least not complete by excluding solutions for arbitrary reasons. If that makes sense.

Solutions will not be ranked because that would be based on preference. The chart is aimed to provide facts of solutions, and each developer should make their own assessment on which to use.

[quote=“tobiass”, post:7, topic: 899755]
It aims to be factual for the solutions listed but it is subjective or at least not complete by excluding solutions for arbitrary reasons. If that makes sense.
[/quote]
After your comment we talked in a DM (just bringing everyone else up to speed). You pointed out the chart did not include paid solutions. I edited my original post to clarify that CodeSmile and myself were focused on free solutions. I’ll further edit the comparison chart to reflect that comparable paid options may be available as well.

At least from my perspective, paid options were not included because it’s difficult to compare paid options and there is very little information on most paid options. If enough information is gathered about a variety of paid options I imagine a new tab could be created. So to anyone reading, if you have experience with a paid solution and are knowledgeable of it’s features please get back to us!

Lastly, while this is in no way a comparison, I do recognize that Fusion is likely the most talked about paid option for Unity networking. As far as I know, it offers the most features of all paid solutions.

Disappointed to see that host migration is low priority and may eventually be excluded :(

[quote=“Munchy2007”, post:9, topic: 899755]
Disappointed to see that host migration is low priority and may eventually be excluded :frowning:
[/quote]
If you are referring to FishNet send me a DM here or Discord to help keep this thread organized.

Going to post changes at the end of every month for those interested in following this thread, instead of checking the chart regularly.

Per usual if something is missing, or wrong, let myself or CodeSmile know via MESSAGE(to keep this thread clean). I've had a few recommendations not shown here which will make it up soon as well from some Redditors.

Be sure to read colored bars on top explaining how the chart works.

Changes made to the comparison chart since release to this day.
NGO Broadcasts changed to supported.
Mirror Broadcasts changed from unsupported to limited.
Several notes updated for more detail.
FishNet Network Profiler changed from unsupported to limited. See notes.
Profiler/Monitor renamed to Network Profiler
FishNet Addressables Support changed from supported to limited.
Mirror Nullable-Type Variables changed from supported to limited since only a few types work.
Added Limited status.
API Design added.
Scene Hotloading added.
Lag Compensation moved to Utility.
Projected Stability renamed to Update Stability for clarity.

1 Like

[quote=“Punfish”, post:11, topic: 899755]
NGO Broadcasts changed to supported
[/quote]
Broadcast in the sense that server can send RPC to all clients? Or can a client now also broadcast an RPC to all other clients?

That used to require a ServerRPC and the server then sending a ClientRPC in v1.0. Haven’t checked v1.1 and couldn’t find anything on the manual in quick scan.

Also, I was looking for the support of “clients in different scenes” yesterday but couldn’t find it. I think I found it, if I read the description correctly this is “Stacked Scenes” since it allows for “instanced dungeons” which implies not all clients being in the same scene. Is that correct?

I feel it should be annotated as “Stacked Scenes (instances)” to make it clearer.
Update: edited. I forgot I can just edit it myself. :smile:

[quote=“CodeSmile”, post:12, topic: 899755]
I feel it should be annotated as “Stacked Scenes (instances)” to make it clearer.
Update: edited. I forgot I can just edit it myself. :smile:
[/quote]
LOL

Stacked scenes are the same scene loaded multiple times. Additive scenes is what it sounds like. FishNet can do both, or in combination. I don’t think the other two have proper support for either but that could change.

Broadcasts also go by the name Messages. This is sending messages from server or client that do not need to be bound to a networked object. In other words, you can register to listen for a message in any class without it needing to be networked. I looked through netcode and found it did have broadcasts so I added it in.

RPCs, at least in terms of Unity solutions, generally means communicating from/to the same NETWORKED object.

[quote=“Punfish”, post:13, topic: 899755]
LOL

Stacked scenes are the same scene loaded multiple times. Additive scenes is what it sounds like. FishNet can do both, or in combination. I don’t think the other two have proper support for either but that could change.

Broadcasts also go by the name Messages. This is sending messages from server or client that do not need to be bound to a networked object. In other words, you can register to listen for a message in any class without it needing to be networked. I looked through netcode and found it did have broadcasts so I added it in.

RPCs, at least in terms of Unity solutions, generally means communicating from/to the same NETWORKED object.
[/quote]

Will this work in the same way as in PUN2, in as much as any client can directly send messages to any specified selection of other connected clients?

[quote=“Munchy2007”, post:14, topic: 899755]
Will this work in the same way as in PUN2, in as much as any client can directly send messages to any specified selection of other connected clients?
[/quote]
That’s client-to-client rpcs on the chart.

1 Like

[quote=“Punfish”, post:15, topic: 899755]
That’s client-to-client rpcs on the chart.
[/quote]

Unless I’m mistaken, RPCs require a networked object as a receiver, whereas messages do not.

What I’m looking for is to be able to send messages that do not require a networked object as a receiver, which I believe is what broadcast is for, but I also want to be able to filter which clients are broadcast to. It isn’t clear to me if broadcast always sends to every connected client or if I can choose who to broadcast to.

[quote=“Munchy2007”, post:16, topic: 899755]
Unless I’m mistaken, RPCs require a networked object as a receiver, whereas messages do not.

What I’m looking for is to be able to send messages that do not require a networked object as a receiver, which I believe is what broadcast is for, but I also want to be able to filter which clients are broadcast to. It isn’t clear to me if broadcast always sends to every connected client or if I can choose who to broadcast to.
[/quote]
Ah okay. Please use the FishNet thread for FN questions, or our Discord.

1 Like

Updated the chart to include new FishNet features!

If anyone sees an update potential for the other compared solutions please myself or CodeSmile know!

Updated the chart to include feature Network Level of Detail.

Updated chart.

  • Planned category removed since timelines and implementations have proven unreliable.
  • Mirror Nested NetworkBehaviours changed from unsupported to supported.