Hm.... sounds not like this is something Unity comes prebuilt with, but maybe I misunderstand things.
1) Patcher file:
This is just information to update the client with. You are talking about updating the values of Items, but not fully swap out graphical objects, change scenes and stuff like that? Or you want to completly change scenes without swapping out the "exe"?
2) Change client without rebuilding:
Wait, what are you trying to achive here? You don't want to rebuild the game when you fully change scenes, add 3D Models and so on? You want to able to change the client without changing the server?
After thingking somewhat about your problem here, I got some ideas how it COULD work in Unity (be aware most of this is untested as I never come close to needing a patcher yet).
1) What you first need is a patcher process. This could be as an additional scene in your build or as complex as a separate c++ program that will call your built game once the patcher is done.
2) If we go with the simple Route, you would build a simple additional scene that would show the patcher GUI with the patch download and install status (and is fabulous place to sneak in some advertisments, if you want to go that route).
This Patcher will start a host of scripts, that use the Unity networking layer to contact your server, check if a new patch is available, and then download your patch (which is just a unity package containing all the new 3D Models, Audio, Textures, and the Patch scripts that do the grunt work of updating the built game).
3) Then the patch scripts get started. Now, I am threading in murky waters for me. I am NOT sure you can change a scene that got built just like that... but you could build the scene in a way that makes it easy.
3a) lets say you want to tweak your weaponstats a lot. Write that stats to a local DB or file (encrypt it if you want to prevent the player from having an easy way to cheat). Chances are, if you build a multiplayer game, this information is mastered on the server anyway, so no need for patching.
3b) If you want to change a scene: Build up the scene in a way that will preload most scene information from the latest patch file, and create the scene on the fly. Of course lightbaking and stuff like that needs to be done in the Unity editor so your patcher script gets a built lightmap to work with.
3c) If you want to swap out the model of a character: Again, check at scene startup or game startup which charactermodel should be loaded.
Of course there might also be the possibility to go even deeper and write a script that will modify the built game permanently. I have no expierience with that, but there is a valid reason to choose that over the dynamic route I described above (less time wasted on game startup / scene startup), so I guess SOMEONE must have thought about it in the Unity community at one point or another.
On rereading your last post, I think you want to go the dynamic route. Let me assure, that IS certainly possible. But most of the scripting and hardwiring you will have to do. You might find some Assets in the Asset Store that will do that out of the box, but most probably not for free.
Creating the Patcher would certainly be easy. I guess the downloading part would also be not a problem as it is one of the simpler tasks in networking.
Now, if you talking Item Asset in the sense of "Tweaking the Game Values"... they should be stored on the server in an online game anway. Get a local copy at startup and regularly check that the player has not hacked into it and changed values.
Or, if your game is really playing it save, the client will not need the information at all, as all game calculations like that are handled on the server anyway (the client would just get results and show the graphics)
If you talking about "Changing the Graphics of Items", then this also shouldn't be a problem. Swapping one mesh out for another is a simple task in Unity. Unity shouldn't care if that Resource has been in the built game from the start or was just downloaded, if everything is in the right format.
You might run into smaller troubles like adjusting your characters animations for a new weapon mesh or FX needing a replacement. There are just as many options to solve them (importing new animations, making sure the new weapon model is compatible with the existing animation, using some kind of Inverse Kinematics to place the Hands at the right points ).
Edited by Gian-Reto, 11 August 2014 - 06:36 AM.