There are a few scenarios you can take this, as everyone has stated it is possible, I would share code on doing this but unfortunately I am not allowed to. A few hints though, it is easiest to have static models. Unlike second life where people can make there own models and import them into the game system, although it is cool, research has proven to me that only about 1/100’th of the game population will have the desire to do this and maybe 1/1000’th of the game population will have the skill, then you have to code for those bizzar things like model size, etc.
As has been stated on other threads all through the forums, start SMALL. First make your engine show a building someone else on the network has placed. Make sure that when they disconnect from your game and load back in, that the building is still there and objects are usable.
Also, HIGHLY important IMO, the more visible resources the more memory the game will take up and use along with CPU and GPU power. I can’t stress this enough, you need to use the tools that Unity has built in to keep track of poly count available in any given environment and scale your LOS based on that.
Adding content dynamically, well, you will need to build your own little tool that sits ‘outside’ your game, that they can ‘preview’ the model in the game before they import it.
For instance, you have a Unity player setup that does compression amongst other tid bits to the model, shows how it looks in different environments that exist in the game, etc. Then have that tool PREP the model for game insertion. Have a user folder for custom objects and use your tool to move the final prepared model into the custom objects folder.
Now, when they load the game, go into the game, they can use the live game tools to use the model however you let them.
This same tool can be used by your game masters to build entire levels, or entire scenarios for the players, it works rather well. Total hands off once the core engine is in place.
Now, as far as database is concerned, I am using SQL and Oracle both for very different purposes for my games but they are all running on stand alone windows servers, the content itself is stored on a massive file server.
One more thing, back to the streaming content, you want to avoid using bandwidth as much as possible. So have the game check for custom content, then trickle it up to the server, let the server do all the push out to the other players. The server will need a seperate Unity object to double check the model for any ‘errors’ per say that will bomb the model in the scene or hault the game. This is all back end business logic really, but trust me, without this final check before a push, if something is messed up, oui…