Guide · Unreal Engine

How to set up source control for Unreal Engine

Cloud source control for Unreal Engine 5 teams, with no server to run. Prepare your project, set exclusions, push your first commit, and bring your team on. Works for Unreal Engine 5 and UE4, solo or team.

10 min read

Why Unreal projects need dedicated source control

Unreal projects combine text (C++, .ini, .json) and very large binaries (.uasset, .umap, textures, builds). Git handles the text side well and the binary side poorly. Git LFS patches some of that, but introduces pointer-file foot-guns and bandwidth billing that scales badly.

This guide walks through setting up USourceControl for an Unreal project from scratch. Setup itself takes about five minutes; your first full upload depends on project size. You only do it once per project.

If you're evaluating options, see USourceControl vs Perforce and vs Git LFS first.

Step 1: Prepare your project

There is almost nothing to do here. Close the Unreal Editor before you link the project: editor locks on generated files can interfere with the initial scan. That's it.

You do notneed to delete Unreal's generated folders. When you link a folder containing a .uproject, the desktop app detects it and writes an Unreal .gitignore for you if the folder doesn't already have one. These are excluded from the very first commit:
YourProject/
├── Saved/            # excluded (logs, crash dumps)
├── Intermediate/     # excluded (build intermediates)
├── DerivedDataCache/ # excluded (cooked asset cache)
├── Binaries/         # excluded (compiled DLLs)
├── Build/            # excluded (packaging output)
└── .vs/              # excluded (Visual Studio state)

What gets versioned: Content/, Config/, Source/, Plugins/, and the .uproject file. If your project already has a .gitignore, it is left alone and used as-is — you can edit the exclusion list at any time from the app's settings.

One thing worth checking if you bring your own exclusions: don't ignore __ExternalActors__/ or __ExternalObjects__/. Plenty of older community gitignores still list them from pre-OFPA days, and on modern UE5 that means losing your level data on every commit.

Step 2: Create a USourceControl project

Create your first project to get set up. Once your account is ready, on the dashboard:

  1. Create a new organization if you don't have one.
  2. Click New project. Pick a name. It doesn't need to match your local folder name.
  3. Copy the project key (starts with usc_). You'll paste it into the desktop app next.
Treat the project key like an API key. Anyone with it can push and pull from your project. Regenerate it from the dashboard if it leaks.

Download the desktop app from usourcecontrol.com/download. On first launch:

  1. Click Link project.
  2. Paste the project key from Step 2 (you can find it again in the web dashboard under the project's settings). The desktop app authenticates with this key; there is no separate sign-in.
  3. Browse to your Unreal project folder (the one containing the .uproject file).
  4. Confirm.

This is the point where the app auto-detects the Unreal project and writes the exclusions described in Step 1. You don't need to configure .gitignore-style exclusions manually, and you don't need to have deleted anything by hand.

Step 4: First commit

The app scans your project folder. You'll see a list of all files to be versioned, likely several thousand, plus any large binaries. Review the list:

  • Verify nothing from Saved/ or Intermediate/ is in the list.
  • Confirm your .uproject, Content/, Config/, and Source/ files are present.
  • Type a commit message. "Initial project state" is fine.
  • Click Commit.

The first commit uploads every file, so it takes a while on large projects (a 50 GB project on a 100 Mbps connection takes ~70 minutes). Subsequent commits are incremental and usually complete in seconds.

If a commit is interrupted, nothing is lost and nothing partial lands: a commit is atomic, so you just run it again. Files that already finished uploading are recognised by their SHA-256 and skipped, so the second attempt only moves what didn't make it the first time.

Step 5: Invite your team

From the dashboard, open the Members section of your organization. Invite teammates by email; they get a magic link, install the desktop app, and join your project.

On their first sync, the app downloads the full project state to a folder they choose, usually a fresh Unreal project directory. After the initial sync, they open the .uproject in Unreal and work normally.

Role assignments are straightforward:

  • Owner: billing and org-level control.
  • Admin: can invite members, create and manage projects, and manage project keys. No billing access.
  • Member: commits and syncs within assigned projects.

Step 6: Blueprint locking workflow

Unreal blueprints are binary .uasset files. They can't be merged, so when two people edit the same blueprint concurrently, only one person's work survives. Locking prevents this.

The flow, every time you edit a blueprint or level:

  1. Open the desktop app, find the blueprint in the file tree.
  2. Click Lock. Optionally type a reason.
  3. Open the file in Unreal Editor, make your changes, save.
  4. Back in the desktop app, click Commit. The lock is released automatically after a successful commit.

For a deeper treatment see Blueprint merge conflicts and how to avoid them.

Troubleshooting common issues

First commit is slow.It's uploading the full project. A 50 GB project over a 100 Mbps upload takes around 70 minutes. Let it finish in the background.

App says a file is locked but I don't see the lock. Refresh the project view. Locks are server-authoritative; your client may be behind.

Someone has an old lock they forgot about. The quickest fix is to ask them to release it from their desktop app, or to commit the file. Org owners and admins can also break a lock through the locks API with force: true.

A commit is rejected as locked.Someone else holds a lock on one of the files you're pushing. The error names the files and who holds them; commit the rest, or wait for them to release.

Frequently asked

Do I need to configure any Unreal Editor settings?

No. Today USourceControl works through the desktop app, which sits alongside the editor, so there is no Editor source control provider to enable. An in-editor plugin is in development; it will talk to the desktop app rather than replace it, and this workflow will keep working either way.

Does this work with UE4 and UE5?

Yes. The process is identical for both. USourceControl is engine-version agnostic. It operates on your file tree, not engine internals.

Should I put my C++ source in USourceControl or keep it in Git?

Either works. Many teams keep engine code in Git for PR review and use USourceControl for content. Others put everything in USourceControl. Both are valid.

What happens to the Derived Data Cache?

DerivedDataCache/ is excluded by default. It's regenerated on first Editor open from the actual asset files. Teammates who sync fresh will have Unreal rebuild their DDC automatically.

How do I bring existing project history across?

Most teams commit their current working copy as the first version and keep the old system read-only for reference, which costs nothing and covers the 'how did we do X in 2022' case. If you genuinely need history preserved inside USourceControl, that's a scoped paid service for Studio and Enterprise customers — contact us before you migrate.

Run the whole flow yourself

From $25/user/mo with unlimited storage and the desktop app. Setup takes about five minutes; then your first upload runs while you work.

Create your first project