Realtime tweaking - UDataAsset reference Vs Component memb

Hi all,

We are facing an issue with in game tweaking.
Our designers want to be able to tweak our character parameters (speed, max health, etc…) when the game is running in editor. We have provided them a way to directly tune parameters in the Components of our character (by creating components directly in C++), it’s working fine.

But (because of course there’s always a “but” !) they now want to be able to save the changes they made and since they are working on an instance of the character blueprint everything is lost as soon as the engine is stopped.

We came to a solution where we use the UDataAsset system. We have pointers to specific dataAsset child classes inside our components. This allow our designers to only tweak the DataAsset directly in runtime and they are able to save it whenever they are pleased with the result.

We do have questions about the way this will behave for loading for instance when using a packaged build.

  • We assume that when we only use parameters inside the component it will be faster to load everything in memory thanks to the facts that every bit of data is packed at one place. A lot of disk acess at several location ?
  • Maybe there’s also a way of addressing our problemetic (beeing able to replace the blueprint values by the instance ones) ?

thanks in advance for your time !

Any update on this one?