Configuration GUIs

I was looking over the “Calling model makers!” thread, and one thing stuck out like a sore thumb:

Abiding by that rule, here’s what a model looks like:

Right off the bat there’s already two obvious weaknesses to this. It clutters the model and your only way of telling the player what those configuration variables are is through the name of the variable. A player might ask “What is the debug option?” or “What is field of view?”, and you’re SOL – there’s no good way to explain what those configuration variables are to the user.

Let’s take a peek at the nexus mod install window for Skyrim Immersive Creatures:

Not only does that have a description of the option (top left) the mouse is over, but it also has a picture that gives a hint as to what the check box does. This may not have much effect on something such as a health or speed property, but an image could make the world of a difference with an armor option. “Do you want the gold or black armor? Here’s what they look like.”

Novice developers, well, any person actually, would have a much easier time configuring models if they were presented with a GUI such as the Immersive Creatures install window over messy configuration instances cluttering the model. Models could have a “Configuration” table property that could be read from scripts:

Configuration = {
Health = 500;
Speed = 20;
}

and a secondary table only accessible by studio:

ConfigMetadata = {
Health = {“Description of configuration element”, 123456(ID of ROBLOX decal)}
Speed = {“How fast the zombie runs after players”, 123456(picture of zombie running)}
}

ROBLOX would then have a configuration core GUI, similar to the nexus installer pictured above that would take all the data from the Configuration property and ConfigMetadata and then display the variables on the right side, a description for a variable when you mouse over it on the left, and a picture in the bottom left (if the creator chooses to include a description/image that is) – to open this configuration core GUI, it would be it’s own property in the properties window:

It would be the first section in the properties window, and would have a (…) button like the old color picker to edit the configuration. Users could optionally right click > configure on the model as well. This would make the configuration process much more cleaner and professional.

I don’t exactly understand if this is what you mean (it sounds similiar) but I think it would be nice to have Variables inside a Configuration object which is parented to the currently selected object (script, model etc) show up in the studio Properties menu.

Similiar to how Unity adds global variables to the properties/inspector tab:

[quote] I don’t exactly understand if this is what you mean (it sounds similiar) but I think it would be nice to have Variables inside a Configuration object which is parented to the currently selected object (script, model etc) show up in the studio Properties menu.

Similiar to how Unity adds global variables to the properties/inspector tab:
[/quote]

I suppose that could work as well, having the health in the configuration automatically display in the “Configuration” section of the properties window; however, all that accomplishes is decluttering the explorer – there’d be no way to tell people what the properties did. Sure, the configuration GUI cleans the explorer a bit, but the main purpose is to make it easy to know how and what to configure. If you’re making a public model, you want it to be as easy to use as possible – that includes configuration. Right now, there’s no good way to allow configuring a model. Descriptions and images of properties in a configuration GUI would work wonders.

I could create a plugin that, when a model is selected, looks directly through it’s children for a container named Configuration. If one is found, it’ll put the contents in a GUI. If one is not found, it’ll check the children again but this time also the descendants and find the first script that has a table called “configuration” (non-case sensitive) and then puts all its values in a GUI. This way, all a player would have to do is select a model and a GUI would automatically appear showing the options for that model?

Perhaps ROBLOX might want to consider automatically publishing this plugin in later builds. (Providing I added an option to enable/disable the automatic popup.)

I had considered making a plugin for my models, as that’s perfectly doable, except that I’m going to submit something to the ROBLOX model thread which can’t have any external dependencies – none of those can, so no plugins for them sadly.

[quote] I could create a plugin that, when a model is selected, looks directly through it’s children for a container named Configuration. If one is found, it’ll put the contents in a GUI. If one is not found, it’ll check the children again but this time also the descendants and find the first script that has a table called “configuration” (non-case sensitive) and then puts all its values in a GUI. This way, all a player would have to do is select a model and a GUI would automatically appear showing the options for that model?

Perhaps ROBLOX might want to consider automatically publishing this plugin in later builds. (Providing I added an option to enable/disable the automatic popup.) [/quote]
I recall that Configuration objects were created for this very reason. Though it was a tool for online building rather than a plugin. Might be a fun project.

[quote] I don’t exactly understand if this is what you mean (it sounds similiar) but I think it would be nice to have Variables inside a Configuration object which is parented to the currently selected object (script, model etc) show up in the studio Properties menu.

Similiar to how Unity adds global variables to the properties/inspector tab:

[/quote]This sort of thing is something I’d love to see in ROBLOX.