Need to change up what Im’ doing for a while, so decided to jump into this and see how Unity behaves.
First up, interested in hearing about your layout/architecture/framework for your MP scripts.
Currently, I havnt written my scripts with MP in mind, but I have a pretty good idea which parts are gonna be server and which are gonna remain client, so I know how to separate them, which leads me to a few options for my scripts.
-
Put MP/SP into the same script. Sure why not, keeps your solution tidier, should save on references etc, might need more if statements 
-
Separate MP/SP scripts. Ie, have scripts that are dedicated to a game mode. Set for single player, set for multiplayer. Will introduce a lot more scripts to your project, but keeps everything nice and separate and optimized for each mode.
-
Create a framework which pretty much runs the single player as a MP game with an internal server.
Anyway, interested to hear how you did it.
The way I did it, is to use different scenes - One for the SP Management and other for MP. And having scripts together can be a good idea because then Network.Connect and .InitializeServer dont bother to be used if you implement booleans to check if we are playing SP or MP.
From security point of view
If you don’t want your clients to see the server code then you have to write them in separate files. Otherwise the assemblies (.dlls) of your client game will contain server code which can be easily extracted using reflector and similar tools.If your game by definition uses player hosted sessions then this security risk is not there for you.
From performance point of view
Your scripts will be faster with less conditional statements if they are separated but the amount of conditionals has a great impact on importance of this. 1000 conditional statements per frame might be something on a mobile client but not much in PC.
From code usability point of view
The code will be easier to use if you implement some very general utilities in the same file. For example the character interpolation and movement synching code is a good case that can be done in a single file for both without much risk.