As roblox grows into a platform using more and more different types of media, it would be a really neat feature to allow Roblox Studio powerusers to optimize their workflow with different Window Layout tabs. I’ve seen this in a couple different programs, but the one that really made me consider it as a potential candidate for Roblox was actually Blender.
Blender Workspaces
If you haven’t heard, Blender released a new beta update that now has different layouts depending on your workflow. Here are a couple screenshots to demonstrate what I’m talking about:
This works very well for Blender because there are so many different options, keybinds, and shortcuts that new users would never have been able to stumble upon them by themselves in the old UI, let alone learn how to use them.
Why Roblox Needs Layouts
Though roblox may not be quite as vastly complex as Blender, there are still lots of reasons why changing the layout of roblox with a click of a button would be useful.
For one, everyone knows about the dilemma regarding plugins - Disable some, or this happens:
Nobody wants to have an overcrowded plugin bar, and for the plugins that use widgets, there’s even more demand for screen space.
Here we have my usual setup for editing. It allows quick access to the Viewport, Output, Object browser, Terrain Editor, really anything I need on a regular basis.
The problem is that I can’t use my plugins without using a tiny little window down in the corner. For instance, I have to scroll for pretty much every plugin I use, and sometimes the windows conflict.
Take this Foliage Brush plugin as an example. I have it set to the same panel as my Workspace so I don’t have to scroll so much. Unfortunately, I need to switch to different tabs, and it makes for an awkward workflow when I set the Active Selection for the plugin since the selection is made through the explorer.
Not to mention, when the crowded plugins bar each make their own Plugin Widget:
Most of those have been scaled down so they can actually fit on the screen. But my point is that, to save time and screen space from unnecessary windows and having to adjust the screen layout for different tasks, implementing layouts would help optimize workflow, planning, and game quality.
API
As for the API, it’s a little hard to say exactly what is necessary since many people’s plugins may have different needs, but from what I can presume, here’s what I’d suggest
- Some event that fires when a Layout is changed, returning a Layout ID that can be used to identify the layout even if two layouts have the same name
- API to create a layout based on something visual ideally, maybe a gui with placeholders or something
- With the new ViewportFrames, it would be a nice feature to dock a Plugin Widget in the center of the screen to, for instance, isolate a model or an animation rig for editing
- As opposed to ViewportFrames, perhaps Workspace ‘Layers’ like Blender has (but that’s a different topic)
- Saving / Loading layouts as XML
- Creating new layouts based on Presets or current layout; Blender already has this here’s what it looks like:
Implementation
I think it’s important to provide some visual feedback on what I’d expect if I were a newbie to Roblox Studio, so here’s a quick ‘Sketch’ of what I had in mind
I’m sorry but I cannot sketch lol
But a couple of the tabs I would suggest are:
- Building
- Scripting
- UI Editing (No parts from workspace in the background, just the gui)
- Terrain Editing
- Animaton Editing
- Asset Manager (focuses on instances in the game, Game window, Devproducts, etc)
- Object Browser
- Datastore Editor (Plugin)
- Media Editing (So like cutscenes, “Renders,” etc)
Conclusion
Alright I this is the last subtitle I swear, but that’s really it, I think all those topics are used in the development of each high quality game on roblox (except Terrain if they don’t use it) but I think adding layouts would really change workflow for all developers and ultimately make the quality of games better since you’re not spending an hour searching the crumb-sized button for a plugin you can’t figure out how to deactivate.
Summary:
- Layouts contain window placement and size
- Navigate Layouts with tabs
- Let plugins make new layouts
- Let plugins know when the active layout changed
- Add a scrolling bar to the bottom of the plugins window so we can have full size icons, seriously
Thanks!