Hi. I am looking into our options for having both of us work on the same Unity projects. The net is full of conflicting information from previous versions of Unity. Ideally I would like the following, though am willing to compromise if it makes our upkeep/learning easier. New hardware is not out of the question, however keep in mind we are a startup so budget is small.
Features we would like:
Store a solid copy of our project locally on a shared drive/service that will still be there if our internet goes down.
Easily sync scenes, scripts, and assets between our workstations.
Support for artistic files such as large texture maps, 3d model collections, 2d sprites, etc.
Way to keep a version control over our code and possibly our artist files too for backtracking purposes.
Possibly edit the same scene while we are each at our workstations for collaborative design or brainstorming sessions.
We are located in the same building, only a single hallway separates us. Both workstations are on the same lan, however we would like to keep working if the internet goes offline. I also need to be able to restart or use the workstations for other activities, so if a server is needed as a third machine, please recommend some!
One other possible source of pain is that we will be making some VR content but only 1 of the workstations has a VR setup attached. The applications we are designing should work on desktop with a fallback for controls/rendering. However, this means the export or testing needs to be separated from the sync. I am not sure if this will cause issues once we both try the play button on our respective workstation.
Surely other developers using unity have something to share regarding this topic? All of you on this forum can’t all be solo developers?
I’ve done some digging myself and it seems most use git or a self hosted git server? Is this a good route to take? I also saw a lot of extra setup regarding the ignore file and handling large binary data, though the latter seems to go woosh over my head. Maybe I am missing something about how git works, but I don’t see why large 100MB assets would be a problem for bloat, unless Unity is changing the asset data often even with no other changes. Can someone who uses this git setup clarify what would be needed? I assume the git host needs to be a seperate machine to allow both our computers to safely crash/restart when we lock them up or need to restart the OS for other reasons.
Another route I have been thinking about is just using a shared cloud storage mirroring service like iDrive. We have a shared space that is really just a folder that syncs between our computers. Would there be any consequences to having Unity open the same project folder on two separate machines(potentially with different hardware) at the same time?
The Unity interface at least seems to imply that projects need to be “file > Save” to write the changes, though I do not know enough about under the hood to know if that is true or if we will have problems. We are too busy this week with a few other things to create a new project just to test this, so if someone has tried and there is a problem please reply!
One possible route I think would be Unity Teams, though that seems based on a push and pull system like git, so not sure if that supports direct collaboration like we would like. Also, many of the assets I use seem to be “pay per seat”, and it’s my understanding that for the other user to open the project they would need to own a copy of every store asset I’ve bought/imported to the project over the last year. Not exactly a cheap/free experiment to run just to find out if the editor can collaborate across the LAN or not with several of these assets being 100-300 USD model collections.
Well the industry standard way is using some form of version control. Git is the most popular right now, and a lot of people are using one of several online hosting services for Git. If you want it to all work seamlessly with flaky internet though, then you should instead locally host your version control server. I’ve done this a lot with SVN and it is not too difficult, if you’re comfortable with how you typically configure anything on Linux via command line I just don’t have any experience trying to host Git all locally, so can’t say whether it is hard or not.
All version control systems basically support this.
Unity itself doesn’t support this very well. Well you can both open them at the same time and make changes locally, but it is best to only have 1 person actually commit changes at a time to scene files.
The issue with large assets, especially binary assets, isn’t really a technical issue. It is an issue of cost with the online Git hosting services.
For example, look at BitBucket’s pricing: https://www.atlassian.com/software/bitbucket/pricing
They are really skimpy on the storage. $40 per user and they only provide 10GB storage? Come on, ridiculous. And with version control, once something is checked in it basically lives forever, even if you delete it, without going through extra hassle.
When you self host though, storage isn’t really an issue. Even a half decade old 1TB HDD is more space than you’ll need for everything most likely.
I highly recommend against this. The problem is services like this aren’t intended for merging conflicting changes to the same files. For example, I used DropBox once to share a project between my desktop and laptop, and it nearly destroyed the project because 1 time I made changes on the desktop then made changes on the laptop without first syncing the changes from the desktop. DropBox handles conflicts by duplicating files with new file names. Unity doesn’t tolerate that at all though. I would be surprised if iDrive handles merging conflicts like actual version control software does.
Best way is to save all changes in Unity, exit Unity, then sync your changes to version control.
I believe Teams requires internet access, but I thought you wanted everything to be able to work offline.
As far as per seat licensing of Assets, there’s no actual lock in your project which implements that. It is just something you need to keep track of. There is nothing stopping you from getting 1 seat license and first verifying it actually works collaboratively between your 2 computers before paying for the 2nd seat. I Am Not A Lawyer.
From the sounds of it, I should invest in getting a stable third PC up to run a private git server on. Sounds good!
Re: Teams and Asset seating - I guess I misunderstood what Teams was supposed to do. It’s described on the Unity site as a way to collaborate, so I just assumed that “collaborate” meant like when you “collaborate” on a PS4 Dreams or Minecraft level editor, meaning creating together in real time. After further research and with what you are saying it just sounds like it’s another git-like host service and would make us even more internet dependent. That’s a bit disappointing, but I can understand why Unity would be a complicated beast to get working like other multiplayer editors.
I found this tool while I was researching called SceneFusion, by a company called KinematicSoup Technologies Inc. Does anyone have experience working with their tool? It seems their tool tries to do the “collaboration” like I originally thought it could work, though I am not certain how or if it can handle shaky internet connections. Was curious if anyone over here has used it?
The performance requirements for a version control server are extremely low. 99.99999% of the time the computer is just idle. So don’t go crazy with it
I’ve never actually used Teams, so I might be the one misunderstanding.