Unity used to have a pretty good netcode implementation, but then they ripped it out in newer versions and still don't really have a good replacement for it
I mean, I dont hate netcode for gameobjects, but generally I prefer to have the application just set up some sockets for me and I'll handle the rest myself, which you can do in NfG, but I've not used it too much. There was a really long gap between having working netcode stuff, and I wrote what I felt was a really nice layer over the top of the old LLAPI for a project I was going to work on, and then they immediately deprecated it.
This is the mantra of the past decade of game dev.