Announcing Cahoots for Unity!

Cahoots

Today ClifTek is proud to officially launch its latest product, Cahoots. Cahoots is an advanced scene management and collaboration tool for use with the Unity game engine. Cahoots allows you to collaborate more effectively with the other members of your development team to speed up and simplify developing games in Unity. To fully understand what Cahoots can do for you we need to take a long at the problems that it addresses.

 

Why Did we Develop Cahoots?

Up till now Unity has had a longstanding issue when it comes to collaboration. Unity has always been a great tool for the ‘indie’ dev – that is to say a solo developer. However when it comes to teams Unity suddenly becomes more difficult to deal with. Collaborating on scenes has always been particularly painful. The bigger your team the more you will have felt these issues.

Working on the Same Scene

In theory it should be possible to work on the same scene. After all, .unity scene files are essentially just text-based xml files (yaml files actually). In practice, as experienced Unity developers will know, things aren’t that simple. Whilst you can merge 2 scene files just fine, it is far too easy for the resulting merged scene to be corrupted in the process. Sometimes this is obvious and will lead to clear bugs in the Unity editor such as a scene refusing to load or pink materials etc. but the worst scenario is when it appears everything is ok only for subtle bugs to appear over time. Unity have attempted to improve scene merging recently but our personal experience is that you can still run in to problems – and when they happen they can be quite nasty to deal with.

For this reason it has been common practice to treat Unity scene files as binary assets in your source control system – that is, make sure that they can’t be merged and any resolutions are resolved by picking one version or another when a conflict occurs. This is the policy that has been put in place at every company I have worked at. Unfortunately this means that you have to restrict your developers to only working on one scene at a time. The bigger the levels you are working on the more likely and more frequently you will have your developers blocked from working.

Blocked Developers

By restricting your developers to using a single scene at a time there are inevitably going to be times when your developers become blocked and can’t do any meaningful work. This might be just about bearable if you are a team of only 2 or maybe 3, but things quickly start to get worse from there. You pay your developers well and you don’t want to have them sitting around in a queue waiting for access to your scenes. It is money thrown down the drain and impacts on the morale of your team. Even in this situation you are not fully protected from the dangers.

Scene Merge

It is all too easy for 2 developers to accidentally work on the same scene unless you have a software solution for controlling access to them. You might think that this can be controlled by making sure your team conform to some agreed system but without a software-based solution to enforce this, something that is integrated in to Unity itself, these solutions fall down in practice.

Imagine the situation where a developer has checked to see whether they can modify a scene and has been given the ok by their team lead or product manager. If they haven’t got the changes from the last developer who was working on it then they’re going to be heading for the dreaded scene merge. This normally means the 2 developers who have made conflicting changes dropping tools to discuss how to solve the problem. It often also means that senior engineers are asked to get involved to help solve the issue. Sometimes the solution means the developer who has done the least work redoing their work, sometimes it means the developer who didn’t push their changes or didn’t pull the right changes redoing their work as it is “their fault”. Often developers will try and manually merge their work by taking a copy of their file, reverting to their colleagues version and then copy/pasting their work back in to the scene and fixing up references. This is a process that can take anywhere between an hour or so if you’re lucky to the rest of your day.

Whatever way your team decides to resolve these issues the important thing is that precious development time has been wasted. It’s bad for productivity, bad for morale and a waste of time and money for the studio.

And this is where Cahoots comes in.

 

How Cahoots Solves the Problems

Cahoots solves all of the issues mentioned above. It provides a custom solution that helps you divide up your scenes in to multiple layers and manage those layers to make sure developers do not conflict with each other’s work. It does all of this whilst providing a seamless integration with Unity, with minimal changes to your workflow.

Collaborative Level Editing

Cahoots provides a truly collaborative level editing experience. It does this by introducing the concept of a level. A level is comprised of a number of layers. A layer is just a logical division of a layer so, for example, you could have different layers for geometry, vfx, audio, ui, gameplay, lighting etc. It is up to you to decide on the sufficient granularity of your layers. Cahoots intelligently manages these layers. It allows you to load up and view all constituent parts of a level as you would a native Unity scene. However it controls access to the layers by introducing an exclusive checkout system. This means that it is impossible for team members to work on parts of a level that they are not supposed to.

Exclusive Checkout System

All layers of a level in Cahoots must be checked out by a team member before they can be worked on. The act of checking out a layer locks it from use by other team members (although they can still view it as normal in the level as they would expect). By introducing this system we prohibit developers from working on the same part of a level at any one time (and by part I don’t just mean geometrically – this could be a gameplay layer or a UI layer or a vfx layer or whatever type of layer you have created). With sufficiently granular layers for your level, it should be rare that you hit a scenario where your developers are blocked and waiting to access a layer.

Source Control Synchronisation

The thing that really sets Cahoots apart is its ability to work with your source control system (currently Git is supported due to its widespread use, but support for more source control systems are actively being worked on). This means that we can solve the problem of 2 developers finding themselves in a situation where they have both worked on a scene. Even with the exclusive checkout system this scenario can still occur if a team member checks out a layer to work on when they do not have the latest changes (e.g. they have forgotten to pull in the latest changes from your source control repository). The synchronization with source control means that developers are blocked from checking out a layer and modifying it until they have acquired the latest changes. This completely eliminates the dreaded scene merge!

 

A Demo

The following video provides an overview of the previous points as well as a demonstration of Cahoots being used in Unity.

 

Licenses

Cahoots is available now in 3 flavours:

Standard – $60

  • Single-seat license. Comes with full and documented source code. This is the license that will be available (very soon!) through the Unity Asset Store.

Professional – $120

  • Single-seat license. Includes access to private git repository for Cahoots, which means access to betas and updates weeks before they hit the Unity Asset Store. It is recommended that your lead programmer has a professional license.

Site – $1200

  • Multi-seat license. Same benefits as a professional license but with an unlimited number of seats for a studio.

Cahoots is currently under review in the Unity Asset Store and will be available (in the form of the standard license) in the coming days.

For more information on the different licenses, or to purchase one, please view the official Cahoots page.

 

More Information

You can view documentation for Cahoots here, which includes a fully documented API and a user manual.

A number of videos are provided on our YouTube channel, with more videos coming very soon.

Last but not least, if you have any questions, comments suggestions feedback or would like to contact for any other reason then you can do that here.