Unreal Engine Upgrades
DataConfig is committed to support multiple UE versions with no deprecations and warnings. On this page we'll document important upgrade and migration info.
UE5.8
FScriptDelegateAPI changed.PLATFORM_64BITSis deprecated as UE only supports 64-bit.FFieldClass::Constructwith InFlags is deprecated.
UE5.7
FindObjectseries of functions deprecatesbExactClassin favor ofEFindObjectFlags.- Many metadata fields like
BaseStruct,AllowedClassesrequires full long names:- for example previously for instanced struct we can do this:
UPROPERTY(EditAnywhere, meta = (BaseStruct = "DcStructShapeBase")). Now it has to be using the full path starting with/likeUPROPERTY(EditAnywhere, meta = (BaseStruct = "/Script/DataConfigExtra.DcStructShapeBase")). - See the full list in
LongPathNameMetaDataSpecifierValidatorinUhtDefaultSpecifiers.cs.
- for example previously for instanced struct we can do this:
UE5.6
FString::Appendfand series of functions now do compile time check on the format string, requires the format string to be a static constexpr.GMallocaccess is deprecated.- 'UClass::ClassDefaultObject' is deprecated in favor of global
GetDefault<>()orGetMutableDefault<>().
UE5.5
- A new series batch scripts named
Engine/Build/BatchFiles/RunUBTare added which will will do a bunch of checks before runningUnrealBuildTool. One should now useRunUBTinstead ofUnrealBuildToolotherwise it won't work in some configuration. EAutomationTestFlagsis now aenum classtype.TIsTriviallyDestructibleis deprecated overstd::is_trivially_destructible_v.TFieldPath(OtherPropertyType*)constructor now checks for actual type safety.FProperty::ElementSizedeprecated overGetElementSize.StructUtilsplugin is deprecated with all things moved in engine.PER_MODULE_BOILERPLATEnot needed anymore as UBT handles it automatically.FVerseValuePropertyrenamed toFVValueProperty, also compiled only withWITH_VERSE_VMdefine.
UE5.4
- New property
OptionalandVValueare added. We fully supportOptionalstarting by addingEDcDataEntry::OptionalRoot/OptionalEndand then evantually it works with all DataConfig APIs including JSON/MsgPack serialization and property builder. FObjectPtrProperty/FClassPtrPropertyare deprecated. It's introduced in 5.0 now removed and alias toFObjectProperty/FClassPropertyrespectively.- Defaults to MSVC
\W4flag now which checks for unreachable code. It reports confusing locations and you can setbUseUnity = falsein your*.Build.csmodule rules to locate whereabout. FTextinternal pointer changed fromTSharedReftoTRefCountPtr.
UE5.3
- Introduces
BuildSettingsVersion.V4which now defaults to C++ 20. TRemoveConstis deprecated overstd::remove_const.FScriptDelegateetc now has additional checkers based on threading model and debug/release build. Thus we change howFScriptDelegateAccessworks.
UE5.2
TIsSameis deprecated overstd::is_same.- In
Build.csbEnforceIWYUis changed to enumIWYUSupport.
UE5.1
- UE5.1 deprecates
ANY_PACKAGEin favor of a new methodFindFirstObject. In DataConfig we providedDcSerdeUtils::FindFirstObjectwhich callsFindObject(ANY_PACKAGE)pre 5.1 and callsFindFirstObject()for 5.1 and onwards.
UE5.0
-
New
TObjectPtrto replace raw UObject pointers. Turns out this is mostly handled within the engine and is transparent to DataConfig. -
New property types
FObjectPtrPropertyandFClassPtrPropertyare added. They're handled the same asFObjectPropertyandFClassPropertyrespectively. -
FVectornow is 3doubles, andRealdata type in Blueprint now is also double. This is also mostly transparent to DataConfig. -
FScriptArrayHelperAccesssize changes with a addeduint32 ElementAlignment. -
TStringBuilderWithBufferAPI changes. At call sites we now doSb << TCHAR('\n')instead ofSb.Append(TCHAR('\n')).
UE4
- The oldest version DataConfig supports is UE 4.25, in which it introduces a major refactor that changes
UPropertytoFProperty. We intended to support UE4 in the foreseeable future, especially when we now have separatedupluginfor UE4 and UE5.