When working with a large amount of data from external sources, it can become time consuming to build Data Assets for each row of data you have in a .CSV file. Using some editor scripting and a little bit of back end work, this process was streamlined to become a more efficient process. Not only does it ensure acurate data entry from your file to the Data Assets, but it allows you to do some basic housekeeping on these assets ensuring already built assets are kept up to date, and new ones added to the file are built from a single press of a buttonĀ 
This tool is broken down with a mix of Blueprint elements and C++ however, it can be fully made inside Blueprints should it be needed.

342 Cards all built in 40 seconds, and updated just as quickly when needed

The Editor Widget
This is the main driver of the tool, it contains all of the controls for building assets as well as the main body of functions that control how the data is handled.
The Code

There are some optional C++ classes added for this tool, this was done for both efficiency and to build my C++ knowledge, these are.

Custom Structure

This contains matching names to the rows found in the .CSV file, so when the file is imported to the engine, the file can be set correctly, the variables used in here range from simple bools to a heavy use of GameplayTags to aid with the modular design of the game. Any errors in the structure are flagged when you try to import the file so ensure row names and the variable type in use is set correct.


Custom Primary Data Asset

This contains all the variables used by the data assets, its similar to the structure above but there are some changes made, the main ones being was that for my game, not all cards are made equal. That being that creature cards need values such as hit points, spell cards do not. therefore it makes no sense to include a health variable inside the base data asset for all cards when not all of them will need it. Because of this the base card data asset contains shared values such as a summon cost, name, description and other shared details needed. The child classes of this parent (Creature and Spells) will then add in their own needed variables that are still found in the main DataTable but may not be shared with their counterpart.