Fishnet is starting to look extremely good, even better than Mirror in my opinion.
I am still trying to decide what to go with on my project.
I am just curious as to the opinions of others on the subject of which is better,
Fishnet or Netcode?
You know this comparison chart?
Thanks you for this information. It appears to be very extensive.
Just curious, which would you recommend? Fishnet?
Spend a week and try them both. The more time you spend thinking about which will be better for you the less time you spend actually determining which will be better for you. Personally I went with FishNet simply due to Unity’s track record in this department.
@Sluggy1 Thanks. Yes, after more review I think I am going with Fishnet also.
I’ve got around 1k hours in NGO and tinkered with Fishnet a bit, considered swapping.
One thing I will say is better about NGO is they have more complete documentation and it’s generally easier to find examples or code in the docs that will explain things to you. Fishnet docs are generally brief commentary on their features - usually just a list of configurable properties, with little in the way of how the component is expected to be used and don’t tend to include code examples at all. NGO include code examples and commentary from a variety of use cases in each one of their component’s documentation. With Fishnet I found myself reading the source code more to try and understand how to use their components.
That said, Fishnet support is fantastic on their Discord and most the time you’ll get an answer to your question in minutes.
I have now used NGO for quite some time and the only thing I can say is that I am deeply unhappy with it.
Performance from a Networking and CPU perspective is awful if you don’t do everything from scratch and then why even use it. Also so many implementation detail fuck you over and are unintuitive. I also get a lot of weird warning/errors in the console where it turn out that those warning should not even exist or really don’t tell you what’s going on.
I also feel like they tried to make a solution which you can just drop into the project and be done, but that didn’t really worked out and now its much more complex then it needs to be and that complexity shoots you in the food. And also ended up not building good tooling, but instead a solution that does not really work out for anything that they might not have considered in their complex solution.
I am working on a rather complex game (infinite procedural world, Survival …).
So I could imagine that if you have a rather simple game with no need for good optimization that NGO would be fine, maybe even great. But for anything more complex I would not recommend it at all.
I am constantly thinking of switching to Fishnet, but I think the cost of switching now would just be too high.
While I have not even tried fishnet I did read some documentation and many of the problems that I had in NGO would not have happened in fishnet.
So while I not say with certainty that fishnet it better, I would think twice before using NGO for more complex projects.
General rule for networking is to DIY more the more complex the game gets. Your observation is about right. A four player coop game works great, an open world survival game with 16+ players is all DIY, not to mention “true” MMOs where it’s DIY all the way because every extraneous byte in transit can be quite costly.
Case in point would be the NetworkAnimator or even NetworkTransform. These are all-in-one solutions that work out of the box, but they’re terribly inefficient because they need to consider everything a user might possibly want to have synchronized. For animations it typicaly suffices to transmit an event that starts an animation. But NetworkAnimator actually synchronizes the entire Animator Statemachine including transitions, ouch!
Which is also great in a way because it’ll just work, and saves many people a great deal of development time. But you cannot build anything complex with it ie 100+ network animated characters.
What about complexity-wise? It’s clear that fishnet is more featured that NGO, but which of the two is easier for to use?
I’ve got some previous experience with writing netcode in other engines and all I can say is that I’m a horrible, terrible, awful programmer who takes months to figure out what others can do in days. Personally, I’d find it valuable to hear more about how each solution compares usability-wise.
From the comments, NGO seems to be easier, but I’m not sure.
Probably NGO in that case. You are going to find way more tutorials and documentation examples in NGO than Fishnet due to the fact it’s a bigger team supported by Unity and more people are using it. I haven’t used NGO in close to 2 years, I assume it has come a long way since then, and frankly it was pretty good when I did use it.
Likely the best answer indeed. With that said, I just found out about Purrnet, it’s new and a little underdocumented, but it does seem quite appealing. I’d be curious if anyone here has experience with it, and how it was.
I tried it out for a small two-player platformer game over the spring and I can say it was hands down the best system I’ve ever used. CodeSmile is absolutely right that bigger and more complicated projects are really just going to need a custom solution but for smaller projects where Fishnet or NGO would suffice, I think this is the best option. I’m never going back to any of the others as long as Purrnet exists and works on current versions of Unity.
There’s three features that stood out to me: 1) Spawning and despawning is dead simple. 2) You can nest networked objects! This is a huge feature that no one else has and it makes it much easier to adapt certain patterns I use in non-network projects. 3) Async RPCs with return values…. nuff said.
Overall, I just find this system much cleaner and intuitive to use than FishNet and much more feature rich than NGO.