FunkinCrew / Funkin

A rhythm game made with HaxeFlixel
https://www.newgrounds.com/portal/view/770371
Other
2.89k stars 2.26k forks source link

Enhancement: Linux Flatpak build #3057

Open fpiesche opened 1 month ago

fpiesche commented 1 month ago

Issue Checklist

What is your suggestion, and why should it be implemented?

At a friend's request I've recently set up a Flatpak Linux build for PsychEngine, a fork of Funkin with mod support (before Funkin itself got updated for this).

As the upstream variant of PsychEngine and the "official" release of FNF, I think it might be worthwhile getting Funkin' distributed as a Flatpak as well - this would be especially useful for e.g. Steam Deck users, where Flatpak is the main path for getting software that isn't on Steam.

I'd be happy to repurpose my Flatpak build setup for PsychEngine to build an official Funkin' release instead; as an added bonus Flathub's CI system would monitor external components such as Haxe, Flixel, etc for updates and automatically run test builds as those dependencies update - this would be helpful to Funkin' upstream as an early warning system for updates to haxelib dependencies breaking Funkin' itself (as well as to show whether an update to a dependency is safe)!

From your end, maintenance effort would be minimal; the Flathub build setup will basically just pull the sources from this GitHub repo, create a Linux build and publish it to flathub.org (as seen with PsychEngine above) for users to install and use.

Crucially, Flathub's app submission guidelines require that if an app build is not submitted by maintainers of the actual app, the submitter at least has permission from the actual project maintainers to redistribute the app via Flathub. Would you be okay with me doing this? I'd be the default maintainer on the flathub build repo (see comment below for a link) but any members of the Funkin' team could be added without problems. Alternately, I could just prepare a build manifest for use with Flathub's CI system that you can then officially submit yourselves.

fpiesche commented 1 month ago

For reference, here's what a Flatpak build manifest looks like. The main requirements are FreeDesktop metadata and an icon image in the upstream repository (if possible); the actual build pipeline is specified in this yaml file with the build dependencies for haxelib in this supplementary file for readability.