Can you diff a level (umap) in the UE Editor?

When I select “Diff against Depot”, I get “updating file source control status” and then nothing. Why does the option exist if it’s not available and if it is available, how do I debug the problem so I can provide a bug report?

I believe umaps are binary files, and you can’t diff binary files. However, not all files are binary, which is why the option exists. I’d file the bug report as a description of the behavior you’re seeing, the expected result, and the things you’ve tried to resolve the issue yourself and a step by step repro of the problem.

Hope this is helpful.

In a general sense you are correct, however, there is a diff tool build into the unreal editor that allows you to diff blueprint which are binary files. This is a nice visual diff tool that works reasonably well. Levels are part blueprint so I would expect that the option should exist to diff a level file.

I would also expect that the Unreal Editor should detect what type of file it is and grey out the option if the option is not available. Not appear to function and then fail cryptically.

Could be a bug. The below blog post says that “Any asset can be diffed” I was thinking P4V diff. Apologies. But the information is the same. The maps 't appear to be exported to text files.

This is what I get from the log:

LogSourceControl: Attempting ‘p4 fstat
-Or C:/Projects/P4V/PerforceTest/Content/StarterContent/Maps/Minimal_Default.umap’
LogSourceControl: Attempting ‘p4
filelog -s -i -L -t -m 100
C:/Projects/P4V/PerforceTest/Content/StarterContent/Maps/Minimal_Default.umap’
LogSourceControl: Attempting ‘p4 print
-q -oC:/Projects/P4V/PerforceTest/Saved/Diff/Temp-1-Rev-1-Minimal_Default.umap
C:/Projects/P4V/PerforceTest/Content/StarterContent/Maps/Minimal_Default.umap#1’

And a message pops up but I 't see what the message window says before it disappears.

Materials and blueprints get exported as text files before they are diffed with the chosen diff tool. In my case P4 Merge.

86231-mapdiff.png

So, when a supported asset type is diffed it is exported as a text file.

The problem I see with diffing a map is that maps are much larger files and would require a great deal of work to get to export to a diffable text file. The slightest little change could re-arrange a whole bunch of data in that file too.

when I diff a supported asset, it is actually diffing 2 text files. These are not binary files. So i’m guessing the txt files aren’t generated for the maps.

And you can’t diff binary files.

I know this doesn’t solve your problem, but at least maybe helps you undersatnd the issue.

Yes, blueprint diff is not the same as diff against depot. A umap is also different from a blueprint. While it has an associated blueprint, the blueprint associated (or contained) is not the same as the level itself. The level contains a lot more information than just the blueprint containing logic.

Your question is assuming that all the assets placements and settings of a level are stored in a blueprint, when in fact they are not. They are part of the umap and level meta data and shared assets etc… the level is far more complicated than people give it credit for, and it is not a fair assumption to make that if it has a blueprint associated with it, then you should be able to diff it against another blueprint or another iteration of itself the same as you would a blueprint.

The video and article you point to are very specifically talking about blueprints and no assumptions should be made about how levels can or should be compared to one another.

The best way to know that you haven’t deleted extra actors from your scene is to have a solid workflow and organizational practices that prevent such things to begin with. And save and checkin your work regularly so as to prevent loss of work.

i have a perforce server setup at home just for that purpose.

Diffing is useful to understand the changes that were made in complex node setups that are exhibiting odd behavior so you can have a starting point to fix a bug (as you know). I 't see that information being practical or useful for authoring levels and content.

However, one could easily implement monitoring tools and asset placement managers to the editor to handle such specific concerns.

It sounds like you want to diff asset placements, blueprints, and changes to assets all the same. But i 't see that being practical. With assets like meshes, you’ll notice it doesn’t show you the vertex changes that are made to the asset, but only things like “bounds extents” and so forth.

This is because keeping track of all the verts and their positions and normals and so forth would make that Diff useless. The same is the case with levels and asset placements and overrides on each asset and so-on.

The tools for diffing individual assets and blueprints are useful though.

Re: I would expect the editor to grey out the option if it is not available to diff. This is a good recommendation, and I think the folks at Epic should consider it to prevent such confusion.

Are you familar with this? Blueprint Diffing

I just 't know if it also applies to maps. The goal isn’t to make changes but to review the changes that I’ve made to ensure that I haven’t accidentally deleted additional actors in my scene.

The best way to know that you haven’t
deleted extra actors from your scene
is to have a solid workflow and
organizational practices that prevent
such things to begin with. And save
and checkin your work regularly so as
to prevent loss of work.

This is not pragmatic. It’s a design flaw to implement the files as binary. They should some form of data-driven text format like JSON, YAML or XML that is compiled to their binary format (assuming that isn’t a intermediary format unto itself.)

The fact that when you copy and paste blueprint nodes, the content is a mark-up text format highlights the fact that they acknowledge the value of text.

The reality is that the reason people still code in text is that it’s human readable and very comparable. Being “blind” to your changes is a design flaw.

The fact that they have written a diff tool for blueprints is admirable but they fell short when they didn’t apply it to levels as well (which is half blueprint itself).

That is a perfectly valid opinion.

To answer your original question, it is currently not supported. I would suggest starting a new question with a feature request to allow diffing of level blueprints. Seems like a reasonable request.

It is actually possible to diff level blueprints, if you know where to look. Open your level blueprint in the blueprint editor and go in File->Diff. You will get the list of revisions to diff against.

@GrumpyOldBear2 is correct

Open your level blueprint in the blueprint editor and go in File->Diff. You will get the list of revisions to diff against.

This worked for me as well! Should probably be the accepted answer

Not sure if something changed In UE5, but if I have changes to a level and no changes to the level blueprint, this approach just tells me there are no changes to the level blueprint, which doesn’t tell me what changed in the level.

Does this even work in UE5?