UE Version Upgrades 101: Test on a Copy and Confirm It Still Plays the Same

Created: 2026-07-25Last updated: 2026-09-05

How to move a work-in-progress UE project to a newer version. Covers deciding whether to update, preserving the original data, Open a Copy, comparing logs against actual behavior, and how to go back when problems appear.

There is a feature you want to try in a new UE. But you would rather not break the game that currently works. In that case, before updating your in-progress data directly, open a copy in the new UE and test it .

What matters is more than whether the editor launches. The character moves, doors open, you can reach the results screen. Try the same actions that used to work and confirm all the way through producing a distributable build.

This article uses UE installed via the Launcher and runs through preparing to preserve the pre-update state, converting a copy, and comparing behavior. Set up a state where, even if problems appear, you can keep working with the original project and the older UE.

Keeping the original project and moving a duplicated folder to the new UE

What You'll Learn

  • Reasons to update and how to confirm plugin support
  • Preserving the original data and testing with Open a Copy
  • What to compare across logs, Blueprints, Play, and packaged builds
  • Where to investigate when problems appear and how to resume work

Sponsored

Upgrade or wait?

A new version existing does not mean an in-progress project must update immediately. Start by writing "what am I upgrading for" in one line.

Reason to consider updatingWhat to confirm first
There is a new feature you wantWhether your game uses it and whether the required environment is available
You want a bug you hit fixedWhether that bug is fixed in the target version
You need support for a platformWhich version meets its OS and toolchain requirements
You want to align the team's setupWhether everyone can install the same UE and plugins

Release notes list what changed and what was fixed in a version. Beyond new feature announcements, check changes to features you use and any "Upgrade Notes". Rather than reading everything, starting from areas relevant to your game — input, rendering, animation — reads more easily.

Late in production, the time available to verify afterwards matters too. When the benefit is small and you can ship on your current version, testing after completion is a valid choice. Conversely, with a deadline-driven reason such as platform support, schedule the migration and verification time.

Matching your reason to update against plugins, verification time, and team setup, then testing on a copy

Check plugins whether free or paid

A plugin adds features to UE. When your project uses one, updating UE itself does not necessarily make it behave the same.

Check what you use in "Edit → Plugins" and note names, current versions, and support for the target version. Look up supported versions and installation steps on Fab or the developer's page. Plugins installed on the engine side do not move to the new UE by copying the project folder alone.

If an essential plugin has no supported version yet, you need time to wait or to try an alternative. Unsupported plugins are not all disabled automatically; opening the project can stop outright.

What to preserve before upgrading

Your fallback when trouble appears after updating is the combination of the pre-update data and a UE that opens it . Play in the current version first, confirm it works, and save with "Save All".

Keeping the pre-update data openable in the old UE and opening a verification copy in the new UE for comparison

Using source control, commit here. A commit records that moment's changes into history. Files outside source control are not preserved, though. Confirm you have what you need, including the actual data of LFS-tracked assets (see the Git management article).

What to keepWhy
The whole projectContent, Config, and the .uproject plus the Source, Plugins, and Build you use
Old UE and plugin informationSo you can reopen and compare in the original environment
Needed data outside the projectExternal assets and tools are not included in a project copy
Notes and screenshots of behaviorSo you can separate pre-existing problems from new ones

Close the editor, copy the project folder elsewhere, and keep it as a backup. Then update the verification copy created by "Open a Copy" below. Your disk needs room for the original, the copy, the new UE, and the generated files from working.

Do not wipe Saved wholesale

Saved can hold autosaves and game save data as well as logs. UE can recreate the folder, but that does not bring back what was inside. There is no rule requiring deletion before updating.

Intermediate is mid-build data and DerivedDataCache is reusable converted data. Regenerating them for investigation happens, but proceed without deleting at first. Excluding something from Git is also separate from whether you can delete it locally (see initial settings and what to keep).

Sponsored

Open the copy in the new UE

Install the target UE from "Unreal Engine → Library" in the Epic Games Launcher. Keeping the old version is fine. Using C++ or code-based plugins also means preparing the development tools the target version supports.

Here we use Open a Copy , which has UE make the copy.

Launching the new UE, selecting the original project, and opening the copy Open a Copy created elsewhere
  1. Launch the target version's UE from the Launcher.
  2. Select the original project in the Project Browser. If it is not listed, specify the .uproject via "Browse".
  3. Choose "Open a Copy" on the confirmation for opening a project from another version.
  4. Wait for the copy and conversion. Once open, confirm the project you are working in is saved somewhere other than the original. Right-clicking in the Launcher's project list and choosing "Show in folder" reveals the location.

"Convert in-place" converts the original project where it is. Our procedure chooses Open a Copy. If a setting opens an existing project automatically, reselect via "File → Open Project".

The first run can take time preparing shaders and the like. Watch progress and the log, and keep any displayed errors when conversion fails.

Switching a copy you made yourself

On Windows, you can also right-click the copy's .uproject and choose an installed UE with "Switch Unreal Engine Version". That specifies which UE opens that project . It does not automate creating the copy or verifying behavior.

It also does not revert updated assets to an older format. Pointing back at an older UE does not undo the update. To go back, open the preserved pre-update data with the old UE.

Once it opens, compare against the previous behavior

Check the log and Blueprints first, then move to actual controls. Compiling successfully means it assembled into a runnable form. It does not guarantee "the game's rules are as before".

