YoYoGames / GameMaker-Bugs

Public tracking for GameMaker bugs
21 stars 8 forks source link

Room Editor Improvements - a place to select items that you can spawn in that layer #4030

Open iampremo opened 1 year ago

iampremo commented 1 year ago

Requested in ticket Ticket #199232

Feature Type: feat_addition_ide Description: Hello, (disclaimer1: sorry not english native) (disclaimer2: verry happy with GM, just want to make it a better tool for the community) (disclaimer 3: sorry this is two requests. But they actualy define a better way to populate Layer so I made a bundle)

I have seen from the roadmap that work is planned on the room editor. Which is great news, because for sure you code your game but then you spend days in fleshing it in the room editor.

My opinion is that the current room editor is not a smooth experience mainly because there are too many clics (and drad'n'drop) when building a level. In my case, I am loosing a lot of time accessing specific 'area', re-collapsing nodes, re-zooming in tileset editor...sometimes clicking three times instead of one.

When I think about it, what a user needs when working to build a room is:

1-a place to select a layer to work-in ("Layer Editor" is good enough I think)

2-a place to select items that you can spawn in that layer ("Asset Browser" is not at all convenient for that)

YoYoGames/GameMaker-Bugs#4302-a place where you can acces the configuration for those spawned items ("inspector" with better ergonomy)

For #2- A new Selection Pane to quickly select assets to create on the selected layer I think dragging assets from the Assets Browser to an Instance Layer or Asset Layer is the most painful part of building rooms in Game Maker. A-Drag'n'drop is a more complex action than two clics. B-Instance Layer only accepts Objects but you need to browse the full list of Assets (and can even drag the wrong Asset type), same for Asset Layer; C-Even if you organize your Assets 'tree' with room buidling in mind (all eligible objects in a specific folder), the list of Assets is often very long compared to what you really want to use in the Layer.

At the same time, I feel that Tile Layers are ok because of the "Tile Editing" window, where you can just click one Tile from your Tile Set and then spawn it in the Tile Layer.

My vision would be to have a Selection Pane in the room editor to select items and then spawn items in the selected Layer. This would look lie and be inspired by how Tile Layer work and the "Tile Editing" pane. A-The Selection Pane would work by click and not drag'n'drop (like the "Tile Editing"). You clic to select the asset, then you click in the room to create some instances (then of course, once in the room, you can drag n drop what has been spawned...). B-The Selection Pane would only display what you can spawn in the selected Layer. Objects if an Instance Layer is selected, Sprite if an Asset Layer is selected. C-(even better) You can define what the Selection Pane displays, to only see the Objects/Sprites you want. Simple option is that the list of Assets to display in the Selection Pane is global to all Layers... but you could be able to define this list of Assets by Layer. If I transpose the behaviour of Tile_set, you could have an Asset_set, to organize Objects.

I hope this make sense. Happy to discuss / mockup if you want to investigate further. Thanks for reading!


For #2- Selection Pane to quickly select assets to create on the selected layer Browing the Assets takes too much time when you want to populate a layer quickly. Also drag'n'drop (with the need to focus on holding the button) is more costly that clicking once to select and once to spawn in the room.

nullbunny commented 8 months ago

During a gamejam I recently used the ldtk Editor to make rooms. It has a similar structure to GameMaker, but you can assign tags to layers, so it only shows you objects that are meant for that layer.

GameMaker already supports tagging your assets.

"Accepted Tags" and "Excluded Tags" could be introduced to layers to pre-filter the Asset Browser for the user when selecting that layer.