Godot: Godot as flatpak runtime

Created on 8 Jul 2016  Â·  31Comments  Â·  Source: godotengine/godot

It would be cool if there was an xdg-app/flatpak runtime package that would provide godot to any games that want to use it. The godot editor can then be a flatpak app based on that runtime.

feature proposal linuxbsd porting

Most helpful comment

I opened a pull request to add Godot as a base app on Flathub: https://github.com/flathub/flathub/pull/1299

All 31 comments

What would we have to do to implement that? I haven't really followed the recent hype about the various new universal application packages (I should though, if it's going to make me soon jobless as an RPM packager :P).

Its only an idea, and I am no flatpak expert in any regard (probably you are much better suited for the task being a packager and knowing godot better), but there are a bunch of examples in the flatpak wiki: https://github.com/flatpak/flatpak/wiki/Examples#runtimes-and-sdks

Theoretically, upstream godot doesn't have to do anything (the minecraft flatpak is a 100% fan made one for example) but I think both in the case of KDE and gnome the flatpak runtime is maintained by upstream.

Why would you want to implement that to begin with? Godot is already a single executable file that can run on most distros xD

Not all distros :) #1391

Also, flatpak adds sandboxing.

including all dependencies will greatly increase the file size though :)

Godot already includes all its dependencies :) look at the source code tree :p

so why is it not running on most distros then? What are the advantages and disadvantages of flatpak to the way it currently is distributed?

Do you mean packaging the godot engine as a flatpak - or adding the ability to the engine to output games as flatpak or both?

The advantages are:

  • sandboxing, given by flatpak. Its a bad habit to download and execute binaries from the net, even if they are from trustable people like godot. In fact, on android, sideloading is one of the biggest sources of malware infections. Linux is too small to tell, but i guess its the same there as well. With sandboxing, the effect of a malicious executable is limited.
  • if you publish a game that runs godot, you will only have to distribute the project files (plus some flatpak management stuff), not the whole exported executable that contains the engine.

Today I made a flatpak of godot the editor for flathub:
https://github.com/flathub/flathub/pull/104

I'm not really an expert, or even a user of godot, so I wouldn't mind if someone took a look at it and tell me if it looks sane or not.

As for this bug, you don't actually want to make a godot runtime. Runtimes are essentially a distro, and you don't want to be maintaining a distro unless you e.g. love staying up all weekend handling glibc security errata, etc.

What you want to do instead is to create a "base application". This would be an "empty" app that has only the godot engine on it, and then actual apps start from this and add just the app data. This is how we handle for instance electron apps in flathub. Here is the electron base app:
https://github.com/flathub/io.atom.electron.BaseApp
And here is discord which uses it:
https://github.com/flathub/com.discordapp.Discord

What you want to do instead is to create a "base application".

Very interesting. Didn't know about that. It sounds precisely what I think is needed!

Flatpak build is now on flathub: https://flathub.org/apps.html

@alexlarsson Awesome! Thanks for doing that. Is this 2.1.4?

Yes. 2.1.4, flathub is for stable releases only. The packaging is here: https://github.com/flathub/org.godotengine.Godot

If anyone from the Godot team wants to own that I'll gladly hand out commit rights.

Thank you for making a Flatpak @alexlarsson!

Another feature not discussed is that updates are automatic, which is important. I understand Godot packages a single binary, but it is a manual process to continually check for updates, download, and replace the old binary. Having automatic updates through Flatpak is the best method. Additionally, Flatpak and Snaps are moving quickly to become the recommended method of Linux application packaging. Specifically Flatpak has been used for desktop apps primarily, and Snaps for servers (usually).

I hope the Godot team keeps the Flatpak and AppStream files updated so Linux users have an easy and secure method of receiving and running Godot.

@crouthamela Worth noting the Flatpak is currently not maintained by Godot, though if anybody there wants to get involved they can.

@TingPing Yeah I know, I'm just saying I hope they take it over and make that an official Linux release method. It would be beneficial to do so.

@blurymind Id like to point out that a minor advantage of flatpak over the single official binary (I have both atm) is also that I got a .desktop application entry with the install (to the "start menu"). It even includes the pretty icon. These 2 minor things and updates make it more than the preferred choice out of these 2 installation options for me.

I think it's important to distribute Godot mono as flatpak because it can save end user a lot of headache with mono and msbuild dependencies.

The Flatpak doesn't yet include Mono because well it requires somebody deal with a lot of headache :P

Pity. Godot Mono and flatpak are meant for each other.

On Mon, Apr 2, 2018, 18:53 TingPing notifications@github.com wrote:

The Flatpak doesn't yet include Mono because well it requires somebody
deal with a lot of headache :P

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/5597#issuecomment-377961509,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEwqYZ9mgbuqNjDeholXTK73-7uwaho4ks5tkkl6gaJpZM4JIO3D
.

Well. There is a sdk extension with mono, so it can’t be that hard to add.

Well. There is a sdk extension with mono, so it can’t be that hard to add.

I admittedly didn't spend a ton of time looking into it, but that alone wasn't enough.

Can we close this as fixed, since Godot is available on FlatHub? https://github.com/flathub/org.godotengine.Godot

I see that @Calinou is contributing there, so upstream (we) is also involved.

Well the editor is there but the convenience of a baseapp/runtime for godot games isn't.

Well the editor is there but the convenience of a baseapp/runtime for godot games isn't.

True.

_I'll up this issue, since almost 1 year has passed from the last comment._

I'm working on a Godot base app. And here's an Escape Space Flatpak based on it :slightly_smiling_face:

However, there are several issues I'm looking to fix. These bugs aren't present when running the game outside the Flatpak:

  • The game crashes with a segmentation fault when loading a level.
  • User configuration isn't loaded correctly. It appears to be initially saved, but in-game changes to the settings will never be saved to $HOME/.var/app/io.itch.calinou.Escape-Space/data/escape-space/. (When running outside the Flatpak, the user data directory is $XDG_DATA_HOME/escape-space.)

@razcore-art Would you know anything about this type of error? ^^ I ask because we may run into it if we want to package flossy-gnu as a flatpak.

I opened a pull request to add Godot as a base app on Flathub: https://github.com/flathub/flathub/pull/1299

Waiting for godot.

Waiting for godot.

Sorry, had to do it. -> https://en.wikipedia.org/wiki/Waiting_for_Godot

The Godot Flatpak BaseApp is now live! This can now be closed.

We should add a brief tutorial on using it to package projects in the Godot documentation (https://github.com/godotengine/godot-docs/issues/2993).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

SleepProgger picture SleepProgger  Â·  3Comments

EdwardAngeles picture EdwardAngeles  Â·  3Comments

nunodonato picture nunodonato  Â·  3Comments

RayKoopa picture RayKoopa  Â·  3Comments

gonzo191 picture gonzo191  Â·  3Comments