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.
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?