hawkthorne / hawkthorne-journey

Digital Estate Planning: The Game
https://projecthawkthorne.com
1.09k stars 454 forks source link

Flatpak packaging #2588

Closed MateusRodCosta closed 3 days ago

MateusRodCosta commented 1 month ago

I'm interested in packaging this as a Flatpak for easier distribution across distros.

Some of the benefits of creating a Flatpak and hosting on Flathub include:

For more info see https://flatpak.org/

niamu commented 1 week ago

I'd welcome this effort if you're offering to take it on. 😃

niamu commented 3 days ago

With our latest release you can now download an AppImage of the game which I think satisfies the spirit of this request. I'm going to close this issue, but feel free to re-open it and pursue the Flatpak distribution if you like.

MateusRodCosta commented 3 days ago

Hey, when I was trying to package as a Flatpak I had to compile love2d.

I did manage to build 0.10.2 with some patches I found for AppImage, but the game said it wasn't compatible. I then tried 0.9.2 with some other patches from the same source but I couldn't compile and couldn't figure out why.

That's basically why I haven't progressed on this. Thanks for the AppImage, I will look further at packaging to Flatpak at some other opportunity.

niamu commented 3 days ago

If it helps at all, the game is now built using v11.5 of LÖVE.

I have no experience with Flatpak and the little reading I did on it scared me away compared to the simplicity of the AppImage.

Good luck!

MateusRodCosta commented 3 days ago

I have no experience with Flatpak and the little reading I did on it scared me away compared to the simplicity of the AppImage.

Well, I can understand your point of view.

From what I hear an AppImage is essentially a compressed folder which, when run, mounts itself on your system. Inside it you not only have the app but also most of the dependencies (if some dependency is missing it uses the host version, if that doesn't exist it might fail). In a way its similar to a Windows exe that can be run in a portable way.

In Flatpak you have the runtime (a set of base libs that is shared between apps that target that runtime) and the apps (which target a specific version of a runtime). To build a Flatpak you usually have to create a manifest with instructions on how to build as well as setting some other properties. The main form of distribution is through a remote such as Flathub (third-party remotes can be created), but you can also build local and distribute via USB flash drives.

There's also sandboxing and de-duplication on Flatpak as good bonuses, but when talking about single distribution they take the back seat.

If it helps at all, the game is now built using v11.5 of LÖVE.

That should help in making the love2d compilation easier. Thanks!

MateusRodCosta commented 3 days ago

Managed to package as a flatpak at https://github.com/MateusRodCosta/flathub/tree/hawkthorne.

Only piece missing is creating the AppStream data (which would be mostly copying stuff from the website so it fills the required XML). Then it should be ok for the flathub devs.

niamu commented 3 days ago

Exciting! I'm looking forward to seeing that make its way into Flathub.

MateusRodCosta commented 2 days ago

Got initial metadata:

Captura de tela de 2024-11-23 10-47-54

I am now only missing the age rating stuff and I should be able to submit. This is done by filling some questions from https://hughsie.github.io/oars/ and placing the output in the metadata.

However I haven't fully played the game yet, so it would help if somebody who already played it can fill it, otherwise it might take some time.

niamu commented 2 days ago

This is my best attempt at filling that form out. There's a lot of content in the game so hopefully I didn't miss anything important.

  <content_rating type="oars-1.1">
    <content_attribute id="violence-cartoon">moderate</content_attribute>
    <content_attribute id="violence-fantasy">moderate</content_attribute>
    <content_attribute id="violence-bloodshed">mild</content_attribute>
    <content_attribute id="violence-slavery">moderate</content_attribute>
    <content_attribute id="drugs-alcohol">moderate</content_attribute>
    <content_attribute id="drugs-narcotics">mild</content_attribute>
    <content_attribute id="sex-nudity">mild</content_attribute>
    <content_attribute id="sex-themes">mild</content_attribute>
    <content_attribute id="language-profanity">mild</content_attribute>
    <content_attribute id="language-humor">mild</content_attribute>
    <content_attribute id="language-discrimination">mild</content_attribute>
    <content_attribute id="money-gambling">moderate</content_attribute>
  </content_rating>
MateusRodCosta commented 2 days ago

Flathub devs would prefer the AppStream metadata to be managed upstream, if possible: https://github.com/flathub/flathub/pull/5877#discussion_r1855208822

niamu commented 2 days ago

I'm not sure what that would entail. Perhaps you can open a PR for that and we can review then.

MateusRodCosta commented 2 days ago

I'm not sure what that would entail.

The idea would be to have https://github.com/MateusRodCosta/flathub/blob/hawkthorne/Hawkthorne.metainfo.xml on the game repo, likely along with other files needed for Linux distribution (I guess that would be https://github.com/hawkthorne/hawkthorne-journey/tree/master/templates/linux).

Perhaps you can open a PR for that and we can review then.

Sure, I can file a PR later today.