Difference between revisions of "Game Distribution (Français)"

(Création & traduction)
 
(Distribution sur mobile: traduction de l'anglais de la section outils de la communauté)
 
(14 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
* Windows → [[Game_Distribution_(Français)#Créer_un_exécutable_Windows|Exécutable Windows]]
 
* Windows → [[Game_Distribution_(Français)#Créer_un_exécutable_Windows|Exécutable Windows]]
 
* Mac OS X → [[Game_Distribution_(Français)#Créer_une_application_Mac_OS_X|Application OS X]]
 
* Mac OS X → [[Game_Distribution_(Français)#Créer_une_application_Mac_OS_X|Application OS X]]
* Linux → simple fichier .love
+
* Linux → simple fichier .love ou [[#Distribution pour Linux|Appimages]]
  
 
== Créer un fichier .love ==
 
== Créer un fichier .love ==
Line 26: Line 26:
  
 
Une fois que vous avez votre fichier .zip, changez l'extension en .love. Voilà!
 
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 <code>.love</code>, 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 <code>love/MonJeu.love</code>.
  
 
=== Notes spécifiques à certaines plate-formes ===
 
=== Notes spécifiques à certaines plate-formes ===
Line 35: Line 37:
 
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]
 
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 / OS X ====
+
==== Linux / macOS ====
  
En supportant que le répertoire actif soit <tt style="font-size:1.3em">SuperJeu/</tt>, vous pouvez créer le fichier .love directement en utilisnt la commande
+
En supposant que le répertoire actif soit <tt style="font-size:1.3em">SuperJeu/</tt>, vous pouvez créer le fichier .love directement en utilisant la commande
  
 
     zip -9 -q -r SuperJeu.love .
 
     zip -9 -q -r SuperJeu.love .
Line 68: Line 70:
  
 
Cette méthode crée un jeu '''fusionné'''.
 
Cette méthode crée un jeu '''fusionné'''.
 
==== Linux / OS X ====
 
 
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 oficielle (32 ou 64 bits, '''pas''' l'installeur) depuis [https://www.love2d.org/ https://www.love2d.org/].
 
 
Lancez alors cette commande dans un terminal une fois le contenu extrait
 
 
    cat love.exe SuperJeu.love > SuperJeu.exe
 
 
pour obtenir l'exécutable <tt style="font-size:1.3em">SuperJeu.exe</tt>.
 
 
  
 
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.
 
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.
Line 87: Line 76:
 
* SDL2.dll
 
* SDL2.dll
 
* OpenAL32.dll (note: s'appelle tout de même 'OpenAL32.dll' sur 64 bits)
 
* OpenAL32.dll (note: s'appelle tout de même 'OpenAL32.dll' sur 64 bits)
* SuperGame.exe
+
* SuperJeu.exe
 
* license.txt (note: l'inclusion de ce fichier est '''obligatoire''' dans toute distribution)
 
* license.txt (note: l'inclusion de ce fichier est '''obligatoire''' dans toute distribution)
* DevIL.dll
+
* DevIL.dll ''[facultatif voire obsolète ? Absent désormais quand on installe LÖVE]''
 
* love.dll
 
* love.dll
 
* lua51.dll
 
* lua51.dll
Line 95: Line 84:
 
* msvcp110.dll
 
* msvcp110.dll
 
* msvcr110.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/ 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 <tt style="font-size:1.3em">SuperJeu.exe</tt>.
 +
  
 
== Créer une application Mac OS X ==
 
== Créer une application Mac OS X ==
Line 156: Line 158:
  
 
ou, si le paquet créé une association de fichier (type MIME <tt style="font-size:1.3em">application/x-love-game</tt>), de (double-)cliquer sur le fichier .love depuis un explorateur de fichier par exemple.
 
ou, si le paquet créé une association de fichier (type MIME <tt style="font-size:1.3em">application/x-love-game</tt>), de (double-)cliquer sur le fichier .love depuis un explorateur de fichier par exemple.
 +
 +
Assurez vous de bien inclure in [[Config Files|fichier <code>conf.lua</code>]] comportant au moins la version de LÖVE utilisée.
 +
<source lang="lua">
 +
function love.conf(t)
 +
    t.version = "11.4"
 +
end
 +
</source>
  
 
Une erreur fréquente est d'utiliser la méthode pour Windows avec les binaires Linux;
 
Une erreur fréquente est d'utiliser la méthode pour Windows avec les binaires Linux;
Line 164: Line 173:
 
</source>
 
</source>
  
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'''.
+
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 ====
  
== Distribution sur le web ==
+
À 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 (<code><root>/bin/love</code>) fonctionnera toujours sans problèmes. Cela signifie que la fusion du style Windows utilisant les binaires de l'AppImage est maintenant supportée.
  
Il existe un projet expérimental pour lancer les jeux .love dans un navigateur supportant WebGL (Firefox, Opera, Safari, Chrome... '''à jour''') sans plugins, c.f. [https://love2d.org/forums/viewtopic.php?f=5&t=8487 le fil de discussion sur le forum] (en anglais)
+
# Téléchargez l'AppImage depuis la [https://github.com/love2d/love/releases/latest page de téléchargement]
 +
# Créez un nouveau dossier, puis lancer l'<tt>.AppImage</tt> dans ce dossier, avec le paramètre de ligne de commande <tt>--appimage-extract</tt>.
 +
# Un nouveau dossier <tt>squashfs-root</tt> sera créé. Fusionnez votre jeu à l'aide de la commande <code>cat squashfs-root/bin/love SuperJeu.love > squashfs-root/bin/SuperJeu</code>
 +
# Définissez le drapeau exécute <code>chmod +x squashfs-root/bin/SuperJeu</code>
 +
 
 +
Vous pouvez alors mettre dans une archive tar tout ce qui est dans <tt>squashfs-root</tt> ou le rempaqueter  dans un fichier AppImage. Si vous choisissez ce dernier,
 +
# Définissez le dossier de travail en premier (<code>cd squashfs-root</code>)
 +
# Créez un nouveau script de lancement qui lance <code>bin/SuperJeu</code>, relatif à la position actuelle du script, puis archivez toue le contenu du dossier à l'aide de <code>tar czvf ../SuperJeu.tar.gz *</code>
 +
 
 +
Si vous choisissez de rempaqueter le jeu en AppImage,
 +
# Récupérez <tt>appimagetool</tt> depuis [https://github.com/probonopd/AppImageKit/ ici].
 +
# Modifiez le fichier <tt>love.desktop</tt> pour correspondre à la description de votre jeu. Assurez vous de modifier <code>Exec=love %f</code> en <code>Exec=SuperGame %f</code>.
 +
# Si vous avez besoin de changer l'icône, positionnez votre icône PNG (SuperJeu.png par exemple) ou SVG (<tt>SuperJeu.svg</tt>) à ĉôté de <tt>love.desktop</tt> puis modifiez les <code>Icon=love</code> en <code>Icon=SuperJeu</code>. Vous pouvez alors supprimer <tt>love.svg</tt>.
 +
# Rempaquetez le enfin en AppImage en lancant <code>appimagetool squashfs-root SuperGame.AppImage</code>.
 +
 
 +
==== 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.
 +
 
 +
# Téléchargez la version de Love (avec l'extension de fichier .tar.gz) appropriée, soit pour x86_64, soit pour i686. [https://github.com/love2d/love/releases Page de téléchargement]
 +
# Désarchivez le <tt>.tar.gz</tt>. 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 : <source lang="bash"> tar -xvzf love.tar.gz </source>
 +
# Déplacez votre fichier <tt>game.love</tt> dans le dossier désarchivé.
 +
# Éditez le fichier appelé <tt>love</tt> 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 :
 +
 
 +
[https://wiki.debian.org/Games/Love2d 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 [https://github.com/probonopd/AppImageKit/ 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 [https://github.com/proot-me/proot/blob/master/doc/care/manual.rst#care CARE] (disponible empaqueté dans les dépôts d'Ubuntu) en exécutant :
 +
 +
<source lang='bash'>care -o love.tar.gz love</source>.
 +
 
 +
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 :
 +
<source lang='text'>
 +
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
 +
</source>
 +
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 [https://docs.appimage.org/ documentation d'AppImage].
 +
 
 +
== Android ==
 +
=== Compilation depuis les sources ===
 +
Premièrement, récupérez les codes source soit en les téléchargeant depuis la [https://github.com/love2d/love/releases/latest page de téléchargement] ou en clonant projet
 +
Android de LÖVE :
 +
<source lang='bash'>git clone --recurse-submodules https://github.com/love2d/love-android</source>
 +
(optionnellement avec <code>--depth 1</code> 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 <code>ANDROID_SDK_ROOT</code> à l’emplacement du SDK d'Android puis de l'un de ceux-là pour fusionner votre jeu :
 +
 
 +
1. Placez vos fichiers de jeu dans <tt>(project)/app/src/embed/assets</tt> de façon à ce que le chemin de votre main.lua soit <tt>(project)/app/src/embed/assets/main.lua</tt> (11.4 et supérieur, recommandé); ou
 +
 
 +
2. Placez votre <tt>*.love</tt> to <tt>(project)/app/src/embed/assets/game.love</tt> zippé, notez le nom de fichier <tt>game.love</tt> (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 (<tt>android:label</tt>) dans <code>(project)/app/src/main/AndroidManifest.xml</code>. Changez le nom du paquet (<tt>applicationId</tt>), le code de version (<tt>versionCode</tt>), et les la chaîne de caractère de version (<tt>versionName</tt>) dans <code>(project)/app/build.gradle</code>.
 +
 
 +
Pour les systèmes Linux et macOS il peut être nécessaire de régler les permissions de l’exécutable :
 +
<source lang="bash">chmod +x gradlew</source>
 +
 
 +
Et finalement pour générer l'APK, faire :
 +
<source lang='bash'>./gradlew assembleEmbedNoRecordRelease</source>
 +
 
 +
L'APK sera placé à <code>(project)/app/build/outputs/apk/embedNoRecord/release/app-embed-noRecord-release-unsigned.apk</code>
 +
 
 +
Et si vous avez besoin de générer AAB pour le charger dans Play Consode, faire :
 +
<source lang='bash'>./gradlew bundleEmbedNoRecordRelease</source>
 +
 
 +
Le AAB sra placé à <code>(project)/app/build/outputs/bundle/embedNoRecordRelease/app-embed-noRecord-release.aab</code>
 +
 
 +
Pour de plus amples informations, voie le [https://github.com/love2d/love-android dépôt GitHub].
 +
 
 +
=== En utilisant APKTool ===
 +
{{notice (Français)|Cette méthode est maintenant dépréciée puisque le [https://android-developers.googleblog.com/2020/08/recent-android-app-bundle-improvements.html 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 à [https://github.com/TannerRogalsky/love.js 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 à [https://github.com/Davidobot/love.js 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. [https://love2d.org/forums/viewtopic.php?f=5&t=8487 le fil de discussion sur le forum] (en anglais)
  
 
== Distribution sur mobile ==
 
== Distribution sur mobile ==
  
 
Il existe un projet expérimental pour lancer des jeux .love de manière native sur Android, c.f. [https://love2d.org/forums/viewforum.php?f=11 le sous-forum] (en anglais)
 
Il existe un projet expérimental pour lancer des jeux .love de manière native sur Android, c.f. [https://love2d.org/forums/viewforum.php?f=11 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 :
 +
* [https://github.com/love-actions 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é
 +
* [https://github.com/pfirsich/makelove makelove], outil multiplatforme avancé pour fusionner vos jeux, écrit en Python 3. Supporte Windows et Linux à l'aide d'AppImage.
 +
* [https://github.com/MisterDA/love-release love-release] ([https://love2d.org/forums/viewtopic.php?t=75387 forum]), un script Lua permettant d'automatiser la distribution de jeux. Supporte Windows, macOS, Debian, Linux, avec plus ou moins de fonctionnalités.
 +
* [https://github.com/camchenry/boon boon] ([https://love2d.org/forums/viewtopic.php?t=86573 forum]), un outil multiplatforme, simple à utiliser, fonctionnant sous Windows, macOS et Linux.
 +
* [https://love2d.org/forums/viewtopic.php?f=3&t=80565 Love Distribution Pack][sic], un outil uniquement pour Windows, qui crée des fichiers .love et .exe.
 +
* [https://www.love2d.org/forums/viewtopic.php?f=5&t=30259 love-dist], un outil uniquement pour Windows qui peut [[LuaC]] vos fichiers et créer un .exe.
 +
* [https://github.com/dmoa/love-export 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 [https://github.com/love2d-community/awesome-love2d#distribution Awesome Löve2d].
  
 
[[Category:LÖVE]]
 
[[Category:LÖVE]]

Latest revision as of 07:41, 6 April 2023

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