Unity3D for teams of 6 people or more
I've done this rant live to various people, but I thought it was time to write it down.
First of all: I like Unity3D. I sincerely think Unity3D existing makes the games industry a better place.
But, basically, I don't see how it can be used for efficient, professional game development, with teams of 6 people or more all actually using Unity. I'm sure people are doing this, but I'd like to know how.
This rant is based on my experiences on a project that used Unity 3.5. Maybe Unity 4 is better. It was our first Unity3D project, but to be honest we spoke to a lot of other Unity developers and if there were any major rookie mistakes we made I don't know what they are.
Final caveat: It's been a while since I've gotten my hands dirty on this, plus I wasn't the one who set up the project, so I might get some details wrong.
We used Unity3D with Perforce, with a team of 6 to 8 people, most of whom had to work within Unity itself, as opposed to just making bitmaps or something. The daily workflow for pretty much everyone on the team was:
- Check out everything in the Unity folder in Perforce. Not 'get latest'. Check out.
- Open Unity3D.
- Do your work and test it.
- Save, then quit Unity3D. You must do this.
- Go into Perforce, reverse unchanged files, then try and guess if any files, particularly all of those tiny .meta files, have been added or removed and tell Perforce about those.
- Repeat.
Unless you want to change a scene, then you must yell through the office that you're going to change a scene, lock the scene file, then do all of the above. So this was pretty much like not having a repository. We had things set up so scenes and other data are text files, but to be honest, just because it's now YAML doesn't mean you can just merge scenes - all those internal references don't necessarily match up.
That's a pretty sucky workflow, and it took us a while to get it through everyone's heads that they really, really had to do all this. I personally suspect - I never investigated this - that we had to quit Unity because of one plugin that saves important files on exit. But to be honest if that's the case I still see that as a design flaw in Unity.
So, internet: what did we do wrong? What are your experiences with Unity3D and teams of more than a couple of people? We did not use the Team License - could that have solved our problems, and if so how?