Theres got to be a better way of handeling this...

So i have two seperate projects, “Client” and “Server”, now obviously for things to work the assets and scripts and scenes and such have to be almost indentical on both the client and the server (im working on an authoritative server system)… now ive only laid down the basic structure and its already getting difficult making sure assets and such are the same… there has to be an easier way? Can someone point out how i can make a dedicated authoritative server and a completely seperate client to connect to it, while not running into problems of both the server and the client having mismatched assets and whatnot?

From the sounds of things, what you’ve using is what I call a pseudo-server-client network model, i.e. your server is a client in the game, as well as the server, as opposed to a dedicated server-client network model, where your server is a server and nothing else. If that is the case, then you should really be simply using them as one single project, with the option to choose between whether each instance is a client or server when you run them. But, I realise that doesn’t solve the issue of running two instances, since Unity doesn’t allow you to open the same project twice, which is very annoying. However, I also found myself in this situation, from what I’ve found, there are two options:

First is to use a single project, simply build the game when you need to test it and run two instances. This is relatively simple, and will work relatively well if your project is quite small. However, the bigger it gets, the longer it takes to compile, so you spend more time waiting around. There is also no debugging capability so I don’t recommend doing it this way unless you are desperate.

Second is a bit more complex, but it’s how I do my networking programming at the moment, and it works really well. However, it does require a second computer. The idea is to use some kind of source control, I use Subversion because it’s easy, then have a copy of the project on each computer. You can then run the project on both computers and connect across your network. Any changes you make on either computer you can keep synchronised across both projects using the source control. As I said, I do my networking like this and I can vouch for it’s usability. But I do happen to have a laptop and a subversion service subscription lying around, so I can understand why some people may not be able to do it. If you do happen to have access to both of those things, great! That’s how I’d do it. Also as a pro tip, I use Synergy to control both of my computers using only one keyboard and mouse. It’s free! And it does lag sometimes, but is usually superb.

And if you can’t do either of those ways, I guess you’re stuck with doing what you’re doing now until Unity makes this a bit easier for us network programmers.