Hello all,
I did some research and studied Mirror, FishNet, and PurrNet with one goal in mind: to build a fast co-op game with Steam lobby support and Steam relay.
All of them are good and each has strengths and weaknesses. But when I looked at some small-company DLLs, I saw that they are using Unity GameObjects and Facepunch Transport for Netcode for GameObjects. Until now, I didn’t even know that Unity GameObjects supported Steam transport.
From your experience, what is the most reliable option with good support that provides strong client-side prediction and a host (server)-authoritative model?
From my point of view, using something native like Netcode for GameObjects would be the best since it is Unity-supported. On the other hand, why are people still using libraries like FishNet (which I currently want to use, though I am not sure)?
So what is the best route, and what is wrong with “Netcode for GameObjects”? Isn’t it similar to how networking is built into Unreal?
There’s nothing “wrong” with NGO but other networking frameworks may provide features out of the box that NGO doesn’t yet have. FishNet for instance is a solo developer’s work, and those can typically move faster on individual features compared to a publicly traded company with several thousand employees like Unity. On the other hand Unity is able to make more guarantees about their software and support.
As to reliable, see above. You can get good results with any networking framework but for reliability typically the better choice is the one from a team of developers testing on many devices and getting feedback directly from their Enterprise customers.
But really for a solo dev what matters the most is accessibility and support.
Last time I checked NGO didn’t have client-side prediction - but I’m not up to speed with the version 2.x branch and the features they integrated there, so I might be wrong. Though for client-side prediction in a coop game, you may not even need it that much. You can have every client be authoritative about their own state anyway, and it should usually be fine to just interpolate the remote clients and their actions.
All networking frameworks are server-authoritative these days.