How close is the Chooser plugin to production readiness?

Our team is using the Chooser Tables quite heavily in our production, but we’ve run into several bugs/missing features that we’d like to understand if they are planned to be addressed on the roadmap.

I took a look at the Unreal roadmap, and it says Choosers are “production ready”:

Even though the documentation for the feature still shows it as “Experimental” as of 5.7:

Our main issues right now are: (in order of impact to our project)

  1. Choosers get quite complex, and when we need to version/diff them (or even see what’s changed before submitting a CL), the diff shows as a text diff rather than something like the blueprint diff tool where you can see exactly which fields changed - as it stands now, the diff is basically useless since even a small edit to the chooser will result in the entire text diff getting rearranged
  2. Some chooser columns (like bool and float) allow for binding to a function on the input object, but other column types (such as enums or FGameplayTagContainer) do not allow binding to functions and only work with fields/properties - I tried to look through the source for why, and it seems like the property access logic for functions just doesn’t support some of the column types - is there any plans to make all column types have the ability to bind to functions on the input objects? It’s very useful and avoids boilerplate logic to cache values into fields, and its unexpected that different column types have different support.
  3. Choosers allow for returning multiple animation assets, but when you use this option, the “output” pin (e.g. how the Game Animation Sample Project returns a struct with motion matching settings corresponding to the selected animation) only applies to the highest rated/first match - my expectation here is if you are returning multiple animation assets, you’d get 1 output struct per chosen animation asset row (right now, outputs are 1:many with the animation assets, instead of 1:1 with the corresponding animation asset)

Thank you for your time

Steps to Reproduce

Our team is using the Chooser Tables quite heavily in our production, but we’ve run into several bugs/missing features that we’d like to understand if they are planned to be addressed on the roadmap.

I took a look at the Unreal roadmap, and it says Choosers are “production ready”:

Even though the documentation for the feature still shows it as “Experimental” as of 5.7:

Our main issues right now are: (in order of impact to our project)

  1. Choosers get quite complex, and when we need to version/diff them (or even see what’s changed before submitting a CL), the diff shows as a text diff rather than something like the blueprint diff tool where you can see exactly which fields changed - as it stands now, the diff is basically useless since even a small edit to the chooser will result in the entire text diff getting rearranged
  2. Some chooser columns (like bool and float) allow for binding to a function on the input object, but other column types (such as enums or FGameplayTagContainer) do not allow binding to functions and only work with fields/properties - I tried to look through the source for why, and it seems like the property access logic for functions just doesn’t support some of the column types - is there any plans to make all column types have the ability to bind to functions on the input objects? It’s very useful and avoids boilerplate logic to cache values into fields, and its unexpected that different column types have different support.
  3. Choosers allow for returning multiple animation assets, but when you use this option, the “output” pin (e.g. how the Game Animation Sample Project returns a struct with motion matching settings corresponding to the selected animation) only applies to the highest rated/first match - my expectation here is if you are returning multiple animation assets, you’d get 1 output struct per chosen animation asset row (right now, outputs are 1:many with the animation assets, instead of 1:1 with the corresponding animation asset)

Thank you for your time

Hey there,

I took a look at theUnreal roadmap, and it says Choosers are “production ready”:

Yes, Chooser are production ready. More features and capabilities are being added, but they have been used across multiple projects within Epic to great success. We recommend teams use them.

The diff shows as a text diff rather than something like the blueprint diff tool where you can see exactly which fields changed - as it stands now, the diff is basically useless since even a small edit to the chooser will result in the entire text diff getting rearranged

This has been requested a few times; we do have it in the list of work to do, but it just hasn’t been prioritized higher yet.

Is there any plans to make all column types have the ability to bind to functions on the input objects? It’s very useful and avoids boilerplate logic to cache values into fields, and its unexpected that different column types have different support.

We agree, there’s a bit of work here, but I’ve logged an issue against this.

my expectation here is if you are returning multiple animation assets, you’d get 1 output struct per chosen animation asset row (right now, outputs are 1:many with the animation assets, instead of 1:1 with the corresponding animation asset)

Yep, this has been addressed in 5.8, but you can get the fix from the mainline p4 CL: 50175083. There was a subsequent knock-on that also got fixed with CL: 51113059

Dustin

That’s great to hear that the multi-output issue is addressed!

It would be huge if they got diff support - that’s the single biggest issue for us, since many of our choosers are quite nested/deep, and over the course of a single CL, you may try a few things and it’s pretty hard to see what you actually modified in the end, or see what another team member changed.

It might be worth updating the official engine docs if they’re no longer considered experimental, since I know a lot of folks on our team were hesitant to use them, given the big red warning banner on this page:

https://dev.epicgames.com/documentation/en\-us/unreal\-engine/dynamic\-asset\-selection\-in\-unreal\-engine

Thank you for your responses.