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.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.