Unity supports external version control in Pro, and has Asset Server for those who wish to license it. Neither version would seem to be very merge-friendly, so I'm curious to hear various workflows for having several people working on a scene simultaneously.
In the early days of Flash game development, when having a .fla was required, before ActionScript-only projects were possible, a big rule we had was to put nothing in the scene, nothing on the timeline. The .fla only contained a single line of code, which called main() in our external code files. Assets/data were kept elsewhere.
We are doing the same in Unity, to solve the same problem of a highly shared binary file. We don't attempt to share the file, but rather, make it so this file is insignificant, or infrequently changed.
Essentially, we have 2 tools; one which goes thru the scene and exports the representation to an xml file, and another which rehydrates the scene from that file... which is used during both design-time and run-time.
Our workflow is, we source control the xml file and an almost empty scene. When someone wants to work on the scene, they load from xml, modify the scene, store to xml, and then we can merge the xml files.
Another advantage to this approach is that in the xml file, instead of storing the position for Prefab X, we store it as the spawn point for MobID X (conceptually). This allows us to create more of an abstraction between the "mechanical" art assets and level design, so each can vary independently. Even doing this, the content of our scenes is limited. We data-drive as much as possible. (We actually don't have spawn points, but spawn regions. We don't place monsters with items, we have xml drop tables.)
This also solves another problem we have; which is our server isn't Unity, but still needs a representation of the world we can easily keep in sync.
You might want to check out our newly open-sourced(*) project Unity Text Scene, available at GitHub here: UnityTextScene project.
As it currently says in the README:
(*) The code is available under an MIT license (see the LICENSE.txt file in the project).
answered Mar 30, 2010 at 10:08 AM
Updated for Unity3.5:
All Unity versions (including Free) now support version control.
Hope this helps!
A way to do it if real source control is not an option is distributing asset bundles with the changes. Beware that there seem to be quite some bugs and differences in the importers/exporters of different versions. My designer works mainly with Unity on PC and I import it into Unity iPhone, but have to make a backup first because often after importing an asset bundle all Unity can do is crash.
Although it's not without problems (mainly the instability of Unity after imports), it is an easy method to work as long as different members of the team do quite separate things. If you have more than one coder, it could be an option to at least have the Scripts under source control (should work with even the free Unity).
answered Dec 08, 2009 at 06:11 AM