Subversion (SCM in general) and Unity - impossible?

OK - starting up the initial project now for my first trial of Unity, and did what I always do - roll things into SVN. One of the worlds most used SCM systems.

We are 3 guys on the project, and the only natural way to share game projects is to use a SCM.

Now - after reading a few (older) posts - I understand that this has certain problems with metadata and other stuff that seems to be generated machine specific for a particular Unity instance - and is thus not SCM’able.

I found a post telling me not to persist temp/*, and 2 Library ones.

But in the end we still have problems with unlockable metadir and such. It seems to work halfways, but not really versioning all the information.

So the big question - is it even possible to use a SCM system with Unity?

I know there is a Asset Server, but that rather sounds like a really really bad case of “not invented here” to code you own SCM these days. (Sorry if I stepped over someones toes there)

Personally I want to use SVN - its what I use for everything. Others may prefer perforce, CVS or AlienBrain. But I’m getting really cold feet here thinking about not being able to step back in time and having backups of my work - especially with multiple coders on a project.

Hopefully someone can enlighten me a bit :slight_smile:

Best regards
Thomas

The Asset Server is made to solve exactly this. It is a version control system that is built with large binary assets in mind. It tightly integrates into Unity and with it’s meta data system. It can also handle file moves natively.

In svn operations like svn stat can take around a minute on a large multi gigabyte project folder. The Unity Asset Server can perform those operations in less than a second. Svn is great for source code but big projects with binary assets are not very usable with svn.

The other problem with existing version control systems is that Unity stores a lot of Meta Data. Meta data is very central to how Unity and the asset pipeline works. Existing version control systems do not map very well to that.

For those reasons we created our own version control system that is tightly integrated into Unity and just works.

Thank you for the answer - it seems to confirm my fears though.

So the short answer is really - no - its not possible to use a standard SCM with Unity. Correctly understood?

First - SVN might not be the best for binaries (Alien Brain comes to my mind) - but it still handles them OK. I’ve worked on a lot of projects using also large binary files, and there has never been any problems with SVN in that matter.

So it seems to boil down to, that you are required to use the Asset Server for any type of professional use of Unity.

While I dont doubt that you guys are excellent coders, I really do not like the idea of using an inhouse developed SCM with very few users (compared to all other SCM systems available), and even have to pay to use it.

I would hate to be the studio that invested $100k+ in Alien Brain licenses wanting to use Unity.

Sorry for the ranting/being straight forward about what I thing - I just dont get it why this design choice was made. You should still be able to keep all the meta data in some general platform movable format in e.g. a xml file or a small file based database if thats what it takes. But cutting out 99.999% of the SCM systems out there?

Any chance that this will be changed in the (near) future?

I would definitely agree on this as a lacking in Unity. I understand the reason why creating a different revision control system was necessary due to all of the intricately linked binary data files, but I think that storing the project data in this scattered binary format is a bit of a mistake. It makes merging of work from multiple authors more difficult (or impossible) – something that text-based data can do well, even if text-based data has more parsing overhead.

Using the Asset Server is certainly a step back from something like Subversion. From what I’ve seen you can’t create tags or branches which are very handy for project management, and you need to put all files relevant to your project into the Asset Server or else face the hassle of syncing files SCM’d with something else with versions of Asset Server assets.

Anyways, I do rather like Unity (I’ve only been looking at it for a week so far, but have been impressed), but this SCM problem is almost (but not quite…) a deal-breaker for me.


David Robinson

My question is:

why not going for integrating unity with subversion? I think that subversion has something call triggers, that can notify Unity about the user changes when those are done outside the enviroment.

Or even just prohibiting making any changes to the database with any other client that Unity itself, just as it is right now… but with the advantages of having subversion behind (code merging…)

Anyway, I can say that I was using the asset server a few weeks during my pro evaluation and it showed quite robust and usable for professional development. My experience includes perforce (3+ years, 30+ people project), subversion (open-source proyects) and the hideous sourcesafe that I rather forget.

It’s not about having some extra text files lying around somewhere. Every asset in Unity contains metadata in the form of import settings. And the ability to clearly identify each asset with a guid so that references are not lost when moving an asset. The meta data system is the main reason why the asset pipeline in Unity is easy to use, smooth and completely automatic.

We care about making Unity very smooth, easy to use and just work. We try to avoid clunky solutions, that do not just work out of the box. Svn is not very well suited for handling metadata and binary assets unfortunately.

I presume it would have been possible to add a semi working svn support.
For example, one possibility would be to save a metadata text files next to each asset but this would clutter the project folder, make it harder to use Unity and much easier to screw up your project folder. We decided to not do that, because with the Asset Server we can provide a solution that works much better.

The asset server doesn’t have all features that svn has yet like tagging, however it works rock solid and the functionality that matters is there, solid, very fast and easier to use than any other version control system.
It is fully integrated, Graphic Artists who might not be accustomed to command line tools or version control in generaly, can very easily get started with the Asset Server.

People have also already started writing extensions, for example web frontends:
http://forum.unity3d.com/viewtopic.php?p=60628&highlight=#60628

… but the unty asset server already supports code merging. (Both automatic merge and manual merge using an external diff application in case of conflicting changes.)

… plus all the things joe said above. :smiley:

Much love for Unity…

But my friends and I cannot afford thousands a piece to upgrade to Pro and get Asset Server.

At least not yet.

So… with an Indie license, and a few people trying to work together… what is the best process.

I would like to retain revisions of both code and binary assets. Also, how do we keep project files from becoming out of sync?

Cheers!
:slight_smile:
Sumner

Cant answer you completely - but definitely dont use CVS or SVN for it.

If not asset server/pro license, then try to use something like git or similar.

But I havent tried that myself, so its up to your team to experiment and do a proper proof of concept.