Runtime DataTable - Import/Export text CSV or Google Sheet at runtime and auto-update structs and UObjects!

Honestly I’m not super adept with it either. I know that in C++ you have much lower sizes for individual items. The overhead of BP means a lot of extra data being replicated. I’d go the C++ route if possible, plus you can use array slicing which reduces server memory usage.

Fast TArray Replication is fantastic, but it’s just a way to speed up the replication and has nothing to do with size constraints. If you can’t disseminate the CSV itself to the clients and let them build the struct data locally, then your only options are to trim as much data from the struct as you can, replicate in chunks, and/or rewrite your replicated actor (or create an actor component) in C++.

There used to be “MaxArraySize” and “MaxArrayMemory” or something to that effect in the project settings but I can’t seem to find them now. They would allow you to set the max chunk size. If all else fails you can take an extremely unsafe route and subclass UNetConnection in C++ and call SetUnlimitedBunchSizeAllowed, but you open yourself up to attack by doing so and possibly self-sabotage, especially on end user machines with limited throughput.

I was trying to replicate variables and thus, receiving this error.
Now using RPCs, it seems that it is solved. All other stuff I am still using, like splitting into smaller arrays and so… Thank you Jared and again, congrats on your plugin. Been using for about 2 years now

Hello @JaredTherriault,

Do you offer a product that supports UE Bultin Datatable Runtime CSV Import/Export?

My situation is the Ability System InitStats{} Function requires a Datatable Input. I’m updating Local CSV from GSheets and need to update the UE Datatable prior calling InitStats{}. I could use the feature in other situations as well.

In my opinion, an ideal feature that ‘fits’ perfectly with RDT, but if exists in another one of your products please advise. Thanks in advance.

I’m glad you got it sorted Ricardo! I wish you the best of luck on your project!

1 Like

@TechLord thank you for your question! At present the plugin does not actually function with Data Tables as they exist in the engine but rather is a custom solution. This is a function I would like to add in time as my need for it becomes more present, but I don’t have the time right now. When I do add it in the future, it will be included in the base plugin for everyone who owns a copy.

In the meantime, I’d recommend a plugin like this one: https://www.fab.com/listings/2f7e1f6c-2bd9-4950-ae28-8d1e2ef95971

You can still pull in data from Google or another CSV and and it row by row to an existing data table using a combination of RDT and a plugin like this!

Fill Struct array with RDT → Foreach on struct array → Per struct instance, add row to data table with a plugin like the one linked → use datatable in ability system

I appreciate the rapid response and recommendation. Its better than what I had in mind. ACQUIRED.

Crap is for 5.2, hopefully it will update 5.4, 5.5 with ease.

Thanks Again

Update Failed :frowning:

Acquired the asset per recommendation. Unfortunately, the compilation for UE 5.4 failed with numerous errors.

Out of desperation I acquired this asset https://www.fab.com/listings/39fd3250-7a95-4d85-bbd2-10afdcbb0a86

I apologize! I was on mobile and didn’t check the supported versions. Indeed, there are a few options for that on Fab, I’m glad you found one that works! Let me know if you need help interfacing the two.

For users looking for a 5.5 version, it was approved over a week ago but has not appeared in the launcher yet for some reason. I have contacted Epic about this. If you need a 5.5 version right now, please contact me and I’ll send the source over, but you will need to build binaries on your own.

I will update this when Epic resolves the issue.

This situation should now be resolved! Thank you everyone for your patience!

Hello @JaredTherriault.
First of all, I want to say that your plugin is very good.

But I have a problem)
(UE5.2) (Plugin last version)

I have (Google spreadsheet):

but when I get a response from the plugin, my (Array structure) is filled with the last index.
That is, the entire structure is filled with information from the last line (Google excel).
That is, I always get (UserID = 2), as you can see in my table

It’s strange that this only happens with this (Google excel). I used another one, everything works as it should, now I don’t understand what’s wrong )


LogFile:
Log.txt (13.6 KB)

