Note: The really interesting bit is at the end of the article. So if you don't stick around for the whole journey, at least skip to the end! That being said, this is all useful stuff so you should, yeknow, stick around...
Unity is a pretty solid game engine that at least a few people are using, but it doesn't play very nicely with Git - my preferred source control mechanism - by default. While I can't speak for everyone, there are three major issues I've always wanted to address:
- The default setup all but guarantees that having two different users push the same scene, prefab, ScriptableObject, etc will render it totally unusable and force you to rollback (quite painfully) to an old version.
- Git, by design, doesn't play very nicely with binary data. It's diffing tool doesn't support binary files and, as such, it stores the entirety of each revision of binary files for every commit. As a lot of game content is stored as binary data - FBX files, textures, etc - this presents a bit of a problem for storage.
- After playing with Unity Collaborate a bit, it became extremely evident that the UI/UX for interaction between traditional source control and the Unity editor could be drastically improved.
In the past we've sort of just worked around these issues, but I spent a fair amount of time recently figuring out how to address all of these issues more directly. With some additional configuration steps and a little bit of editor scripting, all of these issues can be addressed quite nicely. Continue reading "Extending Unity for Git (and maybe other source control?)"