-
-
Notifications
You must be signed in to change notification settings - Fork 101
Description
Describe the project you are working on:
I frequently work on plugins for Godot and need direct access to repositories stored on GitHub without having to wait for updates to come through in the Asset Library.
I also have an RPG project I am working on for which it would be useful if assets from third-party vendors like Sketchfab and Itch.io could have integrated catalogs out-of-the-box, without having to re-invent the wheel by implementing their own GUI infrastructure to handle all the work of providing an interface to their data.
Describe how this feature / enhancement will help your project:
We should refactor the Asset Library to more easily accommodate alternative visualizations and web APIs that can plug-n-play with the Asset Library tab in the editor.
Benefits:
-
Users could have more direct access to assets through a GitHub/GitLab/BitBucket plugin. This goes as well for their own assets when they are waiting for the Asset Library to get modifications approved, but applies just as much to assets that aren't even present on the Asset Library.
-
Users working on game projects would have one comfy editor tab with which to download and install assets from a variety of vendors across the Internet.
Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:
These are just sample visualizations of how a given AssetLibrary plugin could choose to render their content inside Godot's Asset Library tab.
Sketchfab's main screen plugin that creates an entirely alternative AssetLib tab exclusively for Sketchfab assets. These have a gallery-esque rendering with a staff pick filter:
Note how the Sketchfab view is rendered in a separate main screen viewport rather than the existing Godot Asset Library tab:
VS Code's extensions tab. Has a list/markdown rendering with download counts and other detailed information about the project:
Describe implementation detail for your proposal (in code), if possible:
Not entirely sure what all would need to be changed (we kinda need a proof-of-concept demonstration that, for example, could show what a GitHub integration looks like). I do know that the way things are rendered is tailor-made for the exact data that the Godot Asset Library (GAL) stores (such as X/5 star ratings rather than # of Star counts in GitHub, etc.). Different Web APIs may also provide varying amounts of information, potentially a lot more information than the GAL stores, so new fields that provide more detail about an asset are also possible. We won't know more until we start exploring the various Web APIs out there. Either that, or come up with a more generic version that can arbitrarily pretty-render JSON data associated with an asset.
In addition, different asset sources can benefit from alternative renderings that we could make available from the same data backend. For example, GitHub and the VS Code extensions (screenshotted above), which are more code-based platforms, use a list combined with a Markdown-rendered panel since it is an industry-standard practice to use README.md files to describe all of the necessary information about a project. Contrasting with this are the more visual mediums like Sketchfab (screenshotted above) and Itch.io that could benefit from a more gallery-esque front-end.
If this enhancement will not be used often, can it be worked around with a few lines of script?:
It can be worked around in the sense that one can add docks/bottom panels/main screens/etc. that provide an interface to a specific data source (like Sketchfab's main screen plugin from above), but all this does is lead to a disjointed collection of additional GUI elements that clutter up the interface. We should have a prescribed, standardized method of displaying and interacting with online asset sources that is accessible from the Editor.
Is there a reason why this should be core and not an add-on in the asset library?:
It requires revisions to the Asset Library tab to support script-based inclusions of data renderings / data pulls via web APIs. This is outside the scope of script code.
Edit: Updated to use the new ISSUE_TEMPLATE.