SOLVED!
I didn’t structure the table correctly in Google.
Needed numbering in (0 indexes) and leave empty (1 first index in the document)

Hi Nizami_Nz!

I’m glad to figured it out! To add some context, the reason this happens is because the sheet is parsed into a map using the “keys” from the first column. This means each item in the first column must be unique, and if they’re all left blank then each row overwrites the previous when it’s parsed.

1 Like

Hi there,

I’m interested in purchasing Runtime Data Table, but have some questions.

I’m looking to dynamically import a set of audio files at runtime (either through a CSV, or by selecting them in the file explorer). I don’t need to import the files themselves, but I need the following information inside a data table:

Row Name = file name
FilePath = the path of the audio asset
MetaData = the audio asset’s metadata

The table might have 500k to 1 million+ entries in it. Once the strings are imported into the table, I need to do things like search through the table based on a keyword (string) and filter the results (either into another data table, or an array).

I then need to select a random row based on my filtered keyword results.

Is something like this possible? What do you think the speed of the lookups would be?

When loading a CSV file from disk, does it open a file explorer window that allows me to select the CSV file?

Do you have a discord? :slight_smile:

Thanks!

Hello davidvitas,

what you’re looking to do here would be supported by the plugin, and using a hashed FName lookup (default) there shouldn’t be any perceived performance impact even with a table this large.

Runtime DataTable’s strength is in Google Sheets compatibility and in automatically converting imported data to other types. If you’re just using strings and local CSV files, I’d recommend using easyCSV (https://www.fab.com/listings/e31b9546-919b-4243-9bf3-b3ff854d05eb) instead. Runtime DataTable can do everything easyCSV can and more, but for your use case you really only need a CSV parser and lookup table.

There is no file explorer built into either plugin, but many solutions do exist for this already (https://www.fab.com/search?q=file+explorer).

No Discord for me, I really don’t have time to manage one. But feel free to contact me here or by private message and I’ll be happy to help.

Thanks for the quick response, everything sounds great! I just purchased Runtime DataTable and went to download it from the Epic Game Launcher. Unfortunately the download failed with error code: MD-0011-0 (see attached screenshot).

I’m on Mac OSX Sonoma (UE 5.5), and it does say Runtime DataTable is supported on Mac. How can I fix this?

Thanks David! This isn’t something I can directly help with though unfortunately. It’s not a question of platform support (though RDT is supported on MacOS) it’s a launcher issue.

If you’ve updated the launcher and it still won’t download, I’d recommend contacting Epic with this. This is a bug in the launcher. Usually an issue with content delivery that resolves itself in a number of hours, but if it persists it needs to be brought to their attention.

That makes sense. Just confirming that I did reach out to FAB support, they fixed it up pretty quick and I was able to download + install the plugin successfully. I’ve already implemented it and it’s great! Thank you :slight_smile:.

1 Like

Hey Jared,

Me again :slight_smile:. I’ve been working with Runtime DataTable in Editor, UE 5.5.1 + MacOSX Sonoma (PIE and Standalone). I’ve been using a hardcoded path for now for testing.

Everything works great in editor, but when I go to package my game for Mac using either Shipping or Development builds, Runtime DataTable doesn’t work.

There’s always an error: Error: MakeCsvInfoStructFromFile: Unable to load the file specified.

Do you happen to know why this would happen, or how I could fix it?

Thanks.


Screenshot 2025-01-24 at 3.18.34 PM

Hey david, usually the game doesn’t package the file along with the rest of the game. Generally speaking, where is your csv saved?

I ended up figuring it out actually. It had nothing to do with Runtime DataTable or the CSV file.

I’m using an open file dialog to open my CSV (the file dialog just gives me the path to the CSV for Runtime DataTable to work with). On Mac, they’ve locked everything down so you have to go into your UE project entitlements (YourProject/Build/Mac/Resources) and add the following key:

<key>com.apple.security.files.user-selected.read-write</key>
	<true/>

This allows the packaged UE app to properly see and work with the file(s). Wanted to share this for anyone else that happens to have this issue. It took a while to figure out. :laughing:

1 Like