Guide · Unreal Engine 5

Blueprint merge conflicts: prevent and resolve

Unreal Engine 5 Blueprints are binary .uasset files, and One File Per Actor did not change that. When two people edit the same Blueprint, someone's work is going to be lost, unless you prevent the situation in the first place.

6 min read

Why blueprints can't be merged

An Unreal blueprint is saved as a .uasset file, a packed binary format that encodes nodes, connections, variables, and default values. It's not text. It's not JSON. Diff tools see it as an opaque blob.

When two people edit the same blueprint on parallel branches and try to combine, there's no meaningful "merge" operation. You can only pick one version or the other. Whatever you don't pick is lost.

This is not a source control system's fault. It's a property of the file format. Every source control system, including Perforce, Git LFS, and USourceControl, has the same constraint for binary files.

The prevention strategy: locking

Since you can't merge the conflict, you must prevent the parallel edit. The standard answer across game dev is file locking, also called exclusive checkout.

The workflow:

  1. Before opening a blueprint in the editor, lock it in the desktop app.
  2. Edit the blueprint. Save and close.
  3. Commit the change. The lock releases automatically.

If a teammate tries to lock the same blueprint while you hold it, they're told who has the lock and can plan accordingly. When the team locks consistently, parallel edits stop happening.

USourceControl shows lock state live in the desktop app. The file tree displays who holds each lock and for how long.

What to lock (and what not to)

Always lock before editing:

  • Blueprints (.uasset), especially widely-shared ones like player controllers, game modes, UI widgets.
  • Levels (.umap): large, unmergeable, high-risk.
  • Materials and material instances: binary .uasset.
  • Animation blueprints, state machines, montages.

Generally don't need to lock:

  • Config files (.ini): text, merges fine.
  • C++ source: text, handled by normal diff/merge.
  • Static meshes, textures, audio. You can lock if two people are touching them, but they're usually "owned" by one role at a time.

Team habits that keep conflicts rare

Technical locking is only half the battle. The other half is communication:

  • Use informative lock messages."boss fight balance pass, ETA 3h" tells teammates when they can pick up adjacent work. "editing" tells them nothing.
  • Release locks at end of day. Commit what you have, release the lock, re-lock tomorrow. Dangling overnight locks block distributed teams across time zones.
  • Call out shared blueprints in planning. If two tasks both touch the player controller, sequence them or decide explicitly who goes first.
  • Split large blueprints.A character blueprint that's touched by five people every sprint deserves to be broken into smaller components. Refactor when it becomes a bottleneck.

What to do when you hit a conflict anyway

Sometimes locking fails. Someone bypassed it, the team forgot, or two branches diverged over a weekend. When you see the "blueprint was edited on both sides" situation, the recovery playbook:

  1. Don't panic-pick. Figure out who changed what before overwriting anything.
  2. Ask both editors to describe their changes. Usually one set is larger; it should win, and the smaller set will be re-done manually.
  3. Open both versions side by side. USourceControl lets you download any prior version to a temporary folder. Have the smaller-change author look at the larger-change version and re-apply their edits on top.
  4. Commit the combined result with a message explaining what happened. Lock the file during this process to prevent a third edit compounding the problem.

Advanced: Unreal's built-in blueprint diff

Unreal Editor has a built-in blueprint diff tool (Tools → Blueprint Diff Tool) that compares two .uasset files visually, showing added, removed, and modified nodes.

This is useful for reviewing a teammate's change before accepting it, or for the "describe the changes" step of the recovery playbook above. USourceControl lets you download any historical version of a .uasset to feed into this tool.

The diff tool doesn't resolve conflicts automatically. Nothing does, for binary blueprints. But it makes the manual reconciliation much less error-prone.

Frequently asked

Why can't Unreal Blueprints be merged?

Blueprints compile to binary .uasset files. A merge tool needs to reason about lines of text to combine two sets of changes, and there are no lines in a .uasset. Unreal ships a Blueprint merge viewer that shows you the base, remote, and local versions side by side, but it is a viewer: you cannot select individual changes, so you end up copying nodes by hand from a read-only window into the conflicted graph.

How do I prevent Blueprint merge conflicts entirely?

Exclusive locking is the only reliable answer. Lock the Blueprint before you open it, edit, then commit and release. Because the lock is visible to the whole team, nobody starts parallel work they would have to throw away. Communication helps but does not scale; the lock is what actually enforces it.

Does One File Per Actor solve Blueprint conflicts in Unreal Engine 5?

No. OFPA splits actor instance data in a level into separate files, which solves the level-file bottleneck. Blueprint assets themselves are unaffected: they remain single binary .uasset files that two people can still open at once. If anything, OFPA makes the remaining Blueprint conflicts easier to overlook, because teams stop expecting collisions.

Can I use the Unreal Blueprint merge tool with USourceControl?

You can, and for the rare conflict that slips past locking it is the right tool. Download the conflicting revision from version history to a temp file, open both in the editor, and copy across what you need. In practice teams that lock consistently reach for it a few times a year rather than a few times a week.

What if two people already edited the same Blueprint?

Nothing is lost: every version is stored and recoverable. Restore either version in one click, or download both and reconcile them in the editor's merge viewer. The work exists in history regardless of who committed last, which is the real difference from a plain overwrite.

Stop losing Blueprints to merge conflicts

From $25/user/mo. Server-authoritative file locking for Unreal teams, included on every plan.

Create your first project