Navigation
API > API/Runtime > API/Runtime/Core
Versioning
We now have two enums for global versioning, EUnrealEngineObjectUE5Version and EUnrealEngineObjectUE4Version which can be updated independently of each other. This allows us to potentially make version changed in the UE4 code base in the future and still have packages saved with those changes to be compatible with the UE5 code base.
The struct FPackageFileVersion should be used to contain the version number rather than storing the UE4/UE5 specific version numbers. It provides overloads for testing against both version enum types for convenience.
Note that when reporting versioning problems we often use FPackageFileVersion::ToValue which returns the highest version valid in the structure. This allows us to keep reporting code simple and hide the fact that there are two version numbers from end users. However this does mean that if a version mismatch is encountered due to a future extension of EUnrealEngineObjectUE4Version, then the error message given might look odd. Although given that we are unlikely to be changing EUnrealEngineObjectUE4Version in the future the risk is deemed worth it. This enum is the version for UE5 and should ONLY be edited in UE5Main branch!
| Name | EUnrealEngineObjectUE5Version |
| Type | enum |
| Header File | /Engine/Source/Runtime/Core/Public/UObject/ObjectVersion.h |
| Include Path | #include "UObject/ObjectVersion.h" |
Syntax
enum EUnrealEngineObjectUE5Version
{
INITIAL_VERSION = 1000,
NAMES_REFERENCED_FROM_EXPORT_DATA,
PAYLOAD_TOC,
OPTIONAL_RESOURCES,
LARGE_WORLD_COORDINATES,
REMOVE_OBJECT_EXPORT_PACKAGE_GUID,
TRACK_OBJECT_EXPORT_IS_INHERITED,
FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES,
ADD_SOFTOBJECTPATH_LIST,
DATA_RESOURCES,
SCRIPT_SERIALIZATION_OFFSET,
PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION,
PROPERTY_TAG_COMPLETE_TYPE_NAME,
ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES,
METADATA_SERIALIZATION_OFFSET,
VERSE_CELLS,
PACKAGE_SAVED_HASH,
OS_SUB_OBJECT_SHADOW_SERIALIZATION,
AUTOMATIC_VERSION_PLUS_ONE,
AUTOMATIC_VERSION = AUTOMATIC_VERSION_PLUS_ONE - 1,
}
Values
| Name | Remarks |
|---|---|
| INITIAL_VERSION | The original UE5 version, at the time this was added the UE4 version was 522, so UE5 will start from 1000 to show a clear difference. |
| NAMES_REFERENCED_FROM_EXPORT_DATA | Support stripping names that are not referenced from export data. |
| PAYLOAD_TOC | Added a payload table of contents to the package summary. |
| OPTIONAL_RESOURCES | Added data to identify references from and to optional package. |
| LARGE_WORLD_COORDINATES | Large world coordinates converts a number of core types to double components by default. |
| REMOVE_OBJECT_EXPORT_PACKAGE_GUID | Remove package GUID from FObjectExport. |
| TRACK_OBJECT_EXPORT_IS_INHERITED | Add IsInherited to the FObjectExport entry. |
| FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES | Replace FName asset path in FSoftObjectPath with (package name, asset name) pair FTopLevelAssetPath. |
| ADD_SOFTOBJECTPATH_LIST | Add a soft object path list to the package summary for fast remap. |
| DATA_RESOURCES | Added bulk/data resource table. |
| SCRIPT_SERIALIZATION_OFFSET | Added script property serialization offset to export table entries for saved, versioned packages. |
| PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION | Adding property tag extension, Support for overridable serialization on UObject, Support for overridable logic in containers |
| PROPERTY_TAG_COMPLETE_TYPE_NAME | Added property tag complete type name and serialization type. |
| ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES | Changed UE::AssetRegistry::WritePackageData to include PackageBuildDependencies. |
| METADATA_SERIALIZATION_OFFSET | Added meta data serialization offset to for saved, versioned packages. |
| VERSE_CELLS | Added VCells to the object graph. |
| PACKAGE_SAVED_HASH | Changed PackageFileSummary to write FIoHash PackageSavedHash instead of FGuid Guid. |
| OS_SUB_OBJECT_SHADOW_SERIALIZATION | OS shadow serialization of subobjects. |
| AUTOMATIC_VERSION_PLUS_ONE | -- |
| AUTOMATIC_VERSION |