UltraStar-Deluxe / Play

Free and open source singing game with song editor for desktop, mobile, and smart TV
https://ultrastar-play.com
MIT License
376 stars 68 forks source link

Improve Build Pipeline and Dependency Management #436

Open achimmihca opened 4 weeks ago

achimmihca commented 4 weeks ago

Actual behaviour

Dependency Management Currently, shell scripts are used to download some third-party libs (see tools/setup.sh). Some other DLLs have been downloaded from NuGet and copied to the project.

Building Using the Unity editor UI, one has to build platforms one after the other. Currently, there are some custom menu items to do this.

Scripting is needed if one wants to create a build pipeline that builds, for example, multiple platforms after the other (e.g. Win, Linux, macOS, Android

Expected behaviour

Dependency Management A better dependency management would be nice where one just adds the lib or repo that should be fetched. This should support

Build Pipeline It would be nice to build all targeted platforms reliably with a single command on the terminal, similar to Maven or Gradle, etc.

Implementation Hints

There are some build tools for C#, e.g., Cake, which already has some Unity extension.

Needs research. The tool should be easy to use, easy to set up, easy to integrate in CI, and extensible for custom needs.

The goal is to trigger the same build tool from the CI, manually from command line, and from within the Unity editor via some menu item.

achimmihca commented 4 weeks ago

Code generation should also be possible with such a build.

Sadly, Unity is not good at handling code generation (see forum thread), so this has to be done by an external tool beforehand.