Heya folks,
I know this is a topic discussed to death and I already searched and looked up many articles, post mortems, blog entries and whatnot, but I still feel somewhat unsatisfied with the results. Ultimately I’m looking for answers for these question:
- How do you work collectively within Unity?
- How to version control assets (2D Sprites, 3D models, Audio)?
- How do you work on multiplatform projects (PC and Consoles)?
I’ll go into detail with each question. Let’s start with the first one.
1) How do you work collectively within Unity?
Now a little bit of background to my past workflow with Unity and our team. Almost two weeks ago we released a game which was in development for over 2 years. Within these two years we worked with Unity 4.X to Unity 5.4.5p3, which was the Unity version used to ship the game. Now as for the coders it was absolutely fine for us to throw our scripts into Git/Bitbucket and work with source control. But when it come down to design levels, I had to copy my Unity Project, save it to USB and give it to our leveldesigner, who designed a scene and put the scene to our dropbox. I took the scene, included it again in my project. Rinse and repeat.
This was and is, frankly put, a terrible workflow. But in a way it was safe. What I mean is that with this workflow we never had any problems with our scene-files. In the beginning we tried to source control the very scene-files, but that generated lots of problems, so we ditched that.
My ideal workflow-wish would be:
- there is only one Unity Project, no bullshit with handing projects via USB or something like that
- everyone of the team has access to it
- everyone can add assets to the project and others can update their project-instance to get/download the new files
- several people can work on the same scene
Now I know there is Unity Collaborate, but from what I heard it is pretty buggy and I’m sick of working with buggy stuff…what would be possible alternatives and how would you go about setting them up? For example when we do use git/bitbucket, is it wise to put the whole Unity Project into source control? Wouldn’t that burst the storage limit of the repository pretty fast?
2) How to version control assets?
Now as for our assets, we didn’t really version control them. It was more like backing them up, which is probably a way of version controlling…an ancient way. The thing is, what gets versioned controlled and what not?
Example:
The artist makes a source sprite in Photoshop which is set to 4096*4096. This will be the Raw PSD file with all the layers needed to work on, which might get big in filesize, depending on all the information stored into the PSD. Then it gets scaled down to let’s say 120x210 and exported as PNG and is about 100kb big. This PNG will be added to our Assets-Folder in Unity.
Which file should be version controlled? I’d say the Raw PSD since it’s the file which will get changed, but if we’ll version controll ALL of our big PSD files we’ll reach the limit of our repository storage pretty fast, and we also got all the other necessary assets. Should there be a dedicated repository only for assets or even only for texture assets? What are your best practices?
3) How do you work on multiplatform projects (PC and consoles) ?
If some of you folks have any experience with multiplatform development with Unity, especially when it comes down to working on games which have been released to PC and different consoles, I’d love to hear how your Unity setup looks like. What I mean: do you have only one Unity Project for all platforms or do you have a Unity Project for each platform? Also, do you have the same Unity Editor for the project or projects or do you have a Unity Editor for each platform, since I was told that you need a specific Unity License and a specific Unity Editor for development with the Nintendo Switch, for example. I don’t know if that’s still the case for all the current consoles.
And how do you keep version controlling the project(s) - each platform one repository?
I hope you folks can help me out here, since we’d like to have at least a better workflow for the next project