تخطي إلى المحتوى
الوسائط 1 للقائمة Migration Ledger - UE5 Engine-Upgrade Pre-Flight, Core Redirects & CI Gate

الوصف

Your compiler already tells you about the deprecations that are safe.

When you move a project to a new engine version, the compiler warns you about deprecated symbols. Those warnings are a scheduling problem: the code still works, and you have time to deal with it.

The upgrade failures that hurt are the ones that produce no warning at all.

A plugin whose descriptor declares an older EngineVersion is not warned about — it is refused. Unreal logs "Skipping load", the editor opens normally, and the plugin simply is not there. A function deprecated as final with an empty body compiles clean and does nothing. Your build is green, your tests may even pass, and something in your project quietly stopped working.

Migration Ledger separates those two classes of breakage and tells you which is which.

It writes the fix, not just the report

Core Redirects are Unreal's own remapping mechanism — Epic ships 817 of them in BaseEngine.ini. Migration Ledger generates the ones your project needs, into a separate file you read before you apply it. Undoing it is deleting the lines.

Measured on a stock UE 5.8 install: 1,446 Core Redirects generated, every one derived from a replacement the engine's own deprecation message named, and shape-checked so a redirect never points at the wrong kind of symbol.

It also fixes plugin version gates — the EngineVersion field that silently stops a plugin loading.

It reads the engine, not a hand-written rule list

There is no curated database to go stale. Migration Ledger parses the installed engine's own deprecation markers on first run and caches the index.

Measured on the build machine:

  • 17,438 engine headers parsed

  • 5,903 index rows built

  • 5,268 with a resolved replacement symbol (89.2%)

  • Cold index build 198 seconds; warm runs 3 seconds

That means it tracks whatever engine you point it at, including one released after this plugin was.

Three exit codes, because two is not enough

It runs headless as a commandlet, so your CI already knows how to read it. Reports in HTML, JSON, JUnit XML and CSV — no parser to write and no dashboard to buy.

  • 0 — clean

  • 1 — findings

  • 2 — the scan did no real work

That third code exists because a tool that examines nothing and reports success is worse than no tool. Blockers and silent degradations fail the build; warnings are recorded and pass, so one deprecation does not turn the whole board red.

What it does not do

It does not edit your source files. It reports, it generates a redirect file you apply yourself, and it fixes descriptor version gates. Nothing else in your project is written to.

It is not a curated compatibility database, and it does not know about third-party plugins' internal APIs — it knows what the installed engine declares.

How this differs from what Epic already ships

Epic ships both of the things this builds on: the compiler's deprecation warnings, and the Core Redirect mechanism itself. What Epic does not ship is anything that finds the breakage which produces no diagnostic at all — the descriptor version gate that makes a plugin silently fail to load, and the deprecated-final-empty-body call that compiles and does nothing — nor anything that generates the redirects a specific project needs.

Verified
  • Unreal Engine 5.8 only. Built and gated against the installed 5.8.1. No other engine version is claimed, because no other version was run.

  • Windows only. The descriptor declares Win64, Mac and Linux, but the packaging gate ran with -TargetPlatforms=Win64, so Win64 is the only platform with a verified build.

  • No third party software. Dependencies are Core, CoreUObject, Engine, Json, Projects and UnrealEd — all Epic modules — and every include is an Epic engine header or one of Migration Ledger's own.

  • Packaging gate: exit 0, zero errors, zero warnings, 10 Compile and 2 Link actions executed.

  • 31 of 31 automation tests pass, matching the engine's own performed-count tally.

  • Load-tested in-engine: "Skipping load" appears nowhere in the editor log.

  • Full C++ source included and readable.

التنسيقات المضمنة