YoYoGames / GameMaker-Bugs

Public tracking for GameMaker bugs
26 stars 8 forks source link

Allow per-project Prefab importing #8332

Open Alphish opened 1 week ago

Alphish commented 1 week ago

Is your feature request related to a problem?

In the latest Beta there is the long-awaited Prefab Library feature, and it's a joyous day indeed!

However, currently it seems any Prefab installed through GMPM will become available to all projects. It might not seem like a problem at first, but if one works on many projects of wildly varying genres and moods, the Prefabs window will eventually get cluttered with platforming engines, shooter engines, puzzle engines, level editor tools, test frameworks, graphics packs, BGM packs, SFX packs... you get the idea. ^^'

Also, with GMPM being global, it seems there's no way to import multiple versions of the same Prefab at once. Which wouldn't be as much of a problem if this limitation applied to a single project only, but it may become more troublesome when an old and new project alike need to use same version of a certain library.

Describe the solution you'd like

Set up a per-project import system. For example, the developer may be presented with the list of Prefabs installed via GMPM, and they can click checkboxes for whichever Prefabs they want to use in the specific project.

Then, the Prefabs window would be limited only to the Prefabs the developer specifically imported. Likewise, the dev would be able to reference only assets from whichever Prefabs are imported. Currently, it seems there's no way to reference Prefab assets in GML/Object Variables at all, they can only be placed in a room...?

As a corollary to that, even if the project itself may not be able to use multiple versions of the same Prefab, GMPM should allow installing multiple versions of the same Prefab alongside one another, so the developer may install different Prefab versions for different projects. Also, if another developer opens a project that imports Prefabs they don't have installed (e.g. freshly cloned from a Git repository), GMPM should prompt installing these Prefabs in some way or another.

Describe alternatives you've considered

No response

Additional context

No response

yerumaku commented 1 week ago

I think this would be solved by filters: the entire library and the current project uses.

The version for the project can be selected. As far as I understood, the primary functionality was intended to provide what was taken away earlier: import into the project.

So we are waiting for the development of the function and the interface associated with it.

I'm really looking forward to custom prefabs, I hope it will appear in the first half of next year, and not at the end 2025.

Alphish commented 1 week ago

Update: apparently, in order to use Prefab assets in GML, the plan is to add the Prefab reference to the project in a similar way one would add a project reference to a .NET project. That more or less matches what I had in mind for the per-project Prefab referencing.

One thing to keep in mind: since adding Prefabs references is already planned, it might be good to include a filter in Prefab Library that toggles between showing only referenced Prefabs or showing all of them. Personally, I'd prefer the default state to show referenced Prefabs only.

yerumaku commented 1 week ago

The package manager displays exactly the prefabs available over the network and always their latest version.

I think such a switch could help (display only what is connected to the game), but then the package manager should look into the project, and not just at the servers.