Show Configuration Children in Properties

As a Roblox developer, it is currently too hard to configure custom properties of objects in the game.

The Configuration object is meant to store *Value objects for configuring things. What if selecting a Configuration let you modify its children in the Properties window? It would make things super-easy to modify and configure in Studio, and give an overview of an object’s configuration all at once.

If Roblox is able to address this issue, it would allow me to configure custom properties much easier, and allow me to set up easy configuration for others.

3 Likes

Support - I just realised how useless Configs are aside from their unique icon lol

Also come with custom properties too? thx

1 Like

IIRC @Tiffblocks mentioned something about being able to use tags with values, which could in turn be used for custom properties.

2 Likes

Hmm… I think to do something of this nature would be a bit far fetched considering the rest of the API we have. That said, it’d be cool, but it’s such a minuscule quality of life change for me that I wouldn’t mind either way.

Generally when I write configuration I tend to store values via module. Maybe you could write a ModuleScript and use metatables to sync the module’s properties to the Configuration object’s properties.

Code example
local Module = {}
local Meta = {}
local ConfigObj = nil --Assume this is some Configuration object rather than nil
local KillsValue = ConfigObj:WaitForChild("Kills")
setmetatable(Module, Meta)

Meta.__index = function (Table, Key)
    --Whenever you grab a property, return the property based on what Key is:
    if Key == "Kills" then
        return KillsValue.Value
    end
end

Meta.__newindex = function (Table, Key, Value)
    if Key == "Kills" then
        KillsValue.Value = Value
    end
end)

return Module

This feature request does not involve Lua or the API. While the Properties panel would show the configuration items, you would not be able to do Configuration.ConfigItem = 5 in Lua. This is only a change to the Properties panel, not the API.

The metatables thing is a good tip, anyways, but it does not solve the issue this feature request addresses. This feature request addresses only manual editing in Studio, not programmatic editing by script.

I see, yeah. That’s what I gathered, hence why I had the idea of metatables because you could just store the module instead of the actual configuration object. But yeah, otherwise I think it might be an intersting change.

I would honestly love to see something like this. I recall @spotco comparing SoundEffects in Roblox to components in Unity. Being able to see component-like object properties being listed in the property window of their container object would indeed be very cool to have.

2 Likes

We’ve been talking about this and related ideas for a long time, but have never taken action on it. Do we still want to encourage the use of value objects, for example? How useful are panels like this if you can’t have scripts behind them that let you see the results immediately? It doesn’t make that much sense to be editing stuff in play solo, because it won’t be saved. The only way to get the best of both is using a plugin, which can render its own UI anyway.

1 Like

Support. I’m working on a configurable public model right now and this would help a lot.

It’s on my to-do list for the near future to get the Studio’s properties panel to provide convenient access to value objects that are children of a module script. The use case for this is so you can have something like, say, a camera control module that has a lot of adjustable parameters (primarily number value objects) as children, and not have to click on them individually. Instead, they’d show up as a group in the Properties panel. I can’t make any specific promises regarding extending this to more than just scripts, as that will have to be discussed and approved, but if there are good use cases, I’m opening to hearing about them and looking into whether they would be easily rolled into my changes, or would affect data types that would require enough extra work for it to be a standalone feature.

5 Likes