Open wstumpfz opened 2 months ago
You can achieve this with EditorExportPlugin, although you'll need a workaround for tags (e.g. using folder colors or specific naming scheme).
Funnily enough, I suggested something eerily similar thinking about the Web export at the same time of your posting here.
For my part, I think it would be a great idea. The current .pck system is at best obtuse to work with.
You can achieve this with EditorExportPlugin, although you'll need a workaround for tags (e.g. using folder colors or specific naming scheme).
Well, technically yes, but what if someone uses folder colors for something else?
Related proposal: https://github.com/godotengine/godot-proposals/issues/146
You can achieve this with EditorExportPlugin, although you'll need a workaround for tags (e.g. using folder colors or specific naming scheme).
Well, technically yes, but what if someone uses folder colors for something else?
I think the most logical place to put this sort of thing would be in export settings- though it might be a little annoying due to the lack of export settings that apply to all exports.
Describe the project you are working on
Various mobile games
Describe the problem or limitation you are having in your project
Currently at Zynga, our games typically use a lot of asset bundles (pack files in unity speak) to facilitate our DLC workflows. Some of our games use over 100 asset bundles. At the moment we don't feel it's feasible to emulate this workflow in Godot (at this scale at least) given the current UI limitations relating to creating and managing pack files. The UI in Godot for selecting what is in (and what dependencies are not in) a given pack file can be error prone for humans and not practical for games wishing to use many pack files. The UI also makes it especially difficult for non-technical people (artists) to handle dependencies between pack files. We need a more user friendly way to group assets in pack files and automatically handle dependencies between them.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
We believe the solution to this workflow issue would be to allow adding a tag to assets that would assign them which pack file they belong to. This workflow would be similar to how you group, manage, and export asset bundles in Unity.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
First Step: Add a persistent "Pack File Tag" field to all assets in the Godot Editor that has a drop down of all currently used pack file tags and a string text box to allow adding a new pack file tag.
Rough example: Unity example:
Second Step: Then add a menu option that let's users build all pack files based on their pack file tags at once:
When building all the pack files, handle dependencies between pack files automatically. For example suppose we have three assets:
"SomeSceneOne" that has a pack file tag "SomeTagOne" "SomeSceneTwo" that has a pack file tag "SomeTagTwo" "SomeTexture" that does not have a pack file tag
And let's say SomeSceneOne has a dependency on SomeSceneTwo and SomeSceneTwo has a dependency on SomeTexture. After pack file export only SomeSceneOne would be in the pack file SomeTagOne and both SomeSceneTwo and SomeTexture would be in the pack file SomeTagTwo.
Third Step: Provide an error screen when users either 1) create a circular dependency between two pack files 2) two different pack files reference the same untagged dependency:
Fourth Step: Finally add an option to the export menu that lets users make a binary without any of the assets that have pack file tags (and an option to force include assets from certain pack file tags):
Optional Step: Make a debug command that prints (to a file?) all the pack file tags and what assets are included in each pack file. I don't know how helpful this would be to users outside of developing this feature.
If this enhancement will not be used often, can it be worked around with a few lines of script?
Since we are proposing a new workflow to exporting Godot's pack files, it's not possible to workaround it with a few lines of scripts.
Is there a reason why this should be core and not an add-on in the asset library?
That's why we're here. We believe Godot "under the hood" already supports what we need to create this new workflow. This effort is more of a UI and automation issue to resolve. We're prepared to do this work ourselves but are concerned about the long term maintenance of this effort. Ideally this would be something ultimately adopted/blessed by Godot, not something privately maintained by Zynga. Plus we figured we can't be the only ones looking to make use of many pack files within a game. So we don't want to spend a couple months on something that will ultimately be rejected. We come looking for advice on 1) is Godot okay with this approach 2) where this effort should be (asset library, within godot engine, etc) 3) what needs to be done so this workflow isn't a constant headache for each new Godot release moving forward.
We're open to alternative ideas, criticism, comments, etc. We chose this workflow approach since that's what we're used to and it's proven to work well in real production environments. We just want to make sure we're headed down the right path before we start this work.