Search Unity

Based on a set of guiding principles focused on delivering value to teams with diverse skill sets, we are designing a brand new experience for Collaborate.

As we mentioned in our last blog post, we are doing a series of “Developer Diary” posts to share what we’ve been working on for Collaborate. In this entry we’ll be exploring the new UI in more depth, talk about command-line support and share some details on the current state of development. 

Guiding principles

Collaborate was created because we believe that all creators should be able to enjoy the benefits of version control without having to understand its intricacies. Our first attempt at solving this was to create a simplified UI that abstracted away complex concepts. For example, the workflow of ‘add’, ‘commit’, and ‘push’ became just ‘publish’. From your feedback, we learned over the last year that having a simplified UI isn’t enough. Many of you wanted to personalise your experience by having the ability to choose the UI that best fit your comfort level with version control. 

To guide the redesign, we’ve established a set of guiding principles. They are:

  1. Performance and stability are top priority.
  2. The UI should provide a simplified view that enables creators inexperienced with VCS to get up and running quickly. 
  3. The UI should provide an advanced view that aligns with the workflow and terminology that experienced VCS users are familiar with.
  4. Standard routine actions should be so simple that they require no documentation.
  5. Advanced routine actions should require no documentation for experienced VCS creators and minimal documentation for inexperienced VCS creators. 
  6. Features that are “risky” to a project in “the wrong hands” should be gated to prevent accidental use.

The new design

We wanted to share the latest iteration of the design, which has gone through some adjustments based on your feedback. This design will continue to evolve with the feedback you share with us.

Simple UI view

The goal with this view is to simplify the publish workflow as much as possible. For those familiar with “old” Collaborate, you’ll recognize similarities to that UI with a few notable changes:

  1. All modified files are listed.
  2. You can easily find specific files via the search bar.
  3. The “All” checkbox will let you quickly select/deselect the files.

 

Advanced UI view

The goal with the advanced view is to offer a UX that more closely mirrors typical git workflows. This view has all the same features as the simple UI, with a few key differences: 

  1. The list of files is presented in a tree view, rather than a collapsed view.
  2. Only files located within the “Include” section will be published (rather than having to check a box). “Including” a file is the equivalent of executing the ‘git add’ command on it.
  3. You can easily find specific files that live in either the include or exclude section via the search bar.

 

Branching

Branching may be the most requested feature that we’ve gotten from you. For those of you not familiar, it is a way to work on your project in isolation from the rest of the changes that are being made by other members of your team. This is very useful if you are prototyping, making a risky change, or if you want to separate out your project by release. Branching features will be supported both within the editor and on the Services Dashboard.

Within the editor, you can create a new branch or switch to an existing one at the top of the window:

 

Switching to a new branch will automatically filter down your history view to show only changes made to files within that branch. We’ll share the mockups for merging branches later.

 

Viewing the History – Searching & Restoring 

Being able to explore past changes is a key benefit to using version control. To aid in this, the history window will have more robust search capabilities such as by keyword (file name, commit ID, publish message, etc.) and/or date range. The filter will show all of the past commits that meet your criteria.

 

Once you’ve located the file(s) that you are interested in, you can access them via two methods:

  1. Rollback: This will replace your existing file(s) with the version that was published. You can do this to all the files in the commit or just a single one. It is very useful if your current version is no longer correct and you do not wish to preserve it. 
  2. Restore: This will create a copy of the file rather than replacing your existing file. It is very useful if you want to explore how you did something in the past without losing unpublished changes.

Git command-line support

Collaborate working with git command-line is another one of our more highly requested features, and we’re happy to confirm that it will be supported! Like with most things, with greater flexibility comes greater challenges. To support it properly, we want to make sure that any changes made from the command-line or other git tools are expressed clearly in the UI. This can be challenging because Collaborate simplifies a lot of the git actions. 

Imagine, for example, that you have modified five files and now they’re ready to go to the server. Using the command-line, you locally commit two of the files. Then you switch to the Unity Editor to continue working, and publish the rest of the changes to the server through Collaborate’s simple UI.

The problem with this scenario is that the simple UI wouldn’t normally have a way to show local commits that have occurred. However, now the UI will display a message reminding you of the local changes and guide you towards the advanced view which more closely represents what was done via other tools:

Where we are with development

