Initiation à la création de jeux vidéo

en Lua avec Löve2D

par

Anthony Cardinale

avec la contribution d'Antonella De Chiara

Initiation à la création de jeux vidéo - en Lua avec Löve2D

par Anthony Cardinale, avec la contribution d'Antonella De Chiara

ISBN (EPUB) : 978-2-8227-0966-8

Copyright © 2020 Éditions D-BookeR

Tous droits réservés

Conformément au Code de la propriété intellectuelle, seules les copies ou reproductions strictement réservées à l'usage privé du copiste et non destinées à une utilisation collective ainsi que les analyses et les courtes citations dans un but d'exemple et d'illustration sont autorisées. Tout autre représentation ou reproduction, qu'elle soit intégrale ou partielle, requiert expressément le consentement de l'éditeur (art L 122-4, L 122-5 2 et 3a).

Publié par les Éditions D-BookeR, 229 rue Solférino, 59000 Lille

www.d-booker.fr

contact@d-booker.fr

Les exemples (téléchargeables ou non), sauf indication contraire, sont propriété des auteurs.

Mise en page : générée sous Calenco avec des XSLT développées par la société NeoDoc (www.neodoc.biz)

Visuel de couverture : Logo officiel de Löve2D, licence zlib (https://love2d.org)

Date de publication : 09/2020

Édition : 1

Version : 1.0

À propos des auteurs

Anthony Cardinale

Anthony Cardinale est ingénieur en informatique spécialisé en 3D temps réel et innovation. Passionné depuis toujours par le développement, il a commencé par la conception de jeux vidéo avant de devenir aujourd’hui expert en création d'applications 3D avec Unity. Il travaille pour le compte de grands groupes industriels et continue de partager ses connaissances notamment via l’écriture de livres. Curieux, il aime tester et mettre en œuvre de nouveaux outils, en particulier dans le domaine du jeu.

avec la contribution d'Antonella De Chiara

Antonella De Chiara est passionnée depuis l’enfance de jeu vidéo, d’informatique, de nouvelles technologies et de programmation. Elle s'est formée à différents langages comme le Javascript, Lua et le C# sur Visual Studio et, au travers de ses divers projets, a travaillé sur plusieurs moteurs de jeux et frameworks tels que Unity, Phaser, LÖVE et Monogame. Geek et entrepreneuse, elle a réalisé de nombreux jeux mobiles ainsi que des petits jeux PC et a donné des formations Unity, Phaser et LÖVE.

Pourquoi LÖVE ?

LÖVE est un framework libre et multiplateforme vous permettant de développer des jeux 2D. Contrairement à un moteur de jeu, un framework ne dispose pas d’un éditeur (interface graphique). C'est un ensemble de composants et de lignes de code qui vous faciliteront le travail dans le cadre du développement de vos projets. Il offre plus de liberté qu'une bibliothèque logicielle, car beaucoup plus générique.

LÖVE est donc un framework qui vous permettra de créer des jeux compatibles avec Windows, macOS, Linux, Android ou iOS. Il repose sur la bibliothèque SDL et sur OpenGL ce qui vous donne accès aux fonctionnalités vidéo et sonores de l’ordinateur. En d’autres termes, vous pourrez afficher des images à l’écran et jouer du son.

LÖVE est open-source et distribué sous la licence zlib. Cela signifie que son utilisation est gratuite, libre et que vous pouvez développer ce que vous voulez, sans limitations, même pour des projets commerciaux. Vous êtes donc totalement libre de faire ce que vous voulez et tout ce que vous faites vous appartient. Cela vous permet de ne pas vous soucier de problèmes de licence.

Enfin, LÖVE utilise Lua comme langage de programmation. Lua est un excellent langage pour se lancer dans le développement de jeux car il est très simple à prendre en main et parfaitement adapté à ce type de développement. C’est un langage léger mais puissant. C’est un langage de script au même titre que Python qui permet de s’affranchir des contraintes que l’on peut avoir avec des langages de bas niveau, plus complexes à appréhender. Enfin, Lua est lui aussi libre et distribué sous la licence MIT.

Tout cela fait que le combo LÖVE/Lua est parfait pour s’initier aux concepts fondamentaux du développement de jeux et découvrir le fonctionnement d’un framework de création de jeux vidéo. De tous les frameworks que j’ai pu tester, je pense que LÖVE est le plus simple que vous pouvez trouver. Il est selon moi le meilleur choix pour démarrer. C’est ce que je veux partager avec vous au travers de ce livre : apprendre à coder des jeux de façon simple et concrète. Nous irons jusqu’à la publication de notre jeu sur internet.

1. Public visé

Ce livre s’adresse à ceux qui souhaitent découvrir ou se perfectionner dans la création de jeux avec un framework ultra léger. Des bases en programmation peuvent être utiles mais je ferai en sorte de reprendre tout depuis le début afin de mettre tout le monde à niveau. Comme indiqué plus haut, Lua est un langage très simple, vous n’aurez pas de difficultés à l’appréhender. Que vous soyez étudiant, développeur ou simplement un passionné, ce livre vous permettra de prendre en main LÖVE et de commencer à créer des projets concrets.

2. Qu’allons-nous voir dans ce livre ?

J’ai pour habitude de présenter des concepts et immédiatement après de les mettre en pratique. Cela aide à mieux apprendre et mieux retenir les notions. Ce livre suit donc une approche d'apprentissage par la pratique. Nous découvrirons petit à petit les fonctionnalités proposées par LÖVE et nous nous en servirons pour développer un jeu que nous enrichirons progressivement. L’idée serait de développer un petit jeu type RPG en vue de dessus avec un personnage capable de se déplacer, d’attaquer et d’interagir avec des objets. Nous verrons également comment créer un mini-éditeur de niveaux de sorte à disposer d'un outil pour créer rapidement de nombreuses cartes pour notre jeu. Notre projet pourra ensuite être réutilisé et décliné pour créer d’autres types de jeux.

3. Sources des exemples

Chaque chapitre (mis à part les tout premiers) s'accompagne d’un (ou plusieurs) exercices. S’il n’y a pas d’exercice, il y a au moins quelques lignes de code à retenir. Les sources correspondent à la correction de ces exercices ou à ces quelques lignes de code. Vous les trouverez sur le dépôt GitLab livre-lua-love2d-jv. Vous pouvez également les télécharger sur le site de l'éditeur depuis la page de présentation du livre, onglet Complément.

J’ai classé les dossiers par ordre d'apparition dans les chapitres. Vous pourrez regarder le code pour vérifier que vous avez correctement réalisé les exercices de votre côté. Vous pourrez également lancer et tester les différents projets en glissant/déposant leur dossier sur l’exécutable de LÖVE.

1

Télécharger les outils

Dans ce chapitre, nous téléchargerons et configurerons les outils que nous allons utiliser tout au long de ce livre.

1.1. Télécharger un éditeur de code

Avant toute chose, nous allons télécharger un éditeur de code. Bien qu’il soit possible d’écrire du code dans un simple bloc-note, cela n’est pas recommandé. L’idéal est d’utiliser un logiciel dédié à l’écriture de code qui vous facilitera la vie avec sa coloration syntaxique. La coloration permet de mettre en valeur les mots clés d’un langage de programmation, ce qui vous aidera à mieux vous y retrouver dans votre code.

LÖVE est un outil qui fonctionne sur tous les OS. Je vais donc vous proposer un éditeur de code également compatible avec tous les OS : Sublime Text. Vous pouvez le télécharger gratuitement et le tester aussi longtemps que nécessaire. S'il vous convient et que vous envisagez de l'utiliser régulièrement, vous êtes invité à opter pour la version payante. Sublime Text fonctionne sous Windows, Mac et Linux.

Si vous préférez utiliser un autre éditeur de code, allez-y, il n’y a aucun souci. Vous pouvez utiliser Notepad++, VS Code, Atom… N’importe quel éditeur qui propose la coloration syntaxique pour le langage Lua. Une fois votre éditeur prêt, nous pouvons passer au téléchargement de LÖVE.

1.2. Télécharger LÖVE

LÖVE est un framework très léger, environ une dizaine de mégas au total. Il ne s’agit que de quelques liens vers des librairies.

Pour le télécharger, rendez-vous sur son site officiel et récupérez la version qui correspond à votre système d’exploitation. Pour ma part, je choisis la version Windows zippée. La version zippée ne nécessite pas d’installation, pratique pour transporter LÖVE sur clé USB !

Figure 1.1 : Le site de LÖVE avec les liens de téléchargement

Lancez l'exécutable une fois installé ou extrait de façon à vérifier que tout fonctionne bien. Si vous ouvrez le fichier love, vous devriez avoir la fenêtre suivante :

Figure 1.2 : Lancement de LÖVE pour vérifier son fonctionnement

Si tel est le cas, tout va bien ! C’est que l’outil est parfaitement fonctionnel. Je vous invite à regarder du côté du forum de LÖVE. Vous y retrouverez les membres de la communauté et vous pourrez y demander de l’aide si besoin.

1.3. Créer un raccourci LÖVE

Vous avez téléchargé LÖVE. Vous avez donc quelque part sur votre ordinateur un dossier contenant son exécutable. Je vous recommande de créer un raccourci vers celui-ci. Sur Windows par exemple, faites un clic droit sur l’exécutable de LÖVE et sélectionnez Créer un raccourci. Placez-le ensuite dans votre répertoire de travail (le dossier dans lequel vous allez travailler et créer les projets nécessaires pour suivre ce livre). Pour ma part, j’ai un dossier global dans lequel j’ai mis le dossier LÖVE issu du ZIP et le raccourci vers l'exécutable.

Note > Si vous êtes sous Linux et avez téléchargé l'AppImage de LÖVE, il vous suffit de créer un raccourci vers application et de le faire pointer vers l'AppImage. N'oubliez pas de rendre exécutable votre AppImage.

Figure 1.3 : Création du raccourci vers l'exécutable LÖVE

Cette manipulation est très importante car nous allons utiliser ce raccourci pour lancer nos projets LÖVE. Cela nous permettra de lancer plus rapidement nos jeux. Nous verrons cela dès le chapitre suivant.

1.4. Quels projets ont été réalisés avec LÖVE ?

Vous vous demandez peut-être quels types de projets peuvent être développés avec LÖVE.

Itch.io (un site à mettre dans vos favoris) est la plateforme incontournable pour les développeurs de jeux indépendants. Vous pourrez y vendre vos jeux, télécharger des jeux, rencontrer d’autres développeurs indépendants, trouver tout un tas d’informations et de ressources pour le développement de jeux en général. Vous pouvez aussi y trouver de nombreux jeux développés avec LÖVE. Au moment de l'écriture de ce livre, nous en répertorions plus de 1000.

Figure 1.4 : Jeux faits avec LÖVE publiés sur itch.io

Sur Steam, la plateforme de vente de jeux dématérialisée la plus populaire, vous pouvez également en trouver un certain nombre.

Ces exemples vous permettront de vous faire une idée plus précise de ce que vous pouvez réaliser avec du travail et de la patience.

1.5. Télécharger les ressources

Téléchargez les ressources associées au livre (voir Section 3, Sources des exemples). Vous y trouverez les images et ressources (assets) ainsi que les outils dont vous aurez besoin pour reproduire les manipulations. Les images dont je ne suis pas l’auteur sont accompagnées d’un document avec un lien vers l’auteur de l’image. Il s’agit d’images gratuites que vous pouvez utiliser librement pour créer vos jeux.

Vous y retrouverez également tout le code source qui sera écrit dans ce livre. Si à un moment vous avez un doute ou une erreur dans votre code, regardez mes fichiers .lua afin d'identifier ce qui bloque de votre côté.

Enfin, parmi ces ressources, vous trouverez un éditeur de niveaux que j’ai développé (et que nous développerons ensemble) qui vous permettra de concevoir vos niveaux rapidement et facilement.

1.6. Liens utiles

Tout ce que nous allons développer est reproductible avec les ressources associées au livre, vous n’aurez besoin de rien d’autre. Cependant, je vais vous donner quelques liens qui vous aideront à trouver d'autres ressources. Vous pourrez ainsi vous constituer une sorte de base de ressources personnelles pour créer des jeux variés et avoir des sons et images à disposition. Par ailleurs, rien ne vous empêche d'utiliser vos propres ressources pour suivre ce livre si vous souhaitez avoir un visuel différent du mien. L’idéal étant quand même de reproduire à l'identique mes manipulations pour les suivre au mieux. Voici donc quelques sites proposant des ressources gratuites :

OpenGameArt : vous y trouverez des images, des sons, des musiques et également des éléments 3D. Le site propose énormément de contenu.

Kenney : Kenney est un artiste qui propose de nombreuses ressources libres (domaine public) sur son site internet.

Universal-LPC-Spritesheet-Character-Generator : un exemple d'outil parmi d'autres (d'autres sites proposent le même type d’outil) permettant de générer des feuilles de sprites de personnages. Une feuille de sprites (SpriteSheet) est une image sur laquelle vous avez un personnage représenté sous tous les angles et réalisant toutes les actions possibles (marcher, courir, sauter, attaquer, etc.). C’est ce type d’images que nous utilisons en 2D pour créer des personnages animés.

Ce site propose énormément d’options pour générer et personnaliser vos personnages. Un large choix s’offre à vous. Vous pouvez ensuite exporter votre image pour l’utiliser dans vos jeux.

Figure 1.5 : Un exemple de personnage généré par l'Universal-LPC

FreeSound : vous y trouverez des effets sonores gratuits. Là encore, il s’agit d’un site très connu mais il en existe plein d’autres similaires. FreeSound est spécialisé dans les effets sonores mais vous en trouverez aussi sur OpenGameArt. Jonglez donc entre plusieurs sites pour trouver vos sons.

Tiled : c’est un éditeur de niveaux très complet et très populaire fonctionnant avec des tuiles (tiles). Dans ce livre, nous développerons ensemble un outil similaire mais, par la suite, vous pourrez utiliser Tiled si vous préférez. C’est un outil plus complet et donc plus complexe qui nécessite l’écriture d’un script pour lire un fichier Tiled avec LÖVE.

Attention > Avec tous ces sites, veillez à toujours bien regarder la licence d’utilisation des ressources. Parfois il faudra créditer le créateur. Si vous trouvez des ressources dans le domaine public (public domain ou CC0), vous n’avez aucune restriction. Il existe d’autres licences permissives, renseignez-vous bien au cas par cas.

Avec tout cela, nous sommes prêts à nous lancer. Les premiers chapitres seront consacrés à la découverte de Lua, le langage de programmation que nous allons utiliser pour coder nos jeux. Après cela, nous débuterons notre apprentissage de LÖVE.

2

Hello World!

Si vous avez déjà appris quelques langages de programmation ces deux mots ne devraient pas vous être inconnus. Ce sont ceux qu'il est coutume d’afficher à l’écran lorsque nous écrivons notre premier programme. Cela permet de tester que tout fonctionne bien et d’afficher notre premier texte à l’écran. C’est ce que nous allons faire ici.

2.1. Créer un nouveau projet

Pour découvrir Lua et écrire nos premiers bouts de code, nous allons créer un projet LÖVE. Cela nous facilitera le travail et nous permettra d’afficher une fenêtre à l’écran. Pour créer un projet LÖVE c’est très simple : placez-vous dans votre dossier de travail puis créez un nouveau dossier qui sera votre projet. Appelons-le 1-HelloWorld.

Figure 2.1 : Création d'un projet

Note > Je vais numéroter les différents dossiers que nous créerons pour que ce soit plus facile de s’y retrouver par la suite. Nous conserverons ainsi un ordre chronologique.

Ouvrez ce dossier. Pour créer un projet LÖVE, vous devez créer un fichier main. En programmation, main est le point d’entrée du programme. C’est ce fichier main qui sera lu et exécuté en premier. Créez donc un nouveau fichier (sous Windows, vous pouvez créer un fichier texte) et appelez-le main, puis modifiez son extension en .lua.

Figure 2.2 : Création du fichier main.lua

Comme vous pouvez le voir, l’icône de Sublime Text apparaît. Cela provient du fait que j’ai configuré mon PC de sorte à ce que Sublime Text soit le programme par défaut pour ouvrir un fichier Lua. Pour faire la même chose, cliquez droit sur le fichier puis dans le menu contextuel sélectionnez Ouvrir avec. Recherchez alors Sublime Text et définissez-le comme programme par défaut.

C’est tout ce que vous avez à faire pour créer un projet LÖVE. Seul un fichier Main est nécessaire. En réalité, nous créons systématiquement un second fichier : le fichier conf.lua. Il s’agit d’un fichier de configuration où vous pourrez définir des réglages comme la taille de la fenêtre de votre jeu. Ce fichier est automatiquement lu par LÖVE.

Figure 2.3 : Création du fichier conf.lua

L’ensemble de nos projets disposeront de ces deux fichiers.

2.2. Lancer un projet LÖVE

Vous vous demandez maintenant : Comment exécuter mon projet LÖVE ? La manipulation est très simple. Retournez dans votre dossier de travail principal puis glissez/déposez le dossier 1-HelloWorld sur le raccourci LÖVE que nous avons créé au chapitre précédent. Faire glisser le dossier sur le raccourci permet de lancer votre programme.

Figure 2.4 : Lancer un projet LÖVE

Vous devriez avoir un écran noir sous les yeux :

Figure 2.5 : Notre première fenêtre

Ceci est bon signe, c’est que tout a bien fonctionné ! Vous pouvez quitter le programme.

2.3. Les fonctions

Maintenant que nous avons notre fenêtre, nous allons afficher Hello World!. Retournez dans le dossier 1-HelloWorld et ouvrez le fichier main.lua que vous avez créé. Celui-ci doit s’ouvrir dans votre éditeur de code. Nous allons y écrire notre première ligne de code.

LÖVE dispose de fonctions de base. Une fonction est un bout de code qui exécute une liste d’instructions. Une fonction commence par le mot clé function, elle a un nom et se termine par le mot clé end. Tout ce qui se trouve entre ces deux mots clés appartient à la fonction.

Parmi ces fonctions de base, nous avons par exemple la fonction draw, qui se charge de dessiner des choses à l’écran et que nous devons utiliser pour tout ce qui touche à l’affichage. Les fonctions propres à LÖVE commencent toujours par love. suivi de leur nom. Notre fonction draw s’écrit donc :

function love.draw()

end

Vous remarquez les parenthèses après le nom de la fonction. Elles sont obligatoires : elles servent à prendre en compte des paramètres. Un paramètre est une valeur qui peut être utilisée dans la fonction. Si par exemple vous avez une fonction qui permet à votre personnage de gagner de la vie, un paramètre possible serait la quantité de points de vie à gagner. Ici nos parenthèses sont vides car nous n'avons pas besoin de paramètre.

2.4. Afficher du texte à l’écran

La fonction draw fait partie des fonctions appelées automatiquement par LÖVE. C'est à vous d'en définir le contenu afin d'indiquer ce qu'elle doit afficher à l'écran.

Pour afficher du texte, nous allons appeler dans la fonction draw la fonction print. Appeler une fonction consiste à exécuter son contenu. Pour appeler une fonction, il suffit d’écrire son nom. print est une fonction du module graphics de LÖVE. Vous devez donc écrire love (pour indiquer qu'il s'agit d'une fonction LÖVE) puis graphics (pour indiquer qu'elle relève de la catégorie des fonctions graphiques) puis enfin son nom, soit love.graphics.print().

Cette fonction prend en paramètre le texte à afficher. Souvenez-vous que les paramètres sont des valeurs utilisables par les fonctions. Ici le paramètre est le texte que l’on demande à la fonction d’afficher à l’écran. Le code complet de votre programme est donc le suivant :

function love.draw()
  love.graphics.print("Hello World!")
end

Enregistrez cela puis retournez dans votre dossier de travail. Lancez votre projet en le faisant glisser sur le raccourci de LÖVE et regardez le résultat : notre message apparaît comme prévu !

Figure 2.6 : Notre premier texte

La fonction print prend en réalité plusieurs paramètres. Le premier paramètre est le texte à afficher et les paramètres 2 et 3 sont la position x et y (les coordonnées en pixels) de votre texte à l’écran. Modifiez votre code afin d’écrire ceci :

function love.draw()
  love.graphics.print("Hello World!", 350, 300)
end

Dans cet exemple je demande des coordonnées de 350 pour x et 300 pour y. Testez et regardez le résultat : notre texte a maintenant une position différente à l’écran.

Figure 2.7 : Notre texte au centre de l'écran

2.5. Le système de coordonnées de LÖVE

En mathématiques, l’axe x est l’axe qui va de gauche à droite. L’axe y est l’axe qui va de bas en haut. Ce sont ce que l’on appelle l’axe des abscisses et l’axe des ordonnées. Avec LÖVE c’est presque la même chose à la différence près que l’axe y va de haut en bas. La coordonnée 0,0 sera donc en haut à gauche de votre écran. Si votre fenêtre a une taille de 800 par 600, le coin inférieur droit aura donc pour coordonnées 800,600. Voici un schéma pour mieux visualiser :

Figure 2.8 : Les coordonnées avec LÖVE

Vous ferez donc bien attention lorsque vous souhaiterez afficher des éléments à l’écran de calculer la position à partir de l’origine.

De plus, lorsque vous affichez quelque chose à l’écran comme une image, sa position est définie par rapport à son coin supérieur gauche. Lorsque vous indiquez des coordonnées, celles-ci s’appliquent au coin supérieur gauche de l’objet et non au centre de l’objet. Il vous faudra donc faire un petit calcul pour centrer l’objet. Nous y reviendrons plus tard.

2.6. Les commentaires

Un commentaire est un texte qui n’est pas interprété par le programme. Il est présent dans le code mais n’est jamais pris en compte. Les commentaires sont très utiles, ils servent à rendre compréhensible votre code pour vous-même ou pour les autres et à donner des instructions. Pour écrire un commentaire, vous devez commencer votre ligne par un double tiret -- puis écrire votre texte. Par exemple :

-- Fonction standard de love
-- Elle affiche des choses à l'écran
function love.draw()
  -- Afficher un texte à l'écran à des coordonnées x,y données
  love.graphics.print("Hello World!", 350, 300)
end

De cette façon, si vous revenez six mois plus tard sur votre code, vous vous souviendrez de ce que vous aviez fait. Pensez donc à bien commenter votre code.

3

Configurer un projet

Nous avons écrit notre premier programme et vu comment afficher du texte à l’écran. Afficher du texte est très pratique car cela permet notamment de déboguer certaines parties du programme. Pour le moment la fenêtre et le texte sont très petits à l’écran et ce n’est pas l’idéal pour travailler. Dans ce chapitre, nous allons faire un peu de configuration de façon à travailler dans de meilleures conditions par la suite.

Je vous ai dit qu’un projet LÖVE était constitué d’au minimum un fichier main et d’un fichier conf. C’est ce dernier qui va nous intéresser ici. Ce que je vous propose c’est de dupliquer notre projet précédent (le projet 1-HelloWorld) et d’appeler la copie 2-Config. Nous travaillerons sur ce deuxième dossier. Allez dans ce nouveau projet puis éditez le fichier conf.lua qui s’y trouve. Actuellement ce fichier est vide, nous allons le remplir en utilisant la fonction de configuration de LÖVE appelée conf. Comme draw, conf est appelée automatiquement par le framework. Pour utiliser cette fonction, écrivez :

-- Fonction de configuration de LÖVE
function love.conf(w)

end

Note > Le paramètre w que vous voyez vous permettra d’accéder à tout un ensemble de paramètres. Il s’agit d’une lettre arbitraire, vous pouvez l'appeler autrement cela fonctionnera quand même.

3.1. Configurer la fenêtre

Nous allons commencer par donner un titre à notre fenêtre. Le paramètre pour modifier le titre est title vous devez donc écrire w.title = "votre titre" pour le modifier : w.title = "Titre de mon jeu".

Enregistrez votre fichier de configuration puis lancez votre projet. Votre fenêtre aura alors le titre Titre de mon jeu.

Figure 3.1 : Notre fenêtre avec un titre personnalisé

Un autre paramètre très important est la taille de votre fenêtre. Vous pouvez définir la largeur (width) et la hauteur (height) de la fenêtre (window) de la façon suivante :

w.window.width = 1024 -- Largeur
w.window.height = 768 -- Hauteur

Notre jeu aura une résolution de 1024 × 768. J’ai choisi cette résolution car elle fonctionnera chez tout le monde et que nos niveaux seront constitués de 32 cases de 32 pixels en largeur et 24 cases de 32 pixels en hauteur. Nous tombons donc sur cette résolution. Le code complet de notre fichier de configuration est le suivant :

-- Fonction de configuration de LÖVE
function love.conf(w)
  -- On donne une taille en pixels à la fenêtre
  w.window.width = 1024 -- Largeur
  w.window.height = 768 -- Hauteur
  -- On donne un titre à la fenêtre
  w.title = "Titre de mon jeu"
end

Je mettrai systématiquement dans le code des commentaires afin de vous faire un rappel des notions que nous verrons dans ce livre. Si vous testez votre programme, vous verrez que maintenant votre fenêtre sera plus grande que par défaut (la taille par défaut est de 800 par 600).

3.2. Autres paramètres du fichier de configuration

Le fichier de configuration vous donne accès à un grand nombre de paramètres. La plupart ne vous seront pas utiles car par défaut nous avons déjà ce qu’il nous faut. Je vais cependant vous présenter quelques autres paramètres dont vous pourriez avoir besoin.

w.version = "11.3" permet d’indiquer pour quelle version de LÖVE votre jeu a été conçu. Dans mon cas, j’indique la version 11.3 du framework.

w.console = false permet de demander à afficher/masquer la console. Si vous mettez ce paramètre à true (vrai) la console sera affichée. C'est très pratique pour déboguer. Nous l’utiliserons lorsque nous développerons l'éditeur de niveaux.

w.window.icon = nil permet de définir une icône pour votre fenêtre. Par défaut, la valeur nil est définie. Nil signifie valeur nulle. Donc par défaut vous ne spécifiez aucune icône et l’icône de LÖVE sera utilisée. Pour modifier l'icône, il vous suffit de remplacer la valeur nil par le chemin vers un fichier .ico, soit w.window.icon = "chemin/votre_icone.ico". Pour ma part, j’ai mis l'icône dbk.ico dans mon dossier et j’ai spécifié le chemin de cette façon : w.window.icon = "dbk.ico".

Figure 3.2 : Modification de l'icône de la fenêtre

w.window.borderless = false masque la bordure de la fenêtre de votre jeu. Mettez la valeur true pour l'afficher.

w.window.resizable = false permet d'interdire ou autoriser le redimensionnement de la fenêtre.

w.window.fullscreen = false permet d’indiquer si votre jeu doit être affiché en plein écran ou pas.

w.window.msaa = 0 permet d’activer l’anti-aliasing et d'indiquer la valeur que vous souhaitez pour ce dernier.

Note > L’anti-aliasing consiste à lisser les arêtes de vos images. Dans un jeu, les contours des objets présentent des sortes d’escaliers où l’on voit les pixels. Activer l’anti-aliasing permet de lisser ces contours de façon à avoir une belle image bien lisse et non des pixels visibles.

Si vous avez plusieurs écrans de branchés à votre ordinateur, vous souhaiterez peut-être choisir où afficher le jeu. Pour demander spécifiquement l'affichage du jeu sur un écran donné, utilisez le paramètre w.window.display = 1 et indiquez le numéro du moniteur à utiliser.

De la même façon, vous pouvez indiquer la position x et la position en y de la fenêtre du jeu sur votre écran avec les paramètres w.window.x = nil et w.window.y = nil.

C’est à peu près tout au niveau des paramètres. Il y en a bien sûr d’autres un peu plus poussés. Par exemple, si vous développez des jeux pour mobile (disons Android) et que vous souhaitez utiliser un élément nécessitant une autorisation (par exemple le micro du téléphone) alors il faudra utiliser le paramètre w.audio.mic pour demander l’autorisation à Android.

De la même façon, il est possible de passer par ce fichier de configuration pour demander à LÖVE de ne pas charger tous ses modules. Par exemple, si vous n’avez pas besoin du module audio vous pouvez demander à le désactiver avec w.modules.audio = false et LÖVE ne chargera pas les outils pour gérer l’audio. Cela permet d’optimiser les performances. Par défaut, tous les modules sont activés mais ne vous inquiétez pas, LÖVE est un framework très léger, vous n’aurez aucun souci de performance même sur un ordinateur qui aurait 10 ans ! Voici un récapitulatif des quelques paramètres auxquels vous pourrez avoir à faire :

-- Fonction de configuration de LÖVE
function love.conf(w)
  -- On donne une taille en pixels à la fenêtre
  w.window.width = 1024 -- Largeur
  w.window.height = 768 -- Hauteur
  -- On donne un titre à la fenêtre
  w.title = "Titre de mon jeu"

  -- Les autres paramètres (avec leurs valeurs par défaut)
  w.version = "11.3" -- La version de LÖVE pour laquel le jeu a été prévu
  w.console = false -- Afficher la console ?
  w.window.icon = "dbk.ico" -- L'icône de votre fenêtre
  w.window.borderless = false -- Pour supprimer les bordures de la fenêtre
  w.window.resizable = false -- La fenêtre peut-elle être redimensionnée ?
  w.window.fullscreen = false -- Le jeu doit-il être affiché en plein écran ?
  w.window.msaa = 0 -- Pour activer l'antialiasing. Vous pouvez mettre une valeur de 2 ou 4 pour lisser les arêtes
  w.window.display = 1 -- Sur quel écran doit-on afficher la fenêtre du jeu ?
  w.window.x = nil -- Position x de la fenêtre sur votre écran
  w.window.y = nil -- Idem en y
end

...