DataTableRowHandle to Get Data table row: Only literal data table is supported

i think in the Merlin/Gandalf example, you should probably combine your spells into a single data table that every character uses. accessing data tables is less high maintenance when data tables are used on categories of things, rather than instances. so its fine to have a datatable of character stats, but you shouldn’t have a specific data table for each character.

so if you have more than one data table that use the same struct, they should probably be combined into the same data table. Merlin can be given an array of names that represents his spell collection, and his spell data can be looked up in the same spell table everyone uses for all spells.

data tables are data oriented, rather than object oriented, so you should not think of data belonging to a specific object, like Merlin, but instead, think of data as belonging to a general functionality, like spell casting.

using data tables this way, allows you to quickly create new characters that combine the spells of Merlin and Gandalf, so you can make a shape shifter like Shang Tsung from Mortal Kombat or Mokujin from Tekken, who can use any move in the game, and you can make custom character editors in your game, which allows you to choose moves from a global list, like the create a skater from tony hawk games.

when you separate data from specific class hierarchies, it gives you alot of freedom and modularity, where any character can perform any move, and any weapon can fire any projectile. if you take it a step further, and stick with data oriented design, Merlin and Gandalf should not even be specific actors or objects, they should just be rows in a character Data Table.

so instead of spawning a Merlin Actor that looks up Merlin_Spells, you should spawn a generic character, and pass it a character name, like Merlin, so on begin play, it can look up a list of available spell names from a CharacterSpells data table, then combine that list with collected spells, by loading a SaveGame.