Over the last month, we’ve been focused on adding the base code to perform git operations between the Unity editor and the Collaborate service. This means that we can now execute git commands needed to power the simple UI, advanced UI and some history functionality via the Unity editor. It also sets us up for our current bucket of work – making the UI pretty. More specifically, over the next month we’ll be working on the following:

  1. Creating reusable building blocks for many of the UI components, such as common buttons, search functionality, file lists, etc. 
  2. Making server changes to support both new and old projects on the Services Dashboard. 

Since most of our work has been focused on the architecture and backend, we don’t have much UI to show yet. However, here’s a small preview of our work so far:

 

We are still on track to release a package in August that has feature parity with the existing Collaborate. Branching and some of the history functionality that is described above will come in future package updates shortly after the initial release.

How you can get involved

We want to thank everyone who has signed up for the Collaborate UI study and who have provided us with feedback on the forums. Your feedback has been instrumental in helping us shape Collaborate, and we would love more of it! For those of you interested in participating, you have a couple of options:

  1. If you want to discuss the designs mentioned here, head over to this forum post.
  2. Sign up for the Collaborate UI study and provide critical feedback on the designs.
  3. If you just want to provide general feedback on features that you’re interested in, you can post them on the forum. We are always monitoring and may reach out to you to set up a call to discuss your requests in more detail.

16 Comments

Subscribe to comments

leave_a_reply to Stacey HaffnerClick here to cancel reply.

You may use these HTML tags and attributes: <a href=""> <b> <code> <pre>

  1. I can’t wait to use this version. So much troubles encountered with Collaborate, I hope this will be the ultimate feature we are all waiting for! Seriously developing a game without having a strong and reliable version control solution is stressful. Collaborate is here to ease the process for git newbies like artist that push only binary files and do not have to merge them, and also to help users that are working at the same time on the same scene or asset to merge them correctly. ANd it is a great thing if you thought about advance users that already knows git, because Collaborate can make you feel limited. Would be cool if I can see modified lines directly in my Rider IDE that is aware of the git repo, making diffs and using git directly from my IDE or my favourite Git client (Git Kraken). Is there a way to integrate your smart merge for assets and scene into a classic git workflow ? Thanks, really my team and myself are praying everyday for this feature to come! Please do it! :)

  2. Thanks for the work on this. With all the bugs, freezes, etc that we’ve encountered when using Collaborate over the years, this is one of the features I’m most looking forward to (unless a complete terrain system overhaul is still in the works). That said, Collaborate has been working pretty decently over the past few months with only some inconveniences and no file losing bugs.

  3. This blog post did not elaborate on large files(those are usually binary too). Git has LFS, is there anything similar in collaborate, can anyone elaborate on the topic?

    1. Large files are currently supported with the current version of Collaborate and the new version will also utilize Git LFS.

  4. Much better. Current legacy UI for this is not good and frequently gets in the way, non stop. For example I may want to revert 10 files. It’s a nightmare taking 5 mins just to that when you have a huge commit to go.

    You can only revert one file then have to open up the drop down and scroll and repeat and click etc, horrible design, very bad.

    But the videos shown above seem to have addressed this so that’s a great bit of work done there. Good stuff.

  5. Amazing! Can’t wait to use it.

  6. Nice job!
    Also would be great to have feature to merge scenes and prefabs visually.

  7. Are there any plans for in-editor diffing and conflict handling? scripts can be viewed in IDE, but right now there’s a missing workflow for diffing YAML-based assets.

    1. Yes there is! We’re in early prototyping of a new tool that will replace YAML Merge and allow for much better in editor diffing / conflict handling of Unity assets.

      1. Cool! Looking forward to it

      2. Will this be available for everyone, or just for those using collaborate?

        I am more concerned with the replacement to the current YAML merge tool, the current tool is not limited to collaborate use cases, and if it gets replaced ,i wonder if the replacement will still be usable outside collaborate.

        1. Stacey Haffner

          July 8, 2019 at 5:58 pm

          The plan is to have this work for everyone – regardless of the VCS you chose.

  8. Nice to see the pain points of the first version of Collaborate being addressed. Looking forward to using it.

  9. Do you have low bandwidth usage in mind as well? I’m currently working together with someone who has a very unstable and slow internet connection. He has major problems even with a simple git pull and can only do it with bought data volume or in certain times of the day.

    1. We do have a feature for Collaborate coming up that should help with low bandwidth/distributed teams and will be sharing details on it in the next post.

      1. Good to hear, definitely excited for it :)