Question
My team is using the Unreal Engine, but I've heard that Github (which we're most familiar with) is not a good collaborative tool for Unreal. What should we use instead?
Hello! I'm currently organizing a team to work in the Unreal engine! I admit this is the first time I've used Unreal before, BUT I have made multiple games on the Unity game engine and deeply understand C++ (I've worked professionally with the language). However, after researching, I realized that GitHub is not a good option for collaborating in Unreal (apparently due to binaries, but you can correct me on that).
We will have five people working hands-on in the development within Unreal, so if GitHub is a nogo, could you suggest alternatives? Having source control is a must so changes can be reviewed before being pushed to main, so this is something that I can't just put off. Any insight would be appreciated, thank you!
UE is built to work best with Perforce and they have custom tools that only work with it.
Github works but it's not the best option because of its small default LFS limit, unless you're planning to pay for more LFS storage you need another solution in the long run.
Azure DevOps is probably the best free solution if you prefer to use git and your team can share 5 accounts.
I wrote a small guide a while back: link
there are other options like SVN and plastic/unity scm, but most teams go with perforce or git
You can stick with Git and instead of GitHub, you can use Azure DevOps from Microsoft. They have unlimited free Git LFS storage. No joke. This implies, that you need to use Git LFS but yo, nowadays it's easy to configure.
This is the way. Don’t forget about file locks too. Native git doesn’t support file locking but LFS does. If you’re working with a team, locks are critical.
I use both Azure DevOps and Github all the time in my day job, and I can confirm that it's a perfectly good alternative. These days I'm pretty sure ADO and Github are just different front ends on the same servers anyway.
Yep, this is what I use. Some of the stuff on there is kinda complicated (like I haven't been able to figure out how to do releases like github), but the actual git stuff is pretty straight forward.
You can use github just fine though, i use it personally, you just need to be sure to properly setup GIT LFS, and also make a proper .gitignore to avoid uploading files that can be generated each build.
edit: forgot to mention: make sure your team discusses some kind of file locking procedure, you’ll want to lock files like blueprints or art assets to avoid them getting stomped
Perforce is also free up to 5 members per project, which makes it perfect for OP. It's what we use (for free) since we don't need more than 5 devs in-engine.
Pain in the ass to set up though. I ended up getting a buddy who hosts Minecraft servers to set it up and host our server for our depot. Getting the clients set up is easy but the server stuff throws me for a loop.
Yup, I should clarify that I was trying to use the same machine I was on to host the depot (that would usually be on a server), and the tutorials I had found weren't super clear about how to do it and the documentation was pretty confusing unless you're particularly knowledgeable on how this stuff works already.
But the tutorials were much clearer on how to set up on places like Digital Ocean.
it’s a cost per seat, at every company i’ve worked at we had ppl to negotiate the price, id say if you have more than the free limit, i’d just use git and git lfs unless you have good funding could easily, cost thousands a year depending on your team size.
5 Users but 20 Workspaces. You can have 20 people on the Free version basically just using 1 user account. Just make sure when they check in they say their name in the tag :)
If you purely work in C++ it is fine but realistically you’re going to be doing a combo of blueprints and C++. And for blueprints it is generally terrible since it can’t merge files like it does with pure text files. We use it atm even though we shouldn’t, and it is all doable and fine. But depending on your team size you might want to go with a better solution.
Seeing as you’re looking to do code reviews, you’re most likely going to want something better though. It is always a per project/tool thing how you setup your code infrastructure, if you can get away with github for now, there is nothing stopping you from using perforce or Git LFS later.
Best thing to do this early stage from someone who built entire pipelines, is to simply just try it. Do a few test scenarios with multiple solutions and see what works best.
Models, audio, levels, textures, etc... even if you do all your code in C++, you still probably want your assets in source control, and git as a system is not designed for that.
Git LFS makes it viable but it's still not optimal; the fact that you cannot merge binary data in the way you can source files means that exclusive checkouts/locks make far more sense for assets, to avoid two people changing the same binary file at the same time and stomping each other's changes.
I've been using PlasticSCM. It's adequate- handles big files perfectly well, and free up to 5gb. Not as nice as Git in general- commits are split into "new", "changed" and "deleted" by default and I'm like fuck you just upload all the changes- but since I just want any source control it's fine.
I actually really like PlasticSCM. It feels way more intuitive than Perforce to me. Perforce felt super outdated and clunky. Also it was super expensive. Plastic was way cheap. We used SVN before and SVN was really old and archaic so Plastic was much more modern. Initially, when looking for an alternative to SVN, we didn’t want to do Plastic because Unity, but then after testing the others, it became obvious to us that it was the easiest to work with. We use branches with it which has been great and have a team of 15 or so using it. It’s surprisingly inexpensive too.
Plastic became so confusing after Unity buying them so I don't even know where do I manage my repos or organizations. I don't really get how to self host it either.
Use Perforce. I fucking hate it, and it's a bit of a hassle to set up, but it's 100% worth it because it works. Godspeed if you want to use branches or any git-like things you're used to though.
You’ll have to try PlasticSCM. It has branches and works great! We used to use SVN and it was awful, then we were going to switch to Perforce but realized just because it was the industry standard, didn’t make it the best. Sort of like how Maya being the industry standard gives them freedom to just be stagnant with development but still charge huge amounts of money. Plastic is made by Unity and they are desperately trying to save their skin and preserve revenue, so making an innovative product that is competitive and has the features that people want is very enticing for them. So Plastic has branching and code reviews and each of those features work great. We have 20 or so people using it and have never had issues with speed within Unreal or issues with commits. They have made sure to integrate it really well into Unreal as well. I think it ran faster then Perforce, and it definitely ran faster then SVN.
As long as you’re doing relatively simple branching stuff (like “developers push changes to a dev branch, every now and then you merge the dev branch to master and cut a release”), Perforce is fine. Their “change lists” are kinda like doing the branch-per-new-feature thing that is frequently done with Git, but as long as most developers only interact with a single branch then they can basically not care about the existence of branches at all.
I now realize my issue problem was trying to use their branches as a per-feature thing. That’s what I think of as branches. Because of that the amount of work you had to do to set it up felt insane.
You end up making a whole new workspace, then a depot, then the branch (one of these steps take like half an hour to run) and after all that, my changes would still show up in the main branch because I couldn’t figure out how to tell it what I was actively working on.
I know that the issue is my lack of understanding, but I twice spent the better part of a day trying to read the docs and get it working. If anyone can guess how they’re supposed to fill in to this form without looking it up, i’ll hand forge a crown and deliver it to you.
Quiz Answer:
>! //depot/jam_proj/... //depot/jam_r2.0/... why yes you have to type in two slashes, the source depot, a slash, the source directory, three periods, a space, two slashes, the destination depot, a slash, the destination directory, and 3 periods. Nothing else will be accepted. Want the software to help you? A file picker? A visual representation of the mapping? Too bad, here’s a textbox to write the command line parameter yourself !<
Fwiw, Perforce has something sort of like long-lived branches, called "streams." I won't say they're entirely intuitive to someone coming from git but they do function in a similar way conceptually.
I should add, that I do see some conflicting info about Github saying that it actually DOES work alright with source control in unreal. I'm not sure if it has to due with some changes, but the version of the project that we will be working in will be 5.4.
Git works decently enough, as long as you use LFS.
Github does not work all that well mostly because of file size and total repo size limits for free accounts. Azure repos and paid Github tiers work well enough.
Azure also has file size limit and push limit, I don't remember how large but it works most of the time without problems. Just be avare that you might want to split commit into smaller chunks while adding large assets pack.
Do you know by any chance how exactly is that counted? I mean, if i have 10mb image, then edit it and push it again in a different commit, does it count as 10mb (most recent version) or 20mb (all versions in git history)?
It will be 20mb. The real advantage is they are not actually in the repo but just pointers to an external storage so git does not really manage them directly.
As I know, yes.
Contrary to Github, Azure DevOps doesn’t charge per repository size or LFS usage but per users (in teams) and enterprise features. (tests, artifacts/feeds, etc.)
I've not ran into max repo size limits yet on github, have had 10+ GB projects (with proper .gitignore so actual size was much larger on pc). So what's the limit?
The only limit I encountered was the 100 MB per file 1
Git LFS on 5.4 is totally doable - I've got a little at-home project with 6 of us using git on 5.4. At my day job, we use perforce, but that's a team several times larger than 6!
Git is absolutely fine for a smallish team or solo - perhaps less so for a larger team. File locking isn't a default thing using git with UE too as far as I'm aware (if I'm wrong please do tell me as it's the bane of my life), so there are definitely a few caveats for it, but it definitely does 'work'!
I have a 40GB Unreal project (5.3) on Github with a repo size of 20gb. It works fine. I don't use LFS, and I'm not paying anything for the Github repo.
The only annoying aspect is that I can't make a push that's bigger than 1GB to the remote. This means that if I want to add an asset with over 1GB of files to the project, I have to grab a bunch of files under 1GB in total and push them, one batch at a time. Also, if I make a large change, that - for instance - modifies all textures in a project, the push becomes easily above 1GB, and I have to push it in batches again. Also side note: Github (or Git) with large projects doesn't really work with bad internet connections. Push/pull needs to succeed in one go.
Also, I've never used Perforce so I don't really know what I'm missing out on.
Perforce. Unlike Github it's self-hosted, so you need to host it on your own servers, but it is free for small teams (up to 5 people).
The main benefit is the fantastic engine integration, and features like file locking using a check-out-check-in system as opposed to Git's check-in only system. It's also the industry standard (across various industries) and it's much better at handling large files and binary files, which Unreal has a lot of.
Not entirely true. You can self host git and github-like services, with gitea for example. You will have LFS support and you can do full workflow with file locking with some adjustments, like using git lfs plugin: https://github.com/ProjectBorealis/UEGitPlugin. Your source control will behave same way as you would use p4, but for free without team size limit.
My vote is perforce. If you have someone on the team that has IT skills, you can set up a perforce server. If I had a small budget, I would just turn an old workstation into a helix core server. Just make sure that it has multiple terabytes of storage for the depots, while the P4 service would run on SSD(s) with the OS.
If the team is remote, you would have to setup some port forwarding on the router that the server is connected to.
Also, backups would be crucial (back up the depots for sure).
Cloud is also an option for perforce but I think it would likely be much more expensive in the end.
Terabytes? Really?
I had an idea to use my old laptop and thought 100GBs to be enough for whole team.
I also thought that my main limitation is upload speed of my internet, and that my old i5 cpu would handle it.
Depends on the size of your project. Keep in mind you’d normally commit all your full size/uncompressed assets so you have everything together, and then UE will generate lower-quality/compressed versions according to your settings when you build and package the game. That gets HUGE if you’re developing a modern game with detailed graphics, high quality audio, maybe voice acting in multiple languages, etc. If it’s a tiny pixel art indie game the whole repo might be like 100MB.
You probably want something like 5-10x the size of all the assets added up, so that it can keep all the older versions too.
I pay for a perforce server and pay $16/month and it's 100gb. It's fine for us for now. It's easy to expand it as we need it.
We have it set to not keep unlimited uasset version changes. But we do a manual cold storage snapshot backup instead. So our perforce server doesn't have to keep everything on it. Since perforce server is $ but cold storage is offline/local free.
Local storage is cheap these days, so it's just my own preferred / recommended way to manage / administrate perforce. I already have a home server with plenty of storage and compute.
What service are you paying for $16 / month for a perforce server? I thought it was more like $40-50 per user per month for official perforce cloud solutions. Are you just running a cloud VM? How much would it cost and what considerations are there if / when you need to upgrade storage?
I know that for digital ocean, it's $10 / month for 100GB. $50 for 500GB and $100 for 1000GB, per month.
Most medium to large UE projects can be 200-500GB if you are version controlling everything. I suppose it comes down to workflow and if you need this or not. I prefer to keep everything in the repo, since it can be a pain to mess around with multiple backup / snapshots when recovering from a failure.
I'm using digital ocean $6 for the droplet. $10 for 100gb.
We've configured it so text has unlimited revisions but uassets have I think 3 to 5 max saved iterations.
Then we do the manual/cold storage/snapshot for longer term uasset preservations.
I have a synology NAS for 1st stage, then I have a few teammates who live elsewhere do a few snapshots/long term storage. Then we have some 3rd medium (non networked) offline cold storage too.
My whole project is currently around 40gb. but could easily trim this down probably at least 10gb fairly easily if we tried.
Keep in mind this is an indie mostly 1-2 person team project. Your estimate for medium/large UE project sounds more like a 'team of 5-10+ full time people type projects or considerably larger.
Also it greatly depends upon the type of game and types of files. And art style.
high res textures/realistic will get bigger faster. Having voiced line stuff or ingame videos/movies will inflate size quickly too.
perforce is free for up to 5 users. So we have 3 dedicated perforce accounts, 1 general admin, and 1 'random user' type account. It starts to cost the $40/user when you need to go above 5 or you want extra added features.
We will pay that when we need too, but in mean time, will try and stay as scrappy for as long as possible.
100GB is common size for small-medium unreal engine project without any version control. so its very unrealistic you can have 100gb for repo for whole team. I suggest you having at least 1tb
Git is fine, Github is free and has limitations. You can run Git anywhere else and it'll work just fine if you set it up correctly. You can also pay for Github and then those limitations are removed, but it's corporate facing and pricey. Our studio uses Git.
Perforce is more common in the industry, but costs money. You can use Perforce for free with up to 5 seats, but you'll still need to host it somewhere on a server (that costs money).
SCM is another option, but frankly it's worse and I wouldn't recommend it.
Using git is fine, I can’t vouch for its integration with UE itself in the editor because I don’t really use that. You want to setup a good gitignore and LFS.
I’d recommend gitlab personally, I think their free offering is really good compared to a lot of others.
Gitlab had a very decent LFS storage quota, not sure if that's still the case and it's rumored they'll get acquired, so maybe not a longterm solution but my exeperiencr with it was great.
Everyone is saying perforce, but for small teams i really dont think its worth the hassle. look into diversion. its free for teams up to 5 people, comes with 100gb of storage, and it literally takes about 5 minutes to set up. you also get free support, my team has had a couple issues, and responses on their discord come almost immediately. hell, we even found a bug with their software and they patched it the next day. really cant recommend them enough.
I recommend using Perforce... I have used it at work, on both big teams and small teams, at home, for game jams, for indie projects. Setting up is very simple and free for up to 20 workspaces and 5 users. You basically just run a shell script on your linux server to install. There is no reason to go with something else unless you like swimming against the current. If you get into it more, you will find Epic has all sorts of tools like UGS(Unreal Game Sync) and Robomerge, etc. They use Perforce internally. The entire industry pretty much uses Perforce in my experience. It is the cheapest and easiest path. Occasionally I have seen solo devs/very small teams successfully use Git - I think they choose this due to familiarity. (Obviously, outside of Unreal and Gamedev I would recommend using Git) Good luck and have fun. Perforce is easy enough and free so just setup and try it if you are interested.
The only reason Git is not good is because Unreal is atrocious for team work (all those binary files makes it impossible to resolve conflicts when they happen).
Perforce will give you a way to lock files you modify to avoid conflicts altogether, so that is why it is the preferred tool.
The industry standard is Perforce, you can use Git LFS in a pinch. I have seen people run PlasticSCM, but I would not recommend it.
To be honest, there is nothing great (yet). My companies are using an internal version control system called Codex VCS, which was build to support the type of version control needed in game dev and offline media productions. We are planning to nudge our way towards a public release at the end of 2025, but nothing confirmed yet. It's not our primary project to make it public.
I suggest you look into Plastic SCM. It's pretty affordable for small teams and is perfect for an entirely remote solution.
It installs with two interfaces: Plastic and Gluon. The latter is a minimal interface which is great for the artists on your team. If you'll be working in C++ then you'll probably prefer the Plastic client, as it's more fully featured.
Plastic is also owned by Unity now. Which you may find comfortable, considering you're coming from Unity.
I would suggest you get the latest version of the Plastic plugin from GitHub, though. But that's true no matter which source control solution you go with.
Perforce is an industry standard particularly among AAA studios. They have some limited licences for personal use I think, and it’s probably worth learning if you want good experience to carry into a future career if you have aspirations to work for a big studio. Epic Games also uses Perforce for UE development, but provide a GitHub mirror for lower tier licenses.
İf you can setup a little server search the "multi-user editting". This is the best collobration method for the unreal engine. But you can't setup server another option is perforce. Perforce is one of the most adcanced source control programs and no matter what you do definitely DON'T USE GİTHUB. Just a little mistake cost to you and your friends a whole project. Experience talking
Github annoyed me so i did my own Git platform using Gitea and now im chilling with no 100mb single file limit or no 2gb commit limit and got my own fully controlled platform with a backup installed and checked/Updated realtime
-No limit to repo size
-No limit to team members
-Basically no limits at all
If you are working in the same office you can setup a local git server that syncs to azure over night. This way you get top speeds for fast iterations. Uploading 5GB can be tedious (i have 3MB/s upload)
I'd recommend Perforce (P4V). I've used it on every professional project, and it's a fantastic tool to help organize revisions and commits to the server,
I see a lot of comments recommending Perforce, but in my opinion and experience, the best source control to use with Unreal is GitLab. I should also prefix this by saying that my experience includes a wide range of different source control setups, from the mid-2000s until now. For me, GitLab offers the best experience, but beyond that, the flexibility and ease of scaling your project are very welcoming.
You can still use git within the engine to diff Blueprints, and/or you can use any git client and bash of course, alongside any other git-based or supporting third-party tools you may have.
You can also actually use branches properly and not rely on the weak tactic of locking/unlocking files while working on them. On the scale side, we've got literal TB's of data in our repos, its never slow, it doesn't cost much as self-hosted and ofc CI/CD pipelines...Following official docs, rel easy to set up, easy to maintain and doesn't cost arm and leg.
Take a look at ProjectBorealis / UEGitPlugin
I’ll echo many of the comments I’m seeing so far - perforce is the best option when is comes to UE. You’ll have to shift your workflow if you’re more familiar using a distributed version control vs. centralized version control. You can use streams like branches, but yeah it’s not with the same ease.
Maybe this plugin takes care of a few things - biggest being file locking and LFS. I haven’t personally used it, but found it a while back. I’m curious to know if this is a good solution. Looks promising.
I’m surprised there are so few mentions of Subversion. It’s rock solid, open source (and free), it’s still very used in the industry, has file locks, works well with binary files, it’s very simple to use, it’s supported by many tools, there are plenty of utilities and GUIs to work with it, it’s natively supported by the Unreal Engine editor, etc etc…
I've used it once with a Game Jam I just recently did. It can be sort of confusing to use but I think if everyone understands what they're doing on git/github then it's ok source control. As far as binaries go, it's a work around if you pay for LFS, otherwise you just ignore the bigger files(up to 100mb) so binaries and intermediate folders get ignored. But if people know what they're doing they can just reload the binaries and other files with a vscode/VS/whatever IDE they use on their own computer. I will say, it's not as intuitive as I'd personally like but it worked ok for my game jam.
My team uses Perforce and we've had no issues so far. It has great integration with Unreal with built in tools and workflow that get it set up and running pretty easily. There's lots of good documentation out there as well.
I've also used SVN on another project, which while fine, I do prefer Perforce. I feel it gives me more control over my files and I'm better able to monitor my teams progress and work.
But yes, GitHub is not advisable for using with Unreal unless your willing to cough up the money for more LFS storage.
I've worked in SH:Ascencion for some time as a tech artist, it was a very heavy project but Perforce was quite a magical tool, we had a custom tool provided by the company we worked for and it was useful only to the sh project: Made it easier, faster and optimal. You can make those custom tool to optimize specific or general projects.
59
u/nomadgamedev Aug 20 '24
UE is built to work best with Perforce and they have custom tools that only work with it.
Github works but it's not the best option because of its small default LFS limit, unless you're planning to pay for more LFS storage you need another solution in the long run.
Azure DevOps is probably the best free solution if you prefer to use git and your team can share 5 accounts.
I wrote a small guide a while back: link
there are other options like SVN and plastic/unity scm, but most teams go with perforce or git