Godot-proposals: Multi screen support for Godot editor

Created on 5 Sep 2019  路  11Comments  路  Source: godotengine/godot-proposals

Describe the project you are working on:

I am working on a simple platformer game Mario clone right now just to learn how to use the engine.

Describe how this feature / enhancement will help your project:

My set up has 2 monitors with possibility of expanding in to 3 in a future. I would like the ability for Godot editor to have multiple un-dockable windows I can move around on my set up. Ideally I would be able to save configuration as a preset. This would make task of switching between room editor and code editor significantly easier. I could also have my inspector open in another screen without taking my monitor real estate.

Generally it would help me to have more things visible without needing to keep switching between them. I could have player scene open on right screen and level scene open on 2nd scene. I could have parent object open in one and child in other so I can better see all the available functions etc. Possibility with this are endless.

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:

Example

I would see it working like here with Game Maker workspaces

Describe implementation detail for your proposal (in code), if possible:

I have not enough coding experience to give technical knowledge on how to accomplish what I request but I expect this would require significant rework to editor code itself.

If this enhancement will not be used often, can it be worked around with a few lines of script?:

This is enhancement that I would use 100% of a time while working on any project as it would help me to utilise more of a real estate I have in my current set up that is now just wasted space.

Is there a reason why this should be core and not an add-on in the asset library?:

It is something that majority of users would find useful it is a feature requested since Godot 2.1 days and if not in use would not interfere with single monitor workflow for others.

Bugsquad edit (keywords for easier searching): window, pop out, popout, pop up, popup

editor

Most helpful comment

Hoping to be able to implement this for 4.0. The Vulkan back-end already supports multiple windows on the API side, but it needs to be implemented on every bakck-end. It will be quite a challenge, though.

All 11 comments

Hoping to be able to implement this for 4.0. The Vulkan back-end already supports multiple windows on the API side, but it needs to be implemented on every bakck-end. It will be quite a challenge, though.

I can imagine it's going to be a lot of work. 4.0 would be great timing and would definitely improve usability of the engine for many people. It was a thing I missed the most when I switched from game Maker 2

I like the idea. However I would like to be able to popup the editor window from the main editor.
I want to be able to see the scene and to edit its script at the same time but from different windows.