Checking Errors and Warnings in the Output Log. Opening and behaving correctly are separate
  1. Check Errors and Warnings in the "Output Log". When filtering finds something of concern, restore the surrounding normal logs and read around it.
  2. Confirm required plugins are available and there are no warnings about missing classes or assets.
  3. Open your main Blueprints and check errors and warnings via each "Compile". Fix problems from where the message points.
  4. Open the levels you use and try input, collision, screen transitions, and audio in Play. Compare against your pre-update notes.
  5. Run automated tests if you have them, and build a packaged version and operate it.

Rather than ignoring every warning or driving the count to zero for its own sake, confirm what each affects. Comparing against what appeared before the update narrows the scope.

Compare visuals at the same location, camera, and quality settings. When brightness changes, look at whether lighting, materials, or rendering settings produced the difference before reverting settings all at once.

How to investigate when problems appear

SymptomClues to investigateWhat to do next
Launching or conversion stopsConversion errors, the copy's Saved/Logs, Crash ReporterCheck the named plugin, file, or development tool
A Blueprint fails to compileThat Blueprint's Compiler ResultsCheck missing functions, types, parent classes, and pin connections
"Deprecated" appearsThe warning text and the target version's changesLook up the recommended replacement and confirm behavior after changing
C++ will not buildThe first specific compile errorCheck supported compilers and SDKs and changes to function names and arguments
It works in the editor but not in the buildPackaging-time and runtime logsCheck included maps, assets, and runtime plugin support

Deprecated is a notice that "you should move to another approach going forward". Some still work, and it does not mean "every red node is deprecated". Compiling also fails when required plugins or parent classes are missing.

If it opens with plugins missing, do not immediately re-save every asset. Restore the dependencies first so things load correctly. To disable features for isolation, test in a further separate verification copy.

Regenerate caches once logs or known issues show you need to. Close the editor, confirm what can be regenerated, and back it up. Some data, such as Binaries for plugins without source, cannot be rebuilt by you if deleted.

If resolution drags on, keep the verification copy and logs, open the original project in the old UE, and resume work. Deleting the failed copy is not a prerequisite for recovery (see how to read logs).

Sponsored

Hands-On: run one upgrade loop on a small project

For a first time, try a small Third Person project before your main production. The goal is not to cause a defect but to confirm you can verify the same result before and after .

Comparing the startup text, Cube position, movement, and jumping under the same conditions before and after updating

1. Build markers for comparison

Create a Blueprint Third Person template in your current UE and name it UpgradePractice . Where a Variant is offered, use the basic "None".

Connecting BP_UpgradeCheck's Event BeginPlay into Print String's exec input, displaying UPGRADE CHECK OK for 10 seconds, then compiling, saving, and placing it in the level
  1. Keep the template's floor and Player Start and add one Cube in front of the character.
  2. Create BP_UpgradeCheck via "Blueprint Class → Actor". Actor is the base class for things placed in a level.
  3. In the Event Graph, wire Event BeginPlay 's white exec pin into Print String with In String UPGRADE CHECK OK and Duration 10.0 .
  4. Compile, save, and place one BP_UpgradeCheck in the level. No visual components needed.
  5. Play and confirm the text appears right at the start, the Cube is visible, and WASD moves and Space jumps.

BeginPlay fires at game start and similar moments. We confirm through text that our Actor is in the level and its logic runs. If you cannot see Print String's Duration, expand the details with the arrow at the node's bottom. Keep Print to Screen on.

Take a screenshot, stop Play, and save with Save All.

2. Update the copy and try the same things

Close the editor, make a backup, and move to the new UE using the Open a Copy steps above. Note the original's and copy's folders and the UE versions in use.

Once the copy opens, check the log and compile BP_UpgradeCheck and the template's character Blueprint. Then Play the same level and compare the following.

What to checkBefore the updateExpected after the update
The startup textUPGRADE CHECK OKThe same text appears
The marker CubeVisible where you placed itVisible in the same place
WASD and SpaceMovement and jumping workThe same controls work

Matching without problems means the small project's update and comparison worked. For your own game, add checks to this table such as "20 damage to an enemy takes HP 100 → 80" and "you can retry from the results" (see the automated testing introduction).

3. Confirm the packaged build and your fallback

Package the copy in Development and confirm the text, Cube, movement, and jumping outside the editor too. Specify the level holding this exercise as the startup map. For distribution, also build Shipping and re-confirm movement and other controls. Print String is not used as a Shipping verification display (see the packaging steps).

Finally close the copy and open the original project in the old UE. The same exercise working confirms your fallback too. After a successful update, decide which one continues production so you do not make separate changes to both.

Bonus: moving to a version further away

Do I need to go one version at a time?

You do not necessarily go through every version. Investigate the target's compatibility and the important changes in the versions between, then test on a copy. When a distant jump makes causes hard to isolate, checking an intermediate version helps show where the difference appeared.

For big changes such as UE4 to UE5, consult the official migration guide alongside the normal update steps. Some features, such as physics and rendering, do not behave identically from data conversion alone.

When you want to bring new-version changes back to the old one

Work you added in the copy does not return to the original automatically. Do not assume updated assets can go straight into an older UE; record what changed and judge what you can rebuild in the old version. During verification, deciding which version you adopt before writing a lot of new-feature code keeps things tidy.

If you build the engine from source, engine-side changes and the build environment are also part of the migration. In addition to this article's Launcher-version steps, prepare a procedure suiting that development setup.

Summary

Confirm your reason to update and the plugins you need, preserve the original data and the old UE, then test on a copy. After it opens, do not stop at logs and compiling; compare the same controls, visuals, and packaged build as before.

Confirming both "it works on the new version" and "I can go back to the old one and continue" on a small exercise lets you follow the same order on your in-progress game.

Further Reading

Unreal Engine Notes in this section98