The biggest trap here is actually UNET. Networking is a very difficult kind of programming so we need to try things to find the best solution for us. And the best solution seems to be Mirror. Mirror is a high level Networking API for Unity, built on top of the low level Telepathy library. It's the networking solution that UNET always wanted to be! Basically this is community replacement for UNET. People do what Unity team failed to do – they rewrite and improve UNET ->>> link to official Unity forum.
Mirror is great as it keeps the traditional UNET-like syntax and the way of doing things however it has improved / rewritten and heavily optimized code. Mirror is in active development now so it even gets better day by day. Source code with examples available on GitHub ->>> link - and after a few days of testing I want to say that I like it!
It is super easy to migrate to Mirror from UNET. There is automatic migration tool available ->>> UNET to Mirror Converter - migration from UNET is usually a matter of few minutes.
I have tried many networking solutions and Mirror is by far the most stable and focused on gameplay code, not packets and bytes. A lot of the competitors made false promises and made claims that didn't stack up. Mirror passed all my expectations and it has great Discord community (https://discordapp.com/invite/N9QVxbM). After UNET deprecation the multiplayer tutorial was removed from Unity "Learn" section so there is the official Mirror documentation ->>> link.
Ok now we have a solid network foundation for our new multiplayer game but what about lag compensation and interpolation? Achieving smooth multiplayer movement is quite a complex task. Have you had problems with choppy and unrealistic movement with Network Transform component? Then you need Smooth Sync –>>> asset store link.
I have replaced my own syncing system which took me a couple of weeks to write and tweak with this one and the game behaves much better in high lag conditions. This asset covers all the bases of lag compensations while keeping it simple. Just remove Network Transform from each of your prefabs and add Smooth Sync. It took me less than 5 minutes to do. The tech behind the plugin, the interface, the source code, all that is great and it makes your game's movement syncing way better. It works out of the box and there is now Mirror support!
Well that’s all about Unity networking in the beginning of 2019 for now. Please note that this networking solution we use for our new multiplayer game but you may wait for a new networking solution from Unity team. If you have something to add just write a comment.