nklbdev / godot-4-importality

Universal raster graphics and animations importers pack
MIT License
337 stars 7 forks source link

Aseprite (and others) in CICD #15

Open Alenael opened 11 months ago

Alenael commented 11 months ago

If I want to export the Godot game using GitHub/GitLab CICD how does this work with this tool? It seems like I can develop locally just fine but when trying to use this tool in the CICD it can't work due to missing aseprite.exe when it tries to generate the imported files. This applies to any other format which requires something to perform the conversion.

Maybe I am missing something here or there are alternatives like including my .godot/imported folder to git (from my understanding this isn't recommended but I don't know why). I could also build and install Aseprite in the CICD perhaps.

nklbdev commented 11 months ago

There is really no need to include the .godot/imported folder in Git. It contains files that will be regenerated from sources that are located in the main project file system. This is why the .godot folder is hidden: it contains your local settings, imported resources and the like so that you can develop locally and run the game in debug mode.

If you want all resources to be imported anew on the server each time, I think it’s worth adding some scripts (Python, Powershell or others) that modify certain sections of the project.godot file. For example, save the project file template to Git, not the project itself. Let your script insert the desired paths into it and save it with the name project.godot. After this, you can run Godot, and it will make all the necessary imports. To do this, the server must have installed applications with which integration is configured: Aseprite, Krita or others.

The Godot command line interface documentation can also help you.

Alenael commented 11 months ago

Thanks for quick response. Looks like I will need to make the applications available and modify the .godot file as suggested to point to the paths on the runner where the temp/aseprite/etc are located.

nklbdev commented 11 months ago

There are several other plugins that work in a similar way, integrating Godot's resource system with external applications. Perhaps the developers who use them already have ready-made recipes?

You might also be interested in setting up incremental processing of source files. Godot saves the result of each import with a hash of the source file. Therefore, when the file changes, Godot detects this and performs the import again. Therefore, saving the .godot.import folder on the server can speed up the build. However, sometimes it needs to be cleaned so that orphaned resources do not accumulate in it.

By the way, when exporting a project to artifacts for each platform, you can specify which files from the project need to be exported and which do not. This plugin serves only for import resources. You can completely exclude its files from export to artifacts.

nklbdev commented 11 months ago

You can try using LibreSprite if you do not have a licensed version of Aseprite to install on your server. It supports some of the required functions, but not all. You can read the details on the Importality's Wiki page about Aseprite and LibreSprite.

Alenael commented 11 months ago

Thanks for details. I tried a handful of things but didn't end up liking any of them as it just complicated things to much.

I am rethinking how I will approach this and might just export via the Aseprite command line instead and use the actual files in Godot.

nklbdev commented 11 months ago

@Alenael, perhaps I can help you!

In the 'issue #19' I was told to try to transfer the plugin settings from ProjectSettings to EditorSettings.

Please test the latest version of the use_editor_settings_instead_of_project_settings branch on your project. Perhaps it will make your CI/CD easier.

Xaneph commented 11 months ago

You should seriously consider making this the master branch....It's more future proof and widely compatible with existing projects in Godot 4 that are well established. Otherwise you have to stumble into this thread and install this version to get it to work and the way I see it...there is no reason for that.

Xaneph commented 11 months ago

ALSO, Genius plugin and I love you :)

adamgiacomelli commented 8 months ago

Had this exact issue - I included the .godot/imported folder into git and set up the export template to exclude the actual plugin but included all the .aseprite files. Although I did all the importing on my linux machine the windows build on github actions works without issues and it does not need the aseprite executable.

nklbdev commented 8 months ago

Hello, you can try to use LibreSprite executable to import Aseprite files. It has smaller functionality, but give it a chance. Also, if you have one Aseprite executable (for Windows, for example), then you can take another one (for Linux or Mac). This case is available on Steam, HumbleBundle etc. Also you can try to build it from sources manually.

P.S. Yes, I can not to export frames and metadata from Aseprite-file to import it into Godot as a resource without Aseprite itself. Sad, but true 😭