Uses for custom Studio widgets

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: https://trello.com/c/dWGGWgqK/127-allow-plugins-to-create-custom-studio-widgets-xxl

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)

11 Likes

First thing that comes to mind is this:

3 Likes

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.

2 Likes

What would said plugins be used for, specifically?

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!

4 Likes

Please also include context menu options.

Studio widget uses:

  • Instance counter without having to be a GUI
  • Utility plugin (which can insert scripts and such)

Most of the other uses are just replacements to not using a GUI for it.

For context menu options, there are several use cases like adding different options to instances or making it easier to insert scripts and such.

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:

It would also allow for plugins to look more professional.

Personally, I would love to use it for modifying the current studio UI to fit my own personal taste and implement things I would find handy :stuck_out_tongue:

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.

13 Likes
  • Plugin menus of with such variety as far as the eye can see
  • Listing toggle-able visibility groups for objects similar to that of the Hammer editor
  • Faux property menu for editing user-made properties (e.g. in the form of [string, int, etc]Objects) in objects
  • Notepad
  • Custom output text colors/font/filters
  • Faux script editor with custom syntax highlighting/contextual automatic code completion rules
  • Minimalist Studio layout if we can modify the stock Studio widgets

Plugin-specific menus alone would make heavy use of this feature, for example:

  • Building assistants (F3X, SBS, [q]CmdUtl, etc)
  • GUI creation/editing tools
  • Anything involving the editing or analysis of scripts (linters, compilers (e.g. Moonscript), precompilers (macros, conditional compilation, etc), minifiers, automatic formatters)
  • Animation/terrain editing tools

This is a feature that can spawn a huge sea of use cases.

  • Widget that covered viewport (different tab in the same area) that contained built-in Trello interface for projects
  • GUI editor widget with custom properties that update in real-time (doesn’t make sense to make a GUI editor out of a GUI since it can cover the GUIs you need to edit)
  • 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
2 Likes

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.

4 Likes

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.

2 Likes