Unreal Engine 5.1 just get released and we've prepared DataConfig 1.4 with full support with this release. The full changelog is here:
DataConfig JSON Asset will also be updated soon. Below we'll highlight cool stuff in this release.
The oldest UE version DataConfig support is UE 4.25 and we intended to keep it this way. To better support this we now use separated uplugins for UE4 and UE5. Now we can have UE5 specific tests and extra features. We now provide ready to use plugin zips on the release page. Checkout pages below for more details:
Starting with UE 5.0 there's a new plugin StructUtils featuring a struct type called FInstancedStruct. It's shares the same idea to DataConfig AnyStruct example, while it has proper asset serialization logic and editor support. We now have an extra example on its serialization support with DataConfig.
// DataConfigExtra5/Public/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.h
USTRUCT()
struct FDcEditorExtra5InstancedStruct1
{
GENERATED_BODY()
UPROPERTY() FInstancedStruct InstancedStruct1;
UPROPERTY() FInstancedStruct InstancedStruct2;
UPROPERTY() FInstancedStruct InstancedStruct3;
};
// DataConfigExtra5/Private/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.cpp
FString Str = TEXT(R"(
{
"InstancedStruct1" : {
"$type" : "DcExtraTestSimpleStruct1",
"NameField" : "Foo"
},
"InstancedStruct2" : {
"$type" : "DcExtraTestStructWithColor1",
"ColorField1" : "#0000FFFF",
"ColorField2" : "#FF0000FF"
},
"InstancedStruct3" : null
}
)");
This is a lightweight alternative to UE instanced sub object and a perfect candidate for lightweight data polymorphism. Expect to see its usage more and more. See:
In a previous post we documented how to take advantage of UE headless targets. In this release we added a page on how to build and run DataConfig headless targets and commandlets. See: Advanced - Automation.
We've also amended docs on advanced topic like FDcPropertyConfig
and Type Coercion.
DataConfig 1.4 is a small release to support UE 5.1. If you ever deal with JSON in Unreal Engine, give this a try!