Game Distribution (Français)

Une fois votre jeu terminé, vous voudrez sûrement le rendre accessible aux autres. En général vous devriez commencer par créer un fichier .love qui peut être soit directement distribué (ce qui requiert l'installation de LÖVE par les utilisateurs), soit utilisé pour créer des paquets spécifiques a certaines plate-formes.

Voici les manières les plus appropriées de distribuer votre jeu selon la cible (tous utilisent le fichier .love):

Créer un fichier .love

Gardez à l'esprit que certains systèmes d'exploitation utilisent des chemins de fichiers sensibles à la casse. Pour éviter les embrouilles, vérifiez bien que les chemins que vous précisez dans votre code correspondent à ceux de vos dossiers et fichiers.

Pour créer un fichier .love, vous devez créer un fichier .zip du dossier contenant le leu. Veillez à ce que main.lua soit à la racine de l'archive, par ex. si vous avez

   <undossier>/SuperJeu/gfx/character.png
   <undossier>/SuperJeu/main.lua
   <undossier>/SuperJeu/conf.lua

Vous devez vérifier que le zip contient

   gfx/character.png
   main.lua
   conf.lua

et pas le dossier SuperJeu/.

Une fois que vous avez votre fichier .zip, changez l'extension en .love. Voilà!

Si vous utiliser un système de fichier insensible à la casse (c'est à dire Windows), il est envisageable de déplacer le fichier .love à un endroit différent du dossier où est votre jeu, et de le tester de nouveau. Cela devrait mettre en avant tout problème lié à la différence de casse que d'autres utilisateurs pourrait subir lors de l'utilisation de votre jeu. Si il fonctionne dans le même dossier, il y trouvera les fichiers qu'il ne trouve pas dans le fichier .love, vous devez donc le déplacer avant tout test. Un endroit approprié pour le déplacer est un dossier à l'intérieur de votre dossier de jeu, c'est à dire love/MonJeu.love.

Notes spécifiques à certaines plate-formes

Windows

Windows permet la création de fichiers zip sans logiciel externe. Pour des instructions détaillez rendez vous sur http://windows.microsoft.com/fr-fr/windows/compress-uncompress-files-zip-files

Vous pouvez aussi utiliser l'Utilitaire de Distribution (Distribution Utility, en anglais) disponible https://www.love2d.org/forums/viewtopic.php?f=5&t=30259 ici]

Linux / macOS

En supposant que le répertoire actif soit SuperJeu/, vous pouvez créer le fichier .love directement en utilisant la commande

   zip -9 -q -r SuperJeu.love .

Créer un exécutable Windows

Une fois votre jeu compressé dans un .love, vous pouvez créer un exécutable qui lancera directement votre jeu.

Pour ce faire il faut ajouter le fichier .love à la fin du fichier love.exe qui vient avec l'archive .zip officielle de LÖVE. Le fichier en résultant est votre exécutable de jeu.

Une fois que vous avez votre exécutable, vous pouvez compresser avec les autres fichiers DLL de LÖVE dans un .zip et le partager avec le monde.

Note: Certaines personnes n'ont pas de version 64 bit de Windows, donc il est une bonne pratique de soit distribuer une version 32 et une version 64, soit uniquement une version 32 (qui fonctionne aussi sur 64).

Instructions spécifiques à certaines plate-formes

Windows

Pour créer votre exécutable, utilisez la ligne de commande pour lancer

   copy /b love.exe+SuperJeu.love SuperJeu.exe

Note: Il se peut que vous ayez à lancer la ligne de commande en tant qu'administrateur. Pour se faire, allez dans le dossier Windows\System32, clic droit sur cmd.exe puis sélectionnez l'option Exécuter en tant qu'administrateur. Vous devrez taper la commande cd C:\Program Files\LOVE\ (ou autre selon le dossier d'installation de LÖVE) pour revenir dans le dossier de LÖVE et exécuter la commande ci-dessus.

Vous pouvez aussi créer un fichier .bat (par ex. creer_exe_jeu.bat) avec le contenu suivant

   copy /b love.exe+%1 "%~n1.exe"

puis déplacer SuperJeu.love sur le fichier .bat, il créera tout seul SuperJeu.exe, que vous pourrez utiliser pour la distribution.

Cette méthode crée un jeu fusionné.

Pour distribuer votre jeu vous devrez inclure les fichiers DLL venant avec LÖVE (ne mélangez pas les DLL 32 et 64 bits). Sans ces fichiers SuperJeu.exe ne donnera qu'un message d'erreur et se fermera.

Le contenu de l'archive finale devrait ressembler à ceci:

  • SDL2.dll
  • OpenAL32.dll (note: s'appelle tout de même 'OpenAL32.dll' sur 64 bits)
  • SuperJeu.exe
  • license.txt (note: l'inclusion de ce fichier est obligatoire dans toute distribution)
  • DevIL.dll [facultatif voire obsolète ? Absent désormais quand on installe LÖVE]
  • love.dll
  • lua51.dll
  • mpg123.dll
  • msvcp110.dll
  • msvcr110.dll

Linux / macOS

Vous pouvez créer l'exécutable Windows depuis Linux ou OS X en utilisant la ligne de commande.

Téléchargez l'archive zip officielle (32 ou 64 bits, pas l'installeur) depuis https://www.love2d.org/. Sous x86 et la majorité des ARM, Les jeux 32 bits peuvent fonctionner sur les systèmes 64 bits mais pas le contraire, donc pour gagner du temps pouvez ne fournir qu'une version 32 bits.

Lancez alors cette commande dans un terminal une fois le contenu extrait

   cat love.exe SuperJeu.love > SuperJeu.exe

pour obtenir l'exécutable SuperJeu.exe.


Créer une application Mac OS X

Une fois votre jeu compressé en .love, vous pouvez le publier pour les utilisateurs de Mac OS X en téléchargeant le zip de LÖVE pour Mac depuis https://www.love2d.org.

Suivez ces instructions:

  1. Téléchargez et décompressez l'archive de LÖVE pour Mac
  2. Renommez love.app en SuperJeu.app
  3. Copiez SuperJeu.love dans SuperJeu.app/Contents/Resources/
  4. Modifiez SuperJeu.app/Contents/Info.plist (détails plus bas)
  5. Zipez le dossier SuperJeu.app et distribuez le

Lors de la modification de SuperJeu.app/Contents/Info.plist veillez à bien changer les valeurs des balises XML suivantes:

  • CFBundleIdentifier
  • CFBundleName

et supprimez la section UTExportedTypeDeclarations pour éviter que Mac OS n'associe tous les fichiers .love avec votre application. Les changements devraient ressembler à ceci:

Info.plist original Info.plist modifié
   ...
   <key>CFBundleIdentifier</key>
   <string>org.love2d.love</string>
   ...
   <key>CFBundleName</key>
   <string>LÖVE</string>
   ...
   <key>NSPrincipalClass</key>
   <string>NSApplication</string>
   <key>UTExportedTypeDeclarations</key>
   <array>
   ...
   </array>
   </dict>
   </plist>
   ...
   <key>CFBundleIdentifier</key>
   <string>com.SuperCompanie.SuperJeu</string>
   ...
   <key>CFBundleName</key>
   <string>SuperJeu</string>
   ...
   <key>NSPrincipalClass</key>
   <string>NSApplication</string>
   </dict>
   </plist>

Distribution pour Linux

Pour Linux, il n'y a pas (encore) de moyen facile de distribuer un jeu LÖVE, à cause de l'infinité de configurations et de versions de logiciels utilisés. La première chose à faire est d'installer LÖVE à l'aide du gestionnaire de paquets de distribution Linux utilisée (apt-get, pacman, emerge, ...), puis de lancer le jeu avec la commande

love SuperJeu.love

ou, si le paquet créé une association de fichier (type MIME application/x-love-game), de (double-)cliquer sur le fichier .love depuis un explorateur de fichier par exemple.

Assurez vous de bien inclure in fichier conf.lua comportant au moins la version de LÖVE utilisée.

function love.conf(t)
    t.version = "11.4"
end

Une erreur fréquente est d'utiliser la méthode pour Windows avec les binaires Linux;

cat /usr/bin/love SuperJeu.love > SuperJeu
chmod a+x ./SuperJeu

Bien que le binaire « SuperJeu » se lancera sur votre machine, ainsi que les distributions similaires avec les mêmes bibliothèques logicielles, il y a de fortes chances qu'il ne fonctionne pas sur une autre distribution, ou même après une mise à jour des paquets dont LÖVE dépend.

AppImage officiel

À partir de 11.4, l'AppImage est repositionnable. Cela signifie que si le contenu de l'AppImage est extrait et déplacé quelque part, l’exécutable qu'il contient (<root>/bin/love) fonctionnera toujours sans problèmes. Cela signifie que la fusion du style Windows utilisant les binaires de l'AppImage est maintenant supportée.

  1. Téléchargez l'AppImage depuis la page de téléchargement
  2. Créez un nouveau dossier, puis lancer l'.AppImage dans ce dossier, avec le paramètre de ligne de commande --appimage-extract.
  3. Un nouveau dossier squashfs-root sera créé. Fusionnez votre jeu à l'aide de la commande cat squashfs-root/bin/love SuperJeu.love > squashfs-root/bin/SuperJeu
  4. Définissez le drapeau exécute chmod +x squashfs-root/bin/SuperJeu

Vous pouvez alors mettre dans une archive tar tout ce qui est dans squashfs-root ou le rempaqueter dans un fichier AppImage. Si vous choisissez ce dernier,

  1. Définissez le dossier de travail en premier (cd squashfs-root)
  2. Créez un nouveau script de lancement qui lance bin/SuperJeu, relatif à la position actuelle du script, puis archivez toue le contenu du dossier à l'aide de tar czvf ../SuperJeu.tar.gz *

Si vous choisissez de rempaqueter le jeu en AppImage,

  1. Récupérez appimagetool depuis ici.
  2. Modifiez le fichier love.desktop pour correspondre à la description de votre jeu. Assurez vous de modifier Exec=love %f en Exec=SuperGame %f.
  3. Si vous avez besoin de changer l'icône, positionnez votre icône PNG (SuperJeu.png par exemple) ou SVG (SuperJeu.svg) à ĉôté de love.desktop puis modifiez les Icon=love en Icon=SuperJeu. Vous pouvez alors supprimer love.svg.
  4. Rempaquetez le enfin en AppImage en lancant appimagetool squashfs-root SuperGame.AppImage.

Linux

Il n'a pas été démontré que cela fonctionne dans tous les scenarii, mais c'est une façon de distribuer votre jeu pour Linux.

  1. Téléchargez la version de Love (avec l'extension de fichier .tar.gz) appropriée, soit pour x86_64, soit pour i686. Page de téléchargement
  2. Désarchivez le .tar.gz. Vous pouvez le faire soit en double-cliquant sur l'icône du fichier et en pressant « extraire le fichier », ou désarchivez le via la ligne de commande :
     tar -xvzf love.tar.gz
    
  3. Déplacez votre fichier game.love dans le dossier désarchivé.
  4. Éditez le fichier appelé love en remplaçant "$@" par "${LOVE_LAUNCHER_LOCATION}/game.love”

Debian

Il y a des règles pour inclure les jeu LÖVE dans l'archive Debian. Elles peuvent être suivies pour créer un paquet pour un jeu, même si il n'a pas été conçu pour être inclus dans une archive :

Empaqueter Love2d

AppImages

Le format AppImage est un format pour empaqueter des applications d'une façon qui leur permet de fonctionner sur une grande diversité de systèmes cible (bases de distributions de systèmes d'exploitations) sans d'avantage de modification. Le kit complet peut être télécharge depuis ici.

Pour empaqueter les jeux en utilisant AppImage, les bibliothèques et dépendances nécessaire au fonctionnement de love doivent être agglomérées, ce qui peut être fait facilement en utilisant CARE (disponible empaqueté dans les dépôts d'Ubuntu) en exécutant :

care -o love.tar.gz love

.

Ce programme crée une archive, qui contient l'exécutable love, ses dépendances et fichiers liés conservés à la façons de votre système. Secondairement le fichier de jeu .love nécessite d'être 'fusionnés' par les moyens expliqués dans la section ci-dessus. Maintenant les fichiers doivent être placés de la façon suivante dans le dossier :

Dossier d'Application/
├── <nom de jeu>.desktop  --> Ce fichier contient le chemin vers le fichier d'icône du programme,
│                            le nom du programme et la commande pour l'éxecuter.
├── <nom de jeu>.png      --> L'icône de votre jeu
└── usr/
    ├── bin/    --> Vos binaires fusionnés doivent être placés ici
    ├── lib/    --> Vos bibliothèques doivent être placés ici
    └── share/  --> Vos fichier de données (ou ceux de LÖVE) et d'autres choses, doivent être placés ici, si il y en a

Finalement, le dossier nécessite d'être convertit en une AppImage, en utilisant AppImageAssistant disponible dans le kit. D'avantage d'informations peuvent être trouvées dans la documentation d'AppImage.

Android

Compilation depuis les sources

Premièrement, récupérez les codes source soit en les téléchargeant depuis la page de téléchargement ou en clonant projet Android de LÖVE :

git clone --recurse-submodules https://github.com/love2d/love-android

(optionnellement avec --depth 1 pour économiser le temps de téléchargement)

Téléchargez alors le SDK d'Android (précisément l'API 31 pour la 11.4) est le NDK d'Android (précisément la version 21.3.6528147 ou r21d pour la 11.4).

Définissez le ANDROID_SDK_ROOT à l’emplacement du SDK d'Android puis de l'un de ceux-là pour fusionner votre jeu :

1. Placez vos fichiers de jeu dans (project)/app/src/embed/assets de façon à ce que le chemin de votre main.lua soit (project)/app/src/embed/assets/main.lua (11.4 et supérieur, recommandé); ou

2. Placez votre *.love to (project)/app/src/embed/assets/game.love zippé, notez le nom de fichier game.love (ancien, déprécié dans la prochaine mise à jour majeur)

Vous pourriez avoir besoin de créer les dossiers nécessaires.

Changez le nom du lanceur d'app (android:label) dans (project)/app/src/main/AndroidManifest.xml. Changez le nom du paquet (applicationId), le code de version (versionCode), et les la chaîne de caractère de version (versionName) dans (project)/app/build.gradle.

Pour les systèmes Linux et macOS il peut être nécessaire de régler les permissions de l’exécutable :

chmod +x gradlew

Et finalement pour générer l'APK, faire :

./gradlew assembleEmbedNoRecordRelease

L'APK sera placé à (project)/app/build/outputs/apk/embedNoRecord/release/app-embed-noRecord-release-unsigned.apk

Et si vous avez besoin de générer AAB pour le charger dans Play Consode, faire :

./gradlew bundleEmbedNoRecordRelease

Le AAB sra placé à (project)/app/build/outputs/bundle/embedNoRecordRelease/app-embed-noRecord-release.aab

Pour de plus amples informations, voie le dépôt GitHub.

En utilisant APKTool

O.png Cette méthode est maintenant dépréciée puisque le Play Store va rendre nécessaire les Android Application Bundle en 2021 et cette méthode est sujette à la suppression !  


Cette méthode n'est plus supportée. Pour des raisons historiques, les étapes peuvent être trouvées ici : Game Distribution/APKTool.

Distribution pour le web

Il est possible de publier un jeu sous HTML5 ou JavaScript grâce à TannerRogalsky/love.js. Les fils d'exécution par exemple ne sont pas pris en charge, cependant, et la lecture dépend du navigateur.

Une version plus moderne du projet ci-dessus est maintenue à Davidobot/love.js et est compatible avec LÖVE v11.3.


Il existe un projet expérimental pour lancer les jeux .love dans un navigateur supportant WebGL (Firefox, Opera, Safari, Chrome... à jour) sans plugins, cf. le fil de discussion sur le forum (en anglais)

Distribution sur mobile

Il existe un projet expérimental pour lancer des jeux .love de manière native sur Android, c.f. le sous-forum (en anglais)

Outils de la communauté

Il existe différents outils développés par la communauté, afin d'aider dans la distribution du jeu :

  • LÖVE Actions - Construit & déploie les jeux en paquet sur la majorité des plateformes les plus populaires, à l'aide de GitHub Actions. Supporte Android, iOS, Linux, macOS, Windows. Le HTML5/WASM n'est pas supporté
  • makelove, outil multiplatforme avancé pour fusionner vos jeux, écrit en Python 3. Supporte Windows et Linux à l'aide d'AppImage.
  • love-release (forum), un script Lua permettant d'automatiser la distribution de jeux. Supporte Windows, macOS, Debian, Linux, avec plus ou moins de fonctionnalités.
  • boon (forum), un outil multiplatforme, simple à utiliser, fonctionnant sous Windows, macOS et Linux.
  • Love Distribution Pack[sic], un outil uniquement pour Windows, qui crée des fichiers .love et .exe.
  • love-dist, un outil uniquement pour Windows qui peut LuaC vos fichiers et créer un .exe.
  • love-export, un outil simple et facile en ligne de commande qui construit les binaires pour vous. Supporte Windows, MacOS, et Linux.

Vous pouvez également trouver d'autres bibliothèques dans la section distribution dans la liste Awesome Löve2d.

Autres langues