Solarus Wiki

A wiki for the Solarus engine community

Outils pour utilisateurs

Outils du site


fr:learning_lua

Apprendre Lua

Lua est un langage de script très populaire dans le monde du jeu vidéo. Beaucoup de jeux commerciaux, dont World of Warcraft, utilisent Lua pour définir leur contenu.

Nous avons choisi Lua pour Solarus parce que c'est facile à apprendre. Un effort minimal es requis pour être capable de programmer votre première map. Beaucoup d'autres langages de script sont également faciles à apprendre, mais Lua est minimal et pourtant très puissant grâce à sa flexibilité.

Le moteur Solarus est programmé en C++, et une quête utilisant Solarus est programmée en Lua. La partie C++ (le moteur) effectue tous les calculs complexes (par exemple, les tests de collision) et les opérations de bas niveau comme dessiner à l'écran, animer les sprites et jouer les sons. En tant que créateur de quête, vous n'avez pas à vous préoccuper de l'implémentation de ces algorithmes. En revanche, vous souhaitez définir la logique de jeu. Vos scripts Lua décrivent le comportement des ennemies, ce qui arrive lorsqu'on appuie sur un bouton d'une map spécifique, … Ils implémentent aussi l'écran titre et le hud (affichage tête-haute).

Les deux parties (le moteur C++ et les scripts Lua de votre quête) communiquent par une API. La communication fonctionne dans les deux sens : vous pouvez appeler les fonctions du moteur (exemple : vous souhaitez déplacer un PNJ) et le moteur appelle vos propres fonctions (exemple: être informé qu'un ennemie vient d'être tué). Mais avant d'utiliser l'API de Solarus, vous devez apprendre les base de Lua.

Pour apprendre Lua, nous recommandons de lire le livre Programming in Lua book. Lisez au moins les chapitres 1 à 5, et vous en saurez assez pour faire vos premiers scripts et comprendre l'API Lua de Solarus. Plus tard, vous devriez aussi lire les chapitres 11, 13, 16, 18, 19, 20 pour vraiment maîtriser le langage.

fr/learning_lua.txt · Dernière modification: 2018/12/22 14:14 (modification externe)