I need to share my project with collaborators. After gathering as much information as I could, I saw that the two main tools for that are Git and Perforce. Which one do you think is the best for working with a small team on an UE4 project?
The main problem I see with Git is about binary files - which are… necessary while making a videogame. I understand that you can use LFS, but it doesn’t seem a great way of dealing with the problem… am I wrong?
From what i saw, Perforce is free for up to 5 users… but how much does the server that hosts your project cost? Or is it included for free in the Helix package?
I have a 17GB project (by getting rid of saves and some currently unused assets I could get it to 10GB or so… but we don’t want to limit the growth for our game).
Can you elaborate? I tried Git LFS and it turned into a complete hell. For example - I created a few large binary assets (imported a bunch of high resolutions assets to try in the project), made a commit, then removed them, and made another commit. It was about 4GB of data. Of course, once they were removed they were no longer needed. The way Git works is not an issue with source code, since file sizes are negligible. But in terms of binary assets, just a couple days of several artists working can easily generate couple of dozen gigabytes of data.
That’s where the big issue came. Git LFS has some prune command, which removes outdated LFS files, but they are based on a very convoluted set of confusing and borderline insane rules. So there was just no way to prune the old content. In less than a week we have reached limit of out paid Git repository storage with absolutely no way to prune old LFS assets to make a space for new ones.
The literally only way to solve that issue was to remove git completely, and reinitialize the new git repo from scratch. Of course that has lead to loss of all previous VC data, so it completely defeats the point of having version control system in the first place.
I just don’t understand LFS. To me, it seems like if you add any large binary file, at any point in time, you are stuck with it forever, even if it’s way outdated and you will never need it again. So if you are working on a long term game project, which is actually serious AAA production, and contains serious high end assets, not some gimpy lowpoly indie stuff, it’s easy to approach a repository of over a terabyte in size in just a couple of months, assuming that there will be lots of iteration on the art assets. And hosting for repos of that size is nowhere near affordable, nor makes any sense.
Use bitbucket or gitlab if you want to prune LFS files. Eternal LFS it’s just a GitHub issue, and it’s definitely not a problem for AAA projects Because: 1. devops can prune files if necessary. 2. space is not the issue, you can use hosted bitbucket solution in case of terrabytes of data.
I actually hosted repo on my own server, yet I still had no control over it. There was some ridiculous rule where the files would not be pruned if they were not older than X days, and there was some override that was supposed to change that but it never worked. So I’d like to know some more precise details than just “Use Bitbucket”. Like some sort of guide how to deal with Unreal + Git LFS and substantial amount of large size assets. Because you are really the first UE4 user I have ever seen who called Git LFS great for use with UE4. So if you have it figure out, I’d really love to know. SVN is a bit outdated and perforce has obscure licensing policies. Git seems therefore the best option on a paper, just not in reality
Yes, so this is exactly why majority of people hate Git for games, and almost no one recommends it. Whenever you ask specific questions, such as having more control over the binary asset history and repo size, you never actually get a clear, detailed answer from someone who knows what they talk about. You rarely get any answer at all, and if you get one, its the “Just buy more disk space” kind of answer.
I am not even going to go into debunking that, because that answer just ridicules itself. But it also serves as a great answer for the OP’s Git vs Perforce question. Definitely Perforce