I've occasionally thought about consequences of multi-windowing like this.
I wrote a list of situations, which progressively influence the next ones as you read it so don't take all items as granted.
Although the following list isn't aiming at something like GameMaker workspace, it its more based on the way Godot works today, and how it could be expanded to multiple windows without too much work:

  • Main screens should be able to undock, like the script editor which is requested very often. This include main screens added by plugins. This should hopefully be seamless because they remain "containers", whatever is inside, behaving more like tabs than fixed buttons.
  • To be clear, there would still be a single instance of each editor, just located within a user-defined window. If we want multi-editors like two script editors open at once, that's a whole different beast and IMO shouldn't be added to that rework (or would be something to be dealt per-editor-plugin, or done as a complete rewrite of the editor, maybe Godot 5.0 or 42.0).
  • 2D and 3D scene views being considered "main screens", if we assume them to be separately undockable, it would allow to make them both visible, which has quite a significant effect:

    • When a node is selected, there is no need to switch them since they are both visible

    • Since those screens show the scene, it forces us to duplicate the scene tabs, which could be confusing.

    • Should 2D and 3D remain actual "main screen containers"? Could they actually be a "mode" of a single usage-unified "scene view"?

    • Still due to the scene tabs duplication, would that spark the idea of having more than one scene selected? At this point it's probably easier to remain with a single selected scene, and consider 2D and 3D are not undockable, so plugins should be able to decide if their main screen can.

  • Should scene tabs be duplicated? Should they remain on the "main window", leaving all secondary windows without scene tabs?
  • Should the left and right menu bars be only present on the main window and not present on secondary windows? Likely, they should remain on the main window with the scene tabs, so editor plugins can decide what secondary windows contain (depends wether or not the window is standalone or managed by a dock system, see later below).
  • It would be nice to be able to undock the shader editor as well, which is however not a main screen.
  • Docks should be... undockable.
  • Popups like Quick Find, Find in files, Project Settings or messages would have to open on the focused window, even if the editor they relate to isn't in that window. For example: windows opening with a global shortcut. Moreover, they could even open as separate windows themselves, and be free from the limitation of being constrained within the viewport.
  • Modal popups like export, baking or scene loading need to lock ALL the windows, or change in such a way they don't have to lockup the whole editor.
  • Closing a window should move the editors inside it back to their default location, or be closed if they have such functionality.
  • Pretty obvious, but there should be a "main" window which will hide all the others if minimized, and close Godot if closed. It may also be important to decide whether a window has a place in the taskbar or not.
  • The need for contextual shortcuts might become more apparent
  • From what I gathered above, it seems editor plugins would have to simply decide themselves wether or not their editors can be undocked as separate windows, which they would be able to manage themselves.
  • At the same time, being able to dock two editors together within a separate window could be interesting. This hints an improvement of the "dock system" to make it aware of multi-windowing that editors like Unity, Visual Studio or Blender have. I've seen two main approaches so far:

    • The main screen+docks approach, which is what Godot or Visual Studio is doing so far, and I think it's a pretty good one but I've rarely seen it with multiple screens, where usually one of the windows is the main one and others are just combination of docks

    • The everything-is-docks approach, which is what Blender and Unity are doing. This is the most generic and flexible approach but it can be messed up if you aren't well organized (note I'm not referring to usability, Blender is awful with his hidden drag handles and Unity is more intuitive but the idea remains the same).

  • On the technical side, the renderer should not need to redraw all windows just because one changed. That would also mean all windows could have an update spinner (if managed by a dock system).
  • The list may go on :D

With these things taken into account, the concept screenshot becomes more like this:
image

Since doing this can be quite a lot of work, splitting it in phases could help transitionning to this:

  • First, have ability to manage multiple windows, at all. A solid API needs to be defined before we can affect the editor with it. Create windows, set their types, how they behave with the OS, assign them a viewport. That would be for 4.0.
  • Second, use that API, and have ability to undock single editors (like the script editor). That could be done for 4.1.
  • Later expand on other methods to organize such editors on screens with a more generic manager. Have a dock system such that popped out windows have common editor controls rather than being single editors each.
  • Eventually completely rewrite the editor in version 42.0 with a new design to take better advantage of the new core features since the way Godot works today inherited a lot from the days it was more limited

I think it is a feature that we all need but something that should be improved is the UI depending on the workspace we are using. For example, if a window has the text editor, it is not necessary to observe other buttons depending on another type of work or windows within that workspace.

+1 here for the multiple monitor support.

Just started using Godot and love the engine so far - but the lack of multiple monitor support (through whatever method) is a little frustrating. I'm constantly resizing windows to find stuff in the current layout. Personally, I'm a fan of floating windows.

With multi-window support now enabled for 4.0, does this make this proposal as-is redunant?

Partially fixed by godotengine/godot#37317.

Has someone already mentioned multiple 2D/3D view in this proposal? So that we can see different parts of the game at the same time? A bit similar to blender's multiview.

~Or even complete replication so that we can work on different scenes same time i.e, similar to running 2 instances of Godot editor with different scenes open.~ Seems like OP mentions this.

@Anutrix
image

I don't think those individual viewports were considered to become single windows though

I hope we can do this on 4.0, because I tried to use VSCode as an external editor to have the editor on another monitor, but the issue #10946 prevented me from using it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

WilliamTambellini picture WilliamTambellini  路  3Comments

lupoDharkael picture lupoDharkael  路  3Comments

WizzardMaker picture WizzardMaker  路  3Comments

Xrayez picture Xrayez  路  3Comments

Dorifor picture Dorifor  路  3Comments