Improving GDevelop usability

This idea have been discuss a while ago… (a year or more)

The thing for that you call a fix is a feature.

Confirmation dialog boxes break the immersion and fluidity in the application.
The edit window is already a dialog box… add a confirmation over another one, it looks like a habit from 15 years ago on a bad OS.

If you miss click you have to be more precise with your mouse and all change need to be done with your complete attention relative to what you trying to do.

The mousewheel allow to scroll in you list.
About the scollbar:
The scrollbar is moreover an element that becomes more and more useless, it remains and must always be visible to indicate a large area to scroll.
But its manual use is almost obsolete. Even more so with the age of touch.
The only people I see still using the scrollbar with the mouse are people 40 years old and older.
Your mouse has a scroll wheel, your keyboard has PageUp/PageDown

The fast iterating is a great thing, i’am not agree for destroy it because some users are not attentive.

As @Gruk said this is a feature, and this is the best thing to avoid a confirmation box and a great point for fast iteration.

A confirmation box is fine only when an action of the software is unrecoverable.
Like converting an object to a global object, same for groups, and when you want to close the application.

1 Like

Hmmm…I would say losing any/all changes to a sprite or another object is something I consider unrecoverable. Especially because many sub-windows are larger than their parent windows. (e.g. Piskel is much wider than the sprite object window, so if you accidentally double click save and close the piskel window, it could be picked up as clicking outside of the sprite object window).

I wonder if there could be an IDE option for “Request confirmaiton when clicking outside of a window to close” (disabled by default).

I know I’d use it.

4 Likes

Remapping the exit command to right click would satisfy both groups I assume

Something I’ve noticed is that the collisions editor isn’t very user friendly (for me at least). It’s hard to work with and I think it would be a lot easier to use if there was an option for a dynamic collision mask (not counting empty pixels as collisions), which would make it a lot easier for beginners to make platformer maps use a lot less objects which could improve performance for some users.

Just noticed this thread, accidentally posted it in another thread.

In the “find and replace” function, it works fine except for replacing whatever object is specified in "For Each Object.

Yes, I reported this issue already.
It also doesn’t work with other types, read here for more details: Text in event groups is not replaced · Issue #1716 · 4ian/GDevelop · GitHub

I don’t know if I am late, but I have a request. Improve resource management in GDevelop. I recently found a a bug where if you overwrite a file, it is not reflected in GDevelop. I tried to delete the resource from GDevelop, change the file path, (I am not sure if deleting the file and adding it again will work, most likely not), nothing worked. You can only reset it by making another file and adding it to GDevelop. This can be a nightmare for resource management. Maybe like “update file data” in the resource manager.

Another one is GDevelop able to delete unused file from project folder (Not only from GDevelop). As, it can be hard to find out which files are used and not used, it will be great if GDevelop did that by itself or atleast when the dev requests it to.

One more, putting files in folders according to file type. This is a small one, but can improve managing the files. GDevelop will sort files by image, font, audio, into different folders. It can be done by the dev, but it can get hard if it is a large project.

In my opinion, this can improve the usability of GDevelop when doing a large project or even small ones.

Thanks for reading

To update the image preview restart gd., and the changes in sprites are visible

1 Like

Just to clarify, this is doable today. Open the resource manager window in your project, right click anywhere on the right bar, and choose the remove unused items options.

That will remove it from your GDevelop project files (not your folder). If you want to remove it from your folder, use the “Save As” function for your project and save to another folder. Only resources listed in your resource list will be stored in the new folder, and you can then delete the old one.

3 Likes

It would be cool to be able to sort the debugger list by ms time taking to execute.

1 Like

Here few ideas on this mockup.

  • Icons for the viewport in the viewport (icons and UI come from Blender)

    • The lens is for zoom, it can work like Blender click and drag and drop the mouse, the camera zoom. The distance from the icon is the level of zoom.
      We can keep the old menu with right click.

    • The hand is for moving the camera in the view port, this replace the limited blue slider on top and left of the editor. (Currently limited to -5609 on X and Y), the button use the distance from the button to the mouse on both axes for move the camera.

    • Visibility panel, allow to hide and lock the selection by types of objects on the scene editor.

    • Camera icon, is for toggle the mask of the camera with left click

    • Grid icon, is for toggle the grid with left click, and right click open a small popup with options for cell dimensions and incoming isometric button.

    • Next icon on right, is for toggle the collision mask on visible objects.

    • Next icon on right is for toggle the points of visible objects. Right click open a popup for options, toggle the custom name, toggle the origins and the centers points.

  • In the object list

    • Folder is a folder ¯_(ツ)_/¯ (only for manage your project)

    • Bridge have a new icon on right, it is for prefab/extension object, it can be an object made in an extension. Read more on prefab/extension object.

    • The context menu have icons! Are you always looking for the most common buttons, because depending on the menu the button changes its place? Icons are more instinctive and faster than reading the whole list!

  • Properties panel

    • A properties panel should be show to you the properties right? When why not make the behaviors properties editable on this panel?
8 Likes

:+1:

Nice, hopefully tiled isometric map support gonna follow.

Huge yes on this. This is something that I’ve found incredibly useful on other engines, and would make using behaviours much easier.

1 Like

Also very exciting seeing this concept being given serious thought.

Nice mockup! :slight_smile:

  • A properties panel should be show to you the properties right? When why not make the behaviors properties editable on this panel?

Totally, but I would go even further, why not make the whole object editable in this panel? :slight_smile:
We could imagine having an option to show the object editor in this panel (with collapsible parts).

Some concerns to handle are:

  • is this more intuitive than a separate dialog? We must be sure users understand the difference between an object and an instance.
  • speaking of this, I think in the mockup there can be some confusion already. Are we editing the behavior of the “instance” (a new interesting capability by the way) OR the behavior of the object (that would make sense… but can be surprising because just before it’s the instance that you edit!)

In other words, I think there might be a better separation to do - we could for example show the behaviors and the object editor in the panel, but ONLY when you click on “Edit” button.
So that it’s clear “this is the object” and “this is the behavior”.

Note that we could have, like for “Instance variables”, some properties of the behavior that could be overwritten for each instance! That would be great, but also a new source of confusion so let’s try to get this right :slight_smile: What do you think?

Bridge have a new icon on right, it is for prefab/extension object, it can be an object made in an extension.

This is a good idea, when we’ll work on this kind of “Custom”/“Composite”/“Container” object, being able to quickly edit an object will be essential.
(Even if internally this is considered as an extension, this should be almost invisible).

In the object list

Overall agree on all of this :slight_smile:

Icons for the viewport in the viewport

I’m fine with this as long as we try hard to keep these icons simple & easy to use (i.e: avoid the “too many buttons” syndrom of most game engines/3d modeler apps).

2 Likes

I think it would only make the UI feel bloated and not very organised.
Personally I like the idea better to be able to edit the behaviour properties for the selected instance in the instance properties panel instead of allowing users to change object properties in the instance properties panel.

It would be useful so we can conveniently set initial values including the ability to enable/disable behavior in the properties panel / instance instead of using events. We would have to use events only if we would like to change something at runtime if certain conditions are met or in case we create instances programatically at runtime. Otherwise we can set everything in the instance properties panel.

It could work similar to custom size, we would have a custom check box to use if we would like to set custom properties for the selected instance only (could select multiple instances).
The box would be checked automatically if we change something. Alternatively, could make it so if the box is unchecked we ignore the custom values entered but that is not very nice (I have just noticed this is how it currently works with custom size, I think it should be changed and instead ignoring the entered value, check the custom box automatically if a value is edited.

When we change the properties of the object in the object properties panel, it would apply to all instances in the editor except the ones with the custom box checked, those would be ignored at the time we edit object properties.
In case we uncheck the custom box, the values of the instance would reset to the current object values.

In my opinion this workflow could be more organised and generate less bloat and confusion than allowing users to change object properties in the instance properties panel and also in the object properties panel for no real benefit. Better to keep them separated imo and keep the instance properties panel for the instances :+1:

That’s the idea, yes.

The principle is to eliminate the component dialog panel as much as possible, putting the properties of the object in the properties panel is possible, here how:

At the moment the property panel is reserved for the instances selected on the scene.
Let’s keep this functionality, it’s very good.
Let’s remove the automatic selection of the object in the object list.

By removing the selection of the object in the list when an instance is selected it gives the possibility to select an object AND an instance.

The selection of an object it is now possible, we can display the object properties in this panel!
It’s still intuitive, you want to modify an object select an object and modify it in the panel, you want to modify an instance then select your instance on the scene and modify it in the panel.

For the instances and their behaviors I didn’t think about overriding the values, I don’t know how doable or useful, the idea is appealing, this idea fit well in this logic of instance and object properties through the properties panel.

Here a new mockup for the properties panel:

On the left when an object is selected in the list.
On the right when an instance is selected in the scene.

  • Start with the Object properties on left:

    • First section is Animations, as this section take a lot of space with the images maybe my list of animation is not the best but we keep the button for edit animation in a panel!
      Once the animation sprites are added when it’s done it’s done, but maybe when we work on the eventsheet the order of animations can be wrong or we want change the name.
      As the trash bin icons can be missclicked on this panel and as the confirmation popup is a BAD thing, it’s interesting to mimic how the variables are deleted, first select which animation you want delete, two click on trash bin icon. (Or click on Edit animation and get the current panel or edit what you want like we can do in current betas.)

    • In the next section bellow there is the Object variables. Nothing more to said.

    • Next section is Object behaviors.
      The image is cropped but like the variables and the animations, there is a blue button for “ADD A BEHAVIOR”.
      There is also a button on the right of each behaviors for enable/disabled the behavior at the startup of the game. (Like suggest ddabrahim), maybe a similar button could be added for toggle the visibility of an instance and object.

  • On right we have the instance panel, when a instance is selected on the scene.
    It basically the same thing but with override system on variables, and why not on behaviors like you suggest. Seen the loop back icons!
    Here the Animations section is gone and replaced by the instance transforms.
    And the name of this panel change from Object Properties to Instance Properties.

This way of seeing the instances and objects is rather common.
Everything is also very quick to access, there is no hidden menu in a right click, or an edit button, or knowing that you have to double click on an object to edit it.

The main reason is as I said at the beginning, it’s to remove the popup panels, it looks old, people find it dangerous because they click next to it and so it cancels all the modifications.
If we correct a bad behavior of the users by a dialog box that asks for confirmation it’s also bad, it penalizes the users who use the backdrop click to cancel, and it breaks the workflow with a confirmation window, nothing better to waste time. Loosing time with confirmation everywhere because it’s a easy bad fix or loose every change because a miss click happend, or a better solution without confirmation and without missclick possible, and edits faster. My choice is done.

Having the object and instance properties in this panel is a non-blocking workflow solution and you have everything in front of you. Nothing hidden in a menu, nothing blocking with a confirmation, and nobody loses the changes made, it reduces the has-been popup panels, it’s more modern.
No one like the changes, i agree with that idea, but i think it for the best.

Unity, Unreal engine, have a properties panel that works with instances and objects.
Blender too.

I don’t know c2,c3, I was looking at it and it seems to mix the instance and object section in the same properties panel.

In each of these software there is no object panel like we have.

I haven’t seen anyone complain that it’s cumbersome and no one complain that it’s slow, but mostly no one wasting time with a bad interface like ours.

They are having something called an Asset Manager where you can manage all your objects, images, sounds, scenes, scripts…everything and use it in a similar fashion. You can create and store your base objects in the asset manager and then create instances of it in the scene by drag 'n drop objects from the asset manager in to the level editor or in to the Instances panel. I think It could be actually useful to have a similar Asset Manager so people can manage all their assets one place, objects, groups, images, sounds, scenes, layouts, functions, fonts…everything managed in one place and able to sort them in to folders. I would love that.

However, regarding mixing Instance and Object props, lot of people complain about Unreal, Unity and Blender being bloated and indeed it can be extremely frustrating experience to dig through so many properties, options especially when you do know what you are clicking after for 2-3 minutes could be done in few lines of code in 2 seconds. This is why many people hate these visual clicking tools so I am uncertain if to squeeze everything on to a single panel in a single view is the right way to go.

But I do support the idea to have different views on the same panel and display them based on what is selected and to have an Asset Manager to manage everything in one place. So then we need 3 panels only. Instances on the right, Assets at the bottom, Properties on the left and a different properties view for Instances, Objects, Scenes, Behaviours, Object Groups…etc to be displayed in the properties panel when something is selected in the Asset Manager, Instances panel or the level editor.

1 Like

Yes it’s true that they use almost all an asset store with a selection that displays in the panel the modifiable properties. This is a principle that I like, we can see and edit what we see. It’s also a UX principle. Display what the user needs at the right time, not to disturb or lose him with too much information.

What I take from what you say is that you want to organize yourself what is in your project in groups/folders.
And I totally agree, I want that too, the organization, this is the way..


But if you are pushing for an asset manager, I’m totaly against it because it’s the opposite of order.

Why i think that? click for open my arguments

An asset manager that mixes images, sounds, videos, tilemaps, jsons (yarn) files and objects is a bad idea. It’s counter productive.
If tidying up your room every day is a pleasure it is a good idea.
If you don’t like it, everything will be a mess.
We could have filters with a search bar to find what we want. But I’m wondering why we put in the same basket the towels and the cloths (it’s a french expression, idk if this have sense haha, i hope you get the idea)
We have the resources tab which manages the files, it is certainly not very provided in options, but it deals with the files.

The closest thing to an asset store in GDevelop is the object list.
There are no folders yet, this is one of the most requested things because nobody understands tags, that’s a pity. When folders will arrive they could also arrive in the resources. A folder for each type, sound, image, tilemap, video, font…
In resources we already have a panel for properties, that’s also a reason why an asset store is not useful.

There is no need for an asset store to mix files and objects, we just need something to better organize our lists and not add content that we already have.

I’m also against the asset store because files have a place on the hard drive, but not objects, for me they are two different things.

[…] and Blender being bloated and indeed it can be extremely frustrating experience to dig through so many properties,

It’s the same with an asset store. Browsing through too many unrelated things (files&objects) is frustrating and time consuming.


So then we need 3 panels only. Instances on the right, Assets at the bottom, Properties on the left and a different properties view for Instances

Why a panel for the instance and one panel for the object?
It’s loosing space to keep both on screen, one depending of the selection is enough.

Assets manager → Object list, enchanted with folders & list of prefab created from extensions. Why not rename it to “Object manager”?
Properties on left - > My mockup of instance/object properties depending of the selection.

And voilà, two panels are enough.
If the goal is to organise the instances on the scene, maybe we could enchance the instance list, rename it outliner or something better, and add folders in this list.

In the case of objects are mixed up with the resources, i have ideas for make one panel with layers and instances from the instance list.

The UX principle of displaying the right thing at the right time and not overloading the user with information and avoid a bloated UI, is the principle I like the most.

2 Likes