Publier un jeu Godot sur Snap (store ubuntu)

Cet article vous montre comment publier un jeu Godot sur le store Ubuntu (snap), je n'aborde pas ici d'autre moteur de jeu, mais ce tuto peut vous aider à comprendre la mécanique utilisée.

Créer un compte Ubuntu One

Pour publier sur le Snap Store, vous avez besoin d'un compte Ubuntu One, si ce n'est pas déjà fait, créez en un sur https://login.ubuntu.com

Organiser votre projet

Comme pour un export classique, on va créer un peu d'arborescence pour ranger les fichiers

mkdir -p export/linux/snap
cd export/linux/snap
mkdir -p snap/gui

Exporter votre jeu vers Linux

Dans Godot, faites un export Linux et définissez comme destination le répertoire export/linux/snap

Vous avez 2 fichiers: votre_jeu.x86_64 et votre_jeu.pck

Installer snapd et snapcraft

snapd est le service qui permet d'installer et de faire tourner des snaps, snapcraft est l'outil qui sert à faire le build

Sur les distribution ubuntu et dérivés (mint..), snapd est déjà installé, sinon, par example sur ma LMDE (basée sur debian), besoin de mon coté d'installer également lxd

sudo apt install snapd

Passons à snapcraft, lui même distribué sous forme de snap

sudo snap install snapcraft --classic

Sur ma distribution basée sur debian j'ai du installer lxd et m'assurer d'avoir les bonnes permissions avec:

sudo apt install snapd lxd
lxd init --auto

Créer le fichier snapcraft.yaml

On créé maintenant la fiche de construction snapcraft.yaml dans export/linux/snap

vi snap/snapcraft.yaml

Contenu de snap/snapcraft.yaml

title: Votre jeu
name: votredomaine-votre-jeu
version: '1.0'
summary: Résumé court de votre jeu
description: |
  La description de votre jeu

grade: stable
confinement: strict
base: core22

apps:
  votredomaine-votre-jeu:
    command: votre_jeu.x86_64
    extensions: [gnome]
    plugs:
      - opengl
      - audio-playback
      - x11
      - wayland
      - joystick

parts:
  game:
    plugin: dump
    source: .
    organize:
      votre_jeu.x86_64: votre_jeu.x86_64
      votre_jeu.pck: votre_jeu.pck
    stage:
      - votre_jeu.x86_64
      - votre_jeu.pck
    prime:
      - votre_jeu.x86_64
      - votre_jeu.pck
    stage-packages:
      - libc6

Ici on décrit

  • le nom du snap (votredomaine-votre-jeu) et sa version
  • une commande à lancer une fois le snap installé, ici directement le binaire exporté par Godot
  • des accès système (plugs) dont votre jeu peut avoir besoin: opengl pour l'affichage, audio-playback pour le son, x11/wayland pour l'affichage, joystick si vous gérez les manettes
  • une partie (part) qui vient récupérer les fichiers exportés (le .x86_64 et le .pck) et les inclure dans le snap

L'extension gnome apporte les librairies graphiques et audio courantes, ça évite de devoir toutes les lister soi même

Builder votre snap

Aller dans export/linux/snap

cd /path/vers/votre/jeu/export/linux/snap
snapcraft pack

snapcraft va télécharger un environnement de build (via LXD ou multipass la première fois), puis fabriquer votre paquet

Vous devriez obtenir un fichier votredomaine-votre-jeu_1.0_amd64.snap

Tester votre snap en local

Pour tester l'installation de l'application en snap

sudo snap install votredomaine-votre-jeu_1.0_amd64.snap --dangerous

Le flag --dangerous permet d'installer un snap qui n'est pas signé par le store, indispensable en local

pour lancer, simplement

votredomaine-votre-jeu

Créer un compte développeur et enregistrer le nom

On se connecte avec le compte Ubuntu One

snapcraft login

Puis on réserve le nom de votre snap sur le store, nom du style xx.votredomain.votrejeu

snapcraft register votredomaine-votre-jeu

Publier votre snap

On envoie le paquet construit précédemment sur le store, en le publiant directement sur le canal stable

snapcraft upload votredomaine-votre-jeu_1.0_amd64.snap --release=stable

Il existe aussi d'autres canaux (edge, beta, candidate) qui permettent de publier des versions de test avant de les faire passer en stable

snapcraft upload votredomaine-votre-jeu_1.0_amd64.snap --release=edge

vous devriez avoir une ligne du type

Revision N created for 'votredomaine-votre-jeu' and released to 'stable'
snapcraft release votredomaine-votre-jeu N stable

Une fois publié, je vous invite à vous rendre sur https://snapcraft.io/ pour aller ajouter les screenshot et autres améliorations concernant la fiche de votre application

sudo snap install votredomaine-votre-jeu

Conclusion

Comme vous voyez il est très simple de publier des snaps