Hello everyone! There’s been a lot of community support on the Trello board for plugins to gain the ability to create/manipulate Studio widgets: Trello
We’re discussing internally if we should do this, and wanted to know what this would be used for. So if you’ve got any specific examples in mind, let me know! (Feel free to private message me if it’s something you don’t want shared)
I’ve been developing plugins for my game team to use to author our world. It’d be pretty cool if it was better integrated with Studio; especially if there was a way to use listviews and other Qt controls.
Modifying game content that isn’t strictly building, like NPC stats or dialog trees. This is all possible using ModuleScripts or GUI though, so it may not be the best use. However, integration into the tab system would make it a better experience.
Most of the things I can think of can be implemented with or without, honestly. I bet we’d see a ton of creative uses for it, of course!
Also worth mentioning that most productivity type UI controls can be a pain to do properly with just GUIs. Qt already has nice ones with familiar behavior.
Using it to modify the explorer and properties window could allow for defining custom Instances with custom properties allowing for modifying complicated stuff much more easily. Like, coding a hat dispenser but instead of showing up as a model it shows up as it’s own type with a property which allows you to set the Asset Id for the hat you want it to dispense.
It could also allow for developers to add things that have been requested:
Just look at any existing plugin that uses GUIs. When you think about it, plugins using the in-game GUIs is nothing more than a hack to get around the fact that no interface to the studio UI exists. The terrain plugins? The animation editor? These should be built into the studio UI.
Every building plugin worth its salt requires GUIs because their interactions are so complex. I’ve written at least two[1][2] different toolkits to make up for the lack of existing widgets.
The problem with plugins is that they are backwards; they’re closer to the game engine than the studio. The studio wraps around the engine, and then plugins are contained inside the engine, occasionally extending an arm out to the studio. It should be the other way around, where plugins exist in the studio, reaching into the game engine when needed.
Crazyman32’s DataStore editor built-in to a studio widget
Custom explorer/properties window tailored specifically to me (custom properties I’ve defined for objects that the plugin will apply to the objects and has an area that adds settings located in model.Configuration if applicable so I’m not messing with ugly valueobjects, explorer that shows CoreGui, I can configure the sort order of, I can change the icons for, etc) and hides Configuration objects (no need to be visible since they’re displayed in Properties)
Custom “Advanced Objects” window that allows me to specifically filter to where it’s desirable for me, allows me to insert objects with custom default properties
Custom output window that filters unnecessary spam warnings like network connection blips, auto combines duplicate lines, allows me to click stack trace to open script, allows me to use a filter, etc
Apart from what has been mentioned already, I just want to emphasize I really want this to make plugins for script manipulation, automatic code generation, and jumping to certain parts of the script, etc. Right now we can make windows for that, but they’re restricted to the world view and can’t be seen when you have a script open, which completely defeats the purpose. We also don’t have enough control over the script view to accomplish those kind of things.
There’s some examples here from a post I made on the old forums: Plugin:MakePane()
Here’s the linked topic at the bottom thread. It’s rather long, but it represents another opinion on the topic so it might be worth reading. The link in the thread given doesn’t work since it was for the old forums. Scriptable popout windows
I just want to add that having a way to make custom Studio UI would just be super cool and would accelerate innovation all around. A lot of the really cool stuff probably won’t even come from anyone on the devforums; once you get that out there, people always surprise us with what they come up with.