A couple of teammates and I were making a game for Udacity’s VR Jam last February. We had been putting off merging our hard work because of the dreaded merge conflicts that were ahead of us — merging Unity scenes.
What’s so bad about merging, you ask? Let me explain—and let me then offer a solution.
The Travails of Merging Unity Scenes
Unity scene files contain so much information that it’s hard (and often impossible) to merge. We started out using git, which works fine for scripts. However, it falls very short (and gives up) when trying to merge scenes. I was off to research. Some googling took me to Unity’s documentation for Smart Merge as well as a couple of other posts about Perforce and PlasticSCM. Both sounded good, until I got to the costs. I kept looking, sure that there’d be something that would work.
I stumbled across a plugin, UniMerge. At $15, I thought it was worth a try. Reading through their documentation, they expected that we’d have two copies of an object in the scene, or two copies of the same scene. It would show the differences, which is great, but I didn’t have two copies. I could have just made a copy of everything and then renamed it. Pulling in another feature branch would ideally not create merge conflicts, and I could have two copies (of EVERYTHING) in the project. Then, I’d be faced with the daunting task of going through every object and scene, comparing and then deleting. Way too tedious. There had to be a better way.
Solution: Unity Collaborate
I finally reached out to various places — the Udacity Slack channel, even a Unity Facebook group I’m in. Many offered suggestions. Some just posted the same research that I’d come across. (I can do my own googling, thank you.) Someone mentioned Unity Collaborate which is in beta right now. A service made by Unity for the exact purpose I needed? Yes, please!
Setting it up was easy. Using Unity 5.5.0 or later, here’s a link that will help you. https://developer.cloud.unity3d.com/collaborate/ I had to download Unity version 5.5.0×1. (NOTE: Without this version, the other steps will look like they work, but you won’t actually be able to publish anything.) After you’ve installed the correct Unity version, go to your Services tab within Unity. Click on Collaborate and turn it on.
Once you’ve turned it on, you’ll see a “Collab” dropdown in the top bar. That’s what you’ll use to sync or publish, view your history, or invite collaborators.
Add or change anything in the project, and the icon next to Collab will change to a blue arrow, indicating you have made changes. Click on “Collab” and you’ll see a publishing dropdown. Fill in your commit message. And click “Publish now.”
You can see what changes you’ve made to a single file…
Or you can revert your changes to a single file.
At the bottom, you can invite teammates and set permission levels by adding their email…
Or view your history.
I think this very well may be my new favorite feature in Unity! It’s amazingly easy to setup and use. The downside is that now my GitHub profile shows a lack of commits. Maybe Unity will set up some integration for that too!