drwhut / tabletop-club

An open-source platform for playing tabletop games in a physics-based 3D environment for Windows, macOS, and Linux! Made with the Godot Engine.
https://tabletopclub.net
MIT License
1.27k stars 55 forks source link

AppImage distributable #129

Open chungy opened 1 year ago

chungy commented 1 year ago

Is your feature request related to a problem? Please describe. A Zip file containing a tree with a binary is OK (though multiple files in its root is annoying), AppImage is a better way to distribute prebuilt Linux applications. Single file, make executable, place it anywhere (~/Applications is often best), a lot less friction than distributing a zip.

Describe the solution you'd like Releases to be distributed as AppImage binaries.

drwhut commented 1 year ago

The main reason the Linux builds are distributed as a zip file is because of itch.io - when uploading builds, they have to be either a. in a folder, or b. in a zip file, and this makes it consistent with Windows and macOS.

I guess an AppImage could be included with GitHub releases. But are zip files that annoying to work with on Linux?

chungy commented 1 year ago

The main reason the Linux builds are distributed as a zip file is because of itch.io - when uploading builds, they have to be either a. in a folder, or b. in a zip file, and this makes it consistent with Windows

Could itch.io be convinced to change this policy?

and macOS.

Funny enough, AppImage's closest inspiration is the MacOS DMG format. Are DMGs also disallowed on itch.io?

But are zip files that annoying to work with on Linux?

As archives in general? No, not really. But for app distribution, it's an additional layer that can be solved by a single file that can run the entire program and include its dependencies (I didn't touch on the latter in the opening post, but it is huge: it vastly increases the chances of any random program being able to run on any random distro). Plus you're missing out on automatic menu entry generation.

drwhut commented 1 year ago

Are DMGs also disallowed on itch.io?

I don't see them working on itch.io, since the game needs to be able to run via the itch app, and as far as I know, with DMGs you need to "place" them in the applications folder before running them. Plus, DMGs are slowly becoming out-of-date, being replaced by .app bundles.

But for app distribution, it's an additional layer that can be solved by a single file that can run the entire program and include its dependencies

Ah, I see your point. I was eventually planning on adding this game to Flatpak, wouldn't this essentially serve the same purpose? It would include the needed dependencies, as well as adding an entry to the applications menu.

chungy commented 1 year ago

Flatpak solves some similar problems at the cost of complexity (much of it is warranted, honestly). If you're on anything other than Fedora, getting Flatpaks running is non-trivial, whereas AppImage bundles are just normal executables and don't requite any effort to get going. (AppImage's downside: you put yourself at greater risk of any random *.AppImage binary actually being malware, and you'd have to do sandboxing yourself, which means most people don't)

I do think it will be worthwhile distributing on flathub, but I also don't think it really competes with AppImage and they each serve different niches.

Still, that's my opinion, if you'd rather do Flatpak and forget AppImage, it is your project after all :)

elmodor commented 1 year ago

A good informative link about the differences: https://askubuntu.com/questions/866511/what-are-the-differences-between-snaps-appimage-flatpak-and-others

On Arch Linux I prefer Appimages because I can sandbox them myself and they can be installed via the default package manager pacman (either via the normal repository or via AUR).

I think it is very common to distribute AppImages via Github releases. At least I see it quite common on other projects. Specifically:

Distribution on other stores/linux distributions is then done separately according to the specific location. So for Itch.io it would be .zips, for Linux it might be Flathub (as flatpak), for windows I have no idea (the windows store?)

drwhut commented 1 year ago

There are some good points being raised, to be fair. I'll have a look into how other games distribute their builds before making a decision.

drwhut commented 1 year ago

I've made the decision to create AppImage exports, but for now they will only be available on GitHub.

drwhut commented 1 year ago

I've run into a bit of a snag when it comes to creating AppImages, specifically when trying to include dependencies within the executable. I'm currently running Fedora, and the build containers used to build the custom release executables are also based on Fedora. However, in the FAQ for appimage-builder, it says the only Linux distros that are supported are Ubuntu, Debian and Arch. Looking at all of their examples, they all use apt to include the dependencies, so I tried scouting around to see if anyone had used this on Fedora, and I'm not sure if my google-fu (or rather, duckduck-fu) is failing me here, but I cannot find anything about building AppImages on Fedora :sob:

So for the time being, unless an actual wizard shows up and shows me the way to do this on Fedora, I'll have to put this issue on the back burner.

If you're on Linux, and you're struggling to run the .zip bundle that comes with the releases, then your next best option is to download the Itch app and install the game through there (very similar to how Steam works). Failing that, when the stable release of v0.1.0 drops, it should also be available on Flatpak (which I know can be done, since the way it resolves system dependencies is by providing what they call runtimes).