Collaboration with Unity3D
Unity3D is an amazing tool. It was named the Best Game Engine by Game Developer Magazine. This engine is as close to perfect as you can get, especially if you're on a shoestring budget, as is the case with the video game startup I'm involved with. There is a big problem with the engine, though, and it's a problem that most people don't really stop and think about.
Unity3D does not support the use of a revision control system.
That's right. Stop and ponder that for a moment: a software development tool does not support revision control. And the worst part? It's an intentional decision by Unity Tech, presumably made to drive up sales of their Pro license (currently, $1,500 USD).
Currently, Unity3D is the ideal choice if you don't want to work with any other developers. In other words, if you're building a very small project, use Unity3D. Good luck with a large project though, because the free version of Unity3D doesn't give you any way to collaborate with other developers. There have been some very kludgy workarounds suggested in the forums, but they are just that: workarounds.
The probem is that Unity3D stores project metadata and scene/level files as binary files. You can check these files into version control, but you cannot merge them. That means that developers can never work on the same scenes at the same time. In addition, if you create new asset connections in your project, that metadata will likely be broken for the other developer involved because, again, that metadata is an unmergable binary file.
There's a few things that I don't understand here:
- Why would UT create a proprietary data format for storing this information when there are LOADS of other formats that could have done the trick? It's much more effort to build such a thing, and it prevents developers from using the tools that they are used to.
- Why would UT, being comprised of lots of seemingly great engineers, actively prevent users of their software from following good engineering practices? Version control is not just for professional projects: it's for any project where you like to be able to revert to a given point in time for regression testing, observing the evolution of your project, or many other things that are widely documented.
I noticed that UT quietly introduced a new license add on called the "Team License". I thought that UT had finally warmed up to the idea of making version control integration more widely available. According to Beth Thomas, that is not the case.
From Cameron Eagans on [date unknown]
NOTE: The text of this first email is from memory, since UT's contact form doesn't send me a copy
Hi there! The new 3.5 beta is awesome :) I saw that there was a new team license being offered as part of the 3.5 release. I was wondering if you could give me some more information about that license and what it included. Does it include support for using external version control systems? If so, will it work with the free version of Unity? Thanks!
To Cameron Eagans From Beth Thomas on 1/3/12
Hi Cameron, Thanks for the mail :-) Glad to hear that you are enjoying the 3.5 beta. As of right now, the team license will include our current Asset Server and the new Cache server to speed up asset importing and switching platforms. The price is yet to be determined. As far as version control is concerned, at this time it is not going to be extended to the free version of Unity. However, the Pro version of Unity will have version control support so you could use a free version control like Subversion and not have to spend the extra $500 for asset server. Please let me know further questions. Thank you! Beth Thomas Account Executive - Midwest and Canada Unity Technologies 50 Osgood Place, Ste 220 San Francisco, CA 94133 415.820.4285 Office BT.unity3d Skype www.unity3d.com*
To Beth Thomas from Cameron Eagans on 1/3/12
Hi Beth, Thanks for the info! It seems sort of unreasonable that something so ingrained in the software engineering process would be restricted to people that can afford a pro license. I'd probably never buy Asset Server anyway, but I don't understand why UT is so reluctant to provide such an important workflow component to non-Pro users. I don't mind paying for software, but as I said, I cannot justify paying $2000 just for the ability to use version control systems. Using version control doesn't mean that I'm a "professional" user. Usually, the projects that I work on are one or two-person projects, but it's impossible to collaborate on anything because there's no reasonable way to move the project assets between project participants. We're in the process of starting a company, and we're looking into a round of VC funding, but that's still a long way out. We simply cannot afford the Pro license, but we need a way to collaborate on our first couple projects and Unity won't allow us to do that. I'm not alone in this sentiment: http://feedback.unity3d.com/forums/15792-unity/suggestions/564207-licensing-vcs-support-for-everyone I understand that it's a business/marketing decision made as an incentive for more people to buy Pro, but using version control is an absolutely non-negotiable component of software engineering for many teams. As I said, we're trying to build a game development company. We want to standardize on an engine early on: one that will grow with us. But we have to start small, and Unity's lack of version control support in the free version doesn't allow us to do so. We have five people that we need to support immediately. If we choose Unity for our engine, that sets our startup costs at a MINIMUM of $7500. Just for the ability to use version control. We don't need nor want any of the other features in Pro at this time. If you're concerned about income related to the VCS feature, why not supply it as an "add-on" for $50/head. That's much more reasonable for small shops, and I imagine that you'll get a lot of buy-in on that approach. I'm not suggesting that you give away all the important features in pro. We just need an alternative, along with at least 560 other people on the Feedback site. I'll conclude with this: I'd really like to see some way for small shops to effectively use your product to START a company. Requiring Pro for something as trivial as version control support is a non-starter for us and many others. We want to use Unity, but won't be able to if this feature is not available in a reasonable licensing scheme. More importantly, we want to grow our business around Unity, but won't be able to if this feature is not available in a reasonable licensing scheme. I believe that by making the decision to only give VCS support to pro users, you're missing out on a huge market: the game company startup market. I hope to hear from you (or anyone else at UT) regarding this matter soon. Thanks, -- Cameron Eagans
To Cameron Eagans from Beth Thomas on 1/4/12
Hi Cameron, This has been a topic of discussion internally for awhile now and as of right now it has been decided that only Pro users will have access to external version control. I would be more than happy to set you and your team up with trial Pro keys in an effort to create a prototype to secure funding. Please let me know. Thank you! Beth Thomas Account Executive - Midwest and Canada Unity Technologies 50 Osgood Place, Ste 220 San Francisco, CA 94133 415.820.4285 Office BT.unity3d Skype www.unity3d.com*
To Beth Thomas from Cameron Eagans on 1/4/12
I hate to pry, but could you give more detail on why that decision was made? I don't understand why UT, being comprised of lots of great engineers, would make such a decision: it just doesn't make any sense. I'd be interested in being provide Pro trial keys, but it really depends on how long the trial keys would be valid for: we'd need to complete a prototype, and that could potentially take a while. We aren't even sure that we want to secure funding: it'd be ideal to avoid that process and be self funded, but that will not be possible with Unity. Again, what I'd really like is a way to purchase version control support for the free version of Unity. -- Cameron Eagans
To Cameron Eagans from Beth Thomas on 1/4/12
Hi Cameron, It was a business decision. Maybe this will change with new versions? I can provide 60 day trials keys of the full suite of Pro products when the team is ready to start working. Please let me know. Thanks! Beth Thomas Account Executive - Midwest and Canada Unity Technologies 50 Osgood Place, Ste 220 San Francisco, CA 94133 415.820.4285 Office BT.unity3d Skype www.unity3d.com*
So, it looks like I have the following options for my video game startup:
1) Take the 60 day pro trial for our entire team, try to build a solid prototype of some game, and try to raise a round of funding. If we don't get funding, we have a pile of source that we cannot use until we buy pro. 2) Come up with our own way to use a version control system (which will be problematic: the options here are to find a way to coordinate working with the binary assets (which is next to impossible) or find a way to deconstruct a scene into code and vise-versa (which is also likely next to impossible)); or 3) Find another engine that cares about good engineering practices
Again, the fact that a developer tool does not support the use of version control is completely ridiculous.
If you're in the same position that I am, and you really want to see UT make an intelligent decision, please take a moment to do the following things:
- Leave a comment on this post talking about your situation. I'll be informing Unity Tech about this post, and hopefully, somebody with some decision making power will read this. The more input, the better.
- Go put your votes on the Version Control for Everybody feature request; and finally
- Get in touch with Unity Tech and let them know how you feel.
If enough people show that they care about this issue in a very loud way, hopefully Unity will finally listen.
Note to Unity Tech staff: If you're reading this, and you'd like to discuss this, feel free to leave a comment. If you contact me and can verify your identity, I'll make sure your comment is noticed by everyone else reading this post.