[Request] Data Table variable type

I’m currently working on a dialogue system and I thought it would be great to try Data Tables since parsing is built in to UE4. problem I am encountering is that there is no way to dynamically change Data Table that is used by Get Data Table Row node in Blueprints. I would like to dynamically assign Data Tables so I can easily manage my dialogue. Having 1 CSV for entire game’s script would be very difficult to maintain.

It would be nice to have Data table variable type or some other method so I can dynamically assign Data Tables.

(no option to Promote to Variable)

Hey Spade,

I have entered a feature request in our database for developers to consider. Thanks for feedback!

Hi ,
is there any news on DataTable-variable / dynamic DataTables front?

I’ve built a very nice dialogue system over last few months but I am a bit stuck with using a single gigantic table for whole game.

It would be great if this request could be prioritised a bit higher - There are quite a few people having this issue, scattered across forum.

Thank you very much!

Hi Spade,

did you find a workaround for this problem?
I’m having exact same difficulty.

Hi Joachim,

No update on this yet. I’ve upped community interest on request (UE-2847) and I’ll post here if it’s implemented at any point.

You mention there’s a number of people requesting this; can you point me to any links you’ve found to verify, so I can include them with request? Thanks!

Update: moved to UE-23282

I also need this feature!

Just found these. I also urgently need this feature in near future. So have DataTable Variables and be able to also store them inside other Datatables. Really important feature.

For now, you can use some C++ to load dynamically table.
You will have something like this :

m_dataTable = StaticLoadObject(UDataTable::StaticClass(), NULL, path);

With ‘path’ something like ‘/Game/DataTable/MyDataTable’.
Once it’s done, you can access datas with GetTableData() function.
It will give you an array of an array of string. Since you cannot use that in your blueprint directly, you just have to create a function to get a specific row. It should be something like that :

TArray UDynamicDataTableLoader::GetRowDatas(const FName& rowName)
FArray<FArray> datas = m_datatable->GetTableData();

 // Stuff to find row

return (datas[row]); // or TArray<FString>() if not found

So now, you can access your datas but you will have everything as a string. I recommend you to create a blueprint that will ‘parse’ and represent row by getting string datas and give access to typed variable.

Sorry but I don’t have time to make it a plugin. If you have some question, do not hesitate !

Good luck !

i need this too

I also need this!

look like i need this too :o

It’s important for me, please.

Same here. Could definitely benefit from this.

Would love to see this

i have to add my voice as well :slight_smile:

there’s even more people in forums:

and more…

Me too!!! Working on “off-line” language learning apps with huge amounts of data with multiple dialects!!!

I need this exact thing. Data driven systems can really benefit from this functionality.

It has been one year and a half. Nothing new about such a feature? It would be more than useful, it would be a life and time saver. Thanks!

There is currently no update on this issue at this time. Our developers are currently focusing their efforts on crash and showstopper bugs. However, I will continue to provide updates as they become available.

Have a great day

changing a DataTable variable at runtime would change its struct type, which would break any connections that output node was connected to.

if you want to break up your games dialogue script into separate databases,
you could just place dialogue data directly into level actors, like NPCs or signs. or you could make a dialogue actor that you spawn whenever you start a conversation or enter a cutscene, and that actor can contain all of dialogue needed for that conversation.

or if you want to use data tables for dialogue, and you want many writers working on separate spread sheets, you could always merge those spreadsheets in open office, to produce final spreadsheet that UE4 uses.