on February 28th, 2024 (opens in a new tab)

WIP work and experiment on SaveGame support

Runtime: Fixing an issue with clamping (opens in a new tab) f3a555f (opens in a new tab) A case was happening of

  • InitDataTable was called with a Datatable and BaseValue of 1000, with 0 for Min and Max value
  • One property was clamped via FGBAClampDefinition and Property at 100 max
  • Then datatable logic kicks in and sets the BaseValue to the value defined in the DT, overriding previously clamped value (from property)
  • we would expect here the value to remain at 100

WIP work and experiment on SaveGame support (opens in a new tab) b3fa4e0 (opens in a new tab)

This time using a USaveGame object created with the standard CreateSaveGameFromSlot, LoadGameFromSlot, etc.

SaveGame has a BinaryData array of bytes (TArray<uint8>) . Serialize called with an Archive baked by this array of bytes on Actor and its ASC.

ASC in the test setup implements Serialize with:

	Super::Serialize(Ar);
 
	if (!Ar.IsSaveGame())
	{
		return;
	}
 
	// SerializeAttributeSets(Ar);
 
	const TArray<UAttributeSet*>& AttributeSets = GetSpawnedAttributes();
	for (UAttributeSet* AttributeSet : AttributeSets)
	{
		if (!AttributeSet)
		{
			continue;
		}
 
		AttributeSet->Serialize(Ar);
	}

Refactor: Use UE_VERSION_NEWER_THAN macros (opens in a new tab) 99215dd (opens in a new tab) to compare engine versions


Runtime: FGBAUtils prefer dll export on methods (opens in a new tab)

Runtime: Add FGBAUtils::SerializeAttributeSets (opens in a new tab) for backup. not actually used right now and not dll exported

Runtime: Move serialization helpers (opens in a new tab) into their own Blueprint Library

Runtime: Move exec calculation helpers (opens in a new tab) into their own Blueprint Library