It’s funny when you go back to your project after a break and you realise most of the things you did before leaving were actually shit, isn’t it? Yeah, that was my feeling 2 weeks back regarding this “Networking” implementation.
Changing the game from a single player to multiplayer seemed quite straightforward at first glance. Especially when Unity provides such a page: https://docs.unity3d.com/Manual/UNetConverting.html
But it all depends on your code base and your understanding of network challenges… My code base was quite big already I guess. But still, size isn’t what matters the most here (and keep your dirty thoughts for yourself). The biggest difficulty is the networking itself. It takes quite a time to get used to Unity’s way of handling networking events (via Commands, Client RPCs), handling synchronised objects (via NetworkIdentity, Network Manager, Network Transform and Animator), handling of players (server, client, with, local player with or without authority and so on…). And once you are done understanding, you try, then you fail, then at some point you half succeed, and finally you start over and fail again. That was my own experience. I believe the more you wait to integrate such a feature in your game the more foolish you are. Of course, if you know upfront networking is relevant for your game, do it upfront. Don’t copy me. And I won’t copy my own self in the future either. 🙂
That being said. Here I am, fixing networking issues. The good news is, since my enemies have most of their states in common, upgrading to networking was quite easy once the state machine itself got refactored.