[Conception] Better solution between DataTable , Data Only Bp and DataAsset

DataTable was originally made to imported table data like csv files and historiclly ever since UE1 classes (regardless if UnrealScript or C++) always been used as main property storage and making empty classes with data layering over each other was always standard practice… specially that there was no DataTables at all. For some reason in UE4, they become considered main storage of static data as Everynone implied. Sometimes overused for no reason, like storing list of levels, while you can make data asset with simple array, or even better make a world settings storing information of next level (In most cases probably because people don’t kwno you can do that and requires C++, but oyu can still make some level playlist class ;]).

So in general properties (not only data-only BP, but also data assets and in general settings properties like world settings) are always better to store information in UE4, regadless if it static of not, there no better example of that the… all assets you see stored in content browser, they have a lot more benefits

-They a lot easier to access don’t need to parse thru the table, don’t need to create as you can read defaults and you can use data assets that are already a objects in asset registry

-Data Assets (Well classes too if you read from defaults) in perticilar are a lot easier to reference via they are visible as objects, while in Data Table you can refrence only entire table and you need to use keying to reference anything

-In BP classes in perticlar, you can use benefits of inherence. If you don’t override specific property in sub classes, if you change in it parent class all sub classes will automatically inherent that

-They are properly serialized to byte form of respective used types, so inherently they better for processing in UE4

-DataTables have limited types while in properties you can use any type that UE4 has to offer.

Only benefit for DataTable that i can think of and probably main reason why people use them so much is proper out of the box table editor for asset that stores data, while data asset just use generic property editor where data can be show as table. Also data assets require C++, so data storing blueprint is only option if you don’t want to use C++… but come on declaring properties in C++ is super easy and thats all you need to do ;p But you can still use blueprint classes option

If you don’t know about data assets:

Data assets are actually shortcut for creating proper asset types, which requires to make UFactory and AssetActions

1 Like