Les débuts avec LÖVE2D

Qu’est-ce que LÖVE ?

LÖVE est ce que nous appelons un framework. Dit plus simplement, c’est un outil qui permet de programmer des jeux plus facilement.

LÖVE est écrit en C++ et utilise OpenGL, qui sont tous deux considérés comme des technologies complexes. Le code source de LÖVE est très sophistiqué, mais tout ce code complexe nous permet de créer des jeux beaucoup plus facilement.

Par exemple, avec love.graphics.ellipse(), nous pouvons dessiner une ellipse. Voici le code source derrière cette fonction écrit en C++ :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
void Graphics::ellipse(DrawMode mode, float x, float y, float a, float b, int points)
{
  float two_pi = static_cast<float>(LOVE_M_PI * 2);
  if (points <= 0) points = 1;
  float angle_shift = (two_pi / points);
  float phi = .0f;

  float *coords = new float[2 * (points + 1)];
  for (int i = 0; i < points; ++i, phi += angle_shift)
  {
      coords[2*i+0] = x + a * cosf(phi);
      coords[2*i+1] = y + b * sinf(phi);
  }

  coords[2*points+0] = coords[0];
  coords[2*points+1] = coords[1];

  polygon(mode, coords, (points + 1) * 2);

  delete[] coords;
}

Il est probable que vous ne compreniez pas le code ci-dessus, et c’est exactement pourquoi nous utilisons LÖVE. Il prend en charge les parties difficiles de la programmation de jeux, pour nous laisser nous concentrer sur la partie créative et amusante.

Lua

Lua est le langage de programmation qu’utilise LÖVE. Lua est un langage à part entière et n’a pas été créé spécifiquement par ou pour LÖVE. Les créateurs de LÖVE ont simplement choisi Lua comme langage pour leur framework.

Alors, quelle partie de ce que nous codons appartient à LÖVE et quelle partie appartient à Lua ?
C’est très simple : tout ce qui commence par love fait partie du framework LÖVE. Tout le reste est du Lua.

Ce sont des fonctions faisant partie du framework LÖVE :

1
2
love.graphics.circle("fill", 10, 10, 100, 25)
love.graphics.rectangle("line", 200, 30, 120, 100)

Et ceci est simplement du Lua :

1
2
3
4
5
6
function test(a, b)
    return a + b
end

print(test(10, 20))
-- Sortie: 30

Si cette distinction n’est pas encore claire pour vous, ne vous inquiétez pas. Ce n’est pas le plus important pour le moment.

Comment LÖVE fonctionne ?

Info
Il est nécessaire d’avoir installé LÖVE à partir de maintenant. Retournez au chapitre 1 si vous ne l’avez pas encore fait.

LÖVE appelle 3 fonctions principales. La première est love.load(). À l’intérieur, nous créons nos variables et initialisons notre jeu.

Après cela, il appelle love.update() et love.draw() de façon répétitive dans cet ordre.

Donc, pour résumer :

  1. love.load
  2. love.update
  3. love.draw
  4. love.update
  5. love.draw
  6. love.update
  7. …et ainsi de suite

En arrière-plan, LÖVE appelle ces fonctions, donc nous les définissons et les remplissons avec notre code. C’est ce que nous appelons un callback (fonction de rappel).

LÖVE est composé de modules comme love.graphics, love.audio, love.filesystem. Il y en a 15 et chacun se concentre sur un aspect spécifique. Tout ce que vous dessinez appartient à love.graphics et tout ce qui concerne le son fait partie de love.audio.

Pour le moment, concentrons-nous sur love.graphics.

LÖVE possède un wiki avec des explications pour chaque fonction. Disons que nous voulons dessiner un rectangle. Sur le wiki, nous allons sur love.graphics et sur cette page, nous cherchons “rectangle”. On y trouve love.graphics.rectangle.

Cette page nous indique ce que fait cette fonction et les arguments dont elle a besoin. Le premier argument est le mode et doit être du type DrawMode. Nous pouvons cliquer sur DrawMode pour obtenir plus d’informations sur ce type.

DrawMode est une chaîne de caractères qui peut être soit “fill” soit “line”. Elle contrôle comment les formes sont dessinées. Tous les arguments suivants sont des nombres. Si nous voulons dessiner un rectangle plein, nous écrirons le code suivant :

1
2
3
function love.draw()
    love.graphics.rectangle("fill", 100, 200, 50, 80)
end

Maintenant, quand nous exécutons le jeu, nous verrons un rectangle plein.

Les fonctions fournies par LÖVE constituent ce que nous appelons l’API (Application Programming Interface). Une API est un ensemble de fonctions et de méthodes qui permettent à différents logiciels de communiquer entre eux. Vous pouvez lire l’article Wikipedia pour comprendre ce qu’est exactement une API, mais dans notre cas, cela désigne simplement l’ensemble des fonctions LÖVE que vous pouvez utiliser pour créer votre jeu.

Résumé

LÖVE est un framework qui nous permet de créer des jeux plus facilement. LÖVE utilise un langage de programmation appelé Lua. Tout ce qui commence par « love. » fait partie du framework LÖVE. Le wiki officiel nous fournit toutes les informations nécessaires sur l’utilisation de LÖVE.