[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Distro-agnostic advice for Godot Engine packaging (related to ITP #793057)



2016-02-29 4:25 GMT+01:00 Paul Wise <pabs@debian.org>:
> On Sun, 2016-02-28 at 17:03 +0100, Rémi Verschelde wrote:
>>
>> Yes, I've actually just fixed it:
>> https://github.com/godotengine/godot/commit/eb5f9ed89be7be2ba147cb95ee74516ce4862d01
>
> I noticed that modifies a lot of different icons, I'm surprised you
> don't create those at build time from the source SVG using Inkscape or
> rsvg or similar.

Creating the PNG files at build time would likely be more hassle than
it would bring improvements: Godot can be compiled from GNU/Linux,
*BSD, Mac OSX and Windows, and we can't expect for example Windows
users to have Inkscape or librsvg in their $PATH (it's difficult
enough for them to have Scons in the $PATH :)).

The few icons provided in the tools/steam folder could indeed be
generated at build time, but they are not actually used by the built
binaries, they are only provided here for convenience so that the
maintainers of the Steam store page can always find the latest icons
when updating the page.

>> Debian could package Godot (the editor) without the templates, plus
>> the runner I suggested (that would stay Debian-specific like any other
>> binary), and let users download the official export templates from the
>> website indeed.
>
> I think that is the right way to go, maybe along with a downloader
> package in contrib to securely download the templates.
>
> I didn't fully understand what "templates" are though, can you provide
> a link to some of them so I can inspect the content?

Export templates are what make Godot awesome from a game developer
point of view, and awful from a packager's :)
The name is not so well chosen as with "templates" one often
associates a text file that is used as a base to produce something
more elaborate; here the templates are actually fat binaries of Godot
compiled without the editor functionalities (`tools=no'), i.e. a kind
of "runtime". The templates are thus native binaries for each
supported platforms: X11, OSX, Windows, Android, iOS, HTML5 (asm.js).

The main advantage for the game developers is that when using the
official templates for their Godot version, they do not need to
compile anything to "export" their game to their target platforms. As
long as they have the templates installed, creating a binary release
is a matter of clicking a few buttons in the export wizard.

I say it's awful for packagers, because it's very hard to compile all
those templates from source in a clean environment, as some platforms
require a complex setting (Android SDK, Emscripten, OSXCross, MinGW32
and 64, 32-bit libraries for the 32-bit X11 template, etc.). That's
why I chose to package only the X11 templates which are easy to build,
and the most relevant for developers using my package: they can out of
the box export to GNU/Linux and *BSD systems and test their game out
of the editor; if they need support for more platforms, they'll have
to download the official upstream templates, or build them themselves
from source.

I am however starting to consider not providing the templates at all
as part of my package, since I can't provide a comprehensive set, and
I'm unhappy with having to statically link libstdc++ in the templates
to ensure cross-distro compatibility.

If you want to check the templates for yourself, you can download them
from Godot's website [0], but it's a fat zip archive (150 MB) and as I
said full of binaries.

Note that the "godot-runner" binary I described earlier is actually
the release build of the X11 template for the current arch (but
without statically linking libstdc++ as it's not meant to be used
outside the distro that packages it). On desktop, Godot games can all
use the exact same binary to be run, so the "export" step can be
bypassed if the template is already in the $PATH and the `-path
path/to/game/project/files' argument is used (this is how I intend to
package libre games for Mageia). On mobile platforms, the templates
are nearer to what their name says, as e.g. for Android the game
project files have to packed into the .apk.

Thanks for your feedback and questions, I think this discussion might
provide a good base for both Debian packagers and packagers of other
distros to understand how to package (or not package) this relatively
complex application. It took me a while to figure out what would be
the best way to package it all.

Regards,

Rémi

[0] http://downloads.tuxfamily.org/godotengine/Godot_v2.0_stable_20160223_export_templates.tpz


Reply to: