You know what I think? UT will never give full proper support for external version control systems because if they did that, there would be no point in buying the Unity Asset Server.
There’s some support for VCSs with the metadata being put in the same folder as the files that concern them, but there still have been numerous problems (like during collaboration). The favored way to transfer changes in between two or more working copies is still via export/import of unity packages and not check in/check out of a, say, an SVN server.
I really prefer using a VCS though so I am still hopeful that something can be done about this. People have been petitioning to make Unity’s scene file into text format instead of binary and that is one step towards the goal.
The only way I see to make a win-win situation is if the Unity Asset Server implements multi-user real-time editing of scene files (like Google Docs or Etherpad), something that external VCSs cannot do, and then give proper support to external VCSs by means of making all of Unity’s files and metadata in text format.
It isn’t that hard to use version control with Unity. Something like SVN works flawlessly so long as you ignore the libraries subfolders and don’t make a habit of renaming folders then there’s seldom a problem.
I wish the metadata being shared with the assets was the default behaviour for both pro and free.
That’s fine if you only use SVN as a backup tool, but if you want to use it as a collaboration tool among other programmers in a team, you’re gonna encounter some problems.
Scene files being ugly blobs is actually a problem with Asset Server as well. So I also hope that will eventually be changed (currently, I’m using Asset Server as a single user - but not being able to merge changes in scene files is a big issue the moment you start working in a team … which is, kind of, what Asset Server is designed for
I think once that’s fixed, Asset Server and external version control systems should both work fine. But I like the idea of having real-time multiuser editing even though I think it would be quite a bit of development effort (and also comes with some pretty challenging issues that would need to somehow be solved, e.g. how to undo one user’s changes when the other user already has built upon them). Real-time multiuser editing doesn’t exactly follow the usual check out / commit pattern.
I imagine for undo, the history for the current session would be temporarily stored on the server, and undoing would revert one step backwards, which is propagated to other clients in real-time.
Hmmmm, I’ve looked at the M2HPatcher, and the idea for it is its a patching tool: only one source is authoritative, and other working copies would work only as clients, downloading the changes from that single source. What we need is a collaborative tool, where everyone can edit and propagate changes to others without hiccups (without corrupting Unity’s metadata).
What problems are you encountering? We’ve found Unity works with svn through meta files rather well for collaboration between programmers. It even works properly with branch / merge operations. The VCS system really just needs to be set up correctly as per the docs (either svn properties for svn or your .gitignore file for git). Only scene files need coordination, but that’s not really a programmer collaboration issue.
A clarification to the above: specifically only scene files need coordination.
Even propagating art assets with meta files with svn works for us without any coordination problems, as art assets are normally not collaboratively modified.
I’m going to have to disagree with you here. In my experience, Unity works flawlessly with SVN; however, my team only consists of four people. I don’t know how large your team might be – on a large scale project, there might be many issues that arise.
After ignoring the proper files, my team has yet to have an issue. It would be nice if there were some more automation done when you click “Use External Version Support.” For example, if Unity would move all your “unneeded” SVN files into a separate folder within Library. That way, you only click ignore on one file (the folder), as opposed to twenty-some individual files. Also, it would be nice to eliminate the need of ignoring new files that occasionally appear.
That’s the only complaint, and tiny one at that, with Unity. What exactly do you think is broken in Unity’s SVN support? I also agree with you – in my opinion, the only way I’d buy something like the Asset Server is if it covered real-time support.
SVN works fine as long as your team keeps two basic rules in mind (which apply to anything from no versioning up to asset server): Do not concurrently edit scenes (use prefabs here) and do not concurrently edit prefabs
if thats done right, you will not have problems after you enabled VCS support
PS: wouldn’t mind if my asset server license would give me live syncronization among team members. But to be fair, I would already be happy if it supported branching and merge for scene and prefab. that on its own would put it already far above SVN
I’ve yet to see any gain from the upgrade of the AS client license to U3 … so far $600 alltogether and still waiting for basic versioning capabilities and since I found smartSVN not even the movement - delete - add detection of AS does play out anymore …
Yes, I imagine putting script files and/or art assets under version control without including the metadata files for them would work.
But its about editing scene files and prefabs. I’ve experienced issues where my non-tech savvy team members forget to commit their changes after work and so they get conflicts after doing an update, or when trying to commit their changes, so it forces them to drop the changes they initially made and recreate them.
Its mainly a team management issue, but it stems from the fact that you can’t merge changes in scene files and prefab files because they are in binary format, which is a real hassle.
I have a question for you guys who use SVN, do you also add the whole Library folder (the metadata) to version control?
No, no, if you version control the scripts, Unity will not care if changes to the script’s contents is made due to an SVN update, or edited from the local working copy. It will just recompile the scripts, whatever changes were made, regardless of where the changes came from.
I imagine the same can be said for art assets (images, 3d models).
If however, you move the file to a different folder, then I agree with you, that’s gonna mess up the metadata files for sure. Moving/copying/deleting will still have to be done within Unity on working copies, and the copies on the version control need to be somehow edited to reflect those changes.
Usually if its a move operation within Unity, I go back to SVN and just delete the “missing” file (where the file used to be), and add the moved file (where the file is now) as a “new” file, it breaks the history though. But this is in a scenario where I include the Library folder into version control.
yes but you can never move it without the meta → boom
and you can be rather sure that moves will happen
if you don’t have VCS support enabled to get meta files, it does not make a difference where you move them, the other devs on the team will get a fucked up project if they worked on their end at any point …
VCS is a setting in the Unity Pro editor not available in the free version. It basically copies all the metadata to the assets folder alongside whatever asset is compliments. This makes the libraries folder pretty much redundant other than a few settings for editor and project settings, which are stored in the filed in root of the library folder.
One MASSIVE vote for multiuser editting. Even on a 2 man project asset server is useless. We bought 2 copies of pro v3 but couldn’t justify asset server at all. But multiuser would get me selling my one remaining kidney to get it
I say skip all these stupid traditional version control ideas and skip ahead to realtime collaboration. Google docs proves it works and the ‘hero’ engine shows how amazingly productive it can be. http://www.heroengine.com/world-building
paste This would be THE feature to set Unity apart. Skip scene merging and move to realtime multiuser editting. The unique thing about Unity is it’s well set up to implement this. All the components are generic to unity, there is very little hacked in custom functionality that doesn’t follow the component/gameobject model. Unity already serialises and detects changes down to the variable level which is ideal for synchronising across users. Our ‘engine’ does this to a small degree and it was surprisingly easy, simply because the networking code already serialised state. Unity is in a much better position as everything, including editor stuff does this already.
Asset server for me was a major disappointment as I was expecting some great realtime features but only got a half baked SVN. Multiuser as a pro feature/asset server 3.0 feature would be an awesome reason to get Pro and Asset server.
Adding support for realtime MultiUser editing in Asset Server 3.0 is my dream since… Since I first started working with Unity, early 2009.
This will make Unity pro + Asset server sales sky rocket seriously no jocking. I haven’t bought Unity Asset Server cause is simply very limited compared to a full featured SVN. But if Unity adds multiuser editing capabilities much like (Hero engine does), I’ll buy it on day one!