Multiplayer is stable, and when you finally understand how it works its quite easy also. But while learning it you will probably fall into one of many multiplayer design traps.
For eg if you want some autofire gun, which is very common. First thought is to send event over to server when player pulls trigger and when player releases it. But what if player laggs or disconnect when releasing trigger. That event may get lost somewhere. So you need to design autofire around it (we send event of “fire” every 0.2 seconds) servers assumes that player disconnected or stopped firing if that event did not happened for last 0.5 seconds.
Then another major problem with multiplayer is that you cannot be certain of blueprint creation order, thus get all actors of class on server and client will return arrays with correct pointers (locally correct) but order of objects will be probably different. Now squad leader gives order to attack 3rd enemy on list, which enemy it is for clients a and b? You basically need to manually index all such actors.
So my point about multiplayer is, that if you do not know those quirks beforehand, you will make great firing system to just discover later that disconnected player keeps shooting forever. Or that when you give all bots order to shoot first enemy they all happily run trough whole map to shoot second enemy on the list, because their list is differently ordered, and they run on server.
But this is kind of derailing thread. Perfectionism in my case is biggest time sponge, but it will pay off because at some point i will just know what to do and what are traps ahead of me. Maybe not while doing first or second game, but hopefully when i am at 3rd project.