I. Introduction▲
I-A. Introduction▲
D'une façon générale, cet ouvrage propose de découvrir et d'utiliser la bibliothèque Allegro 5 (version stable dans sa version actuelle 5.0.10) pour des créations graphiques ou des jeux. Tous les programmes d'illustration sont réalisés sous Windows 7, 8, 8.1 avec Microsoft Visual C++ 2010, 2012, 2013 ou Code::Blocks 13.12 comprenant EDI et compilateur mingw32. Toutefois, la bibliothèque étant multiplateforme, tous les exemples de codes peuvent également être compilés sous Mac OS et Linux une fois la bibliothèque installée pour les environnements de développement correspondants.
I-B. La bibliothèque Allegro 5▲
I-B-1. Concept de la bibliothèque▲
En musique, Allegro signifie « rapide, vivant, vif » et fournit pour la bibliothèque l'acronyme récursif « Allegro Low Level Game ROutine ». C'est une bibliothèque de développement graphique pour les jeux vidéo et autres types de programmes multimédia en C/C++ (il existe aussi un portage en C# et en pascal). Elle est distribuée gratuitement et le code source est ouvert. Shawn Hargreaves en a commencé le développement en 1990. Il a depuis lors été recruté chez Microsoft pour diriger le développement de XNA.
Depuis son origine, le développement d'Allegro est toujours resté très actif grâce à un grand nombre de contributeurs répartis à travers le monde. À partir de 2008, la bibliothèque a été séparée en deux branches : Allegro 4 est la branche plus ancienne, Allegro 5 est la plus récente. Ce sont deux bibliothèques différentes et incompatibles entre elles. Allegro 4 n'est plus développée mais ses bogues continuent d'être corrigés parce qu'elle est toujours très appréciée et très utilisée. Le développement s'est déplacé vers Allegro 5 qui offre plus de puissance et des possibilités qu'Allegro 4 ne pouvait pas permettre.
Allegro 5 supporte les systèmes Unix/Linux, Windows, Mac OS X, iPhone et Android depuis la version 5.1, qui est la version en cours de développement au moment de l'écriture de cet ouvrage.
Ses fonctionnalités couvrent l'affichage graphique, éventuellement sur plusieurs écrans, les événements souris, clavier, joystick, le son, le multithread, les minuteurs (timers en anglais), le dessin, etc. Nativement elle supporte la 2D mais elle est compatible avec OpenGL, Direct3D et d'autres bibliothèques 3D. Sa conception est modulaire et de nombreux modules sont optionnels. Par exemple, si l'on préfère ne pas utiliser le module audio de la bibliothèque mais plutôt utiliser une autre bibliothèque comme FMOD, c'est tout à fait possible. Le module audio de la bibliothèque comprend cependant tout le nécessaire pour gérer du son dans un programme.
I-B-2. Documentation▲
D'une façon générale, la documentation est anglophone. Le site officiel est http://alleg.sourceforge.net/. On y trouve tout ce qu'il faut notamment la documentation en ligne. Une version hors ligne est également distribuée.
La version compilée pour Windows de la bibliothèque est distribuée sur le site https://www.allegro.cc/ et se trouve dans la rubrique Files. C'est bon à savoir parce que compiler la bibliothèque soi-même peut s'avérer difficile. Ce site diffuse également la documentation en ligne et hors ligne au format PDF.
Outre une très bonne documentation, la communauté fournit un Wiki et un forum.
I-C. Compilateur et EDI▲
Dans cet ouvrage le développement est effectué sous Windows 8.1 avec les environnements suivants :
- Microsoft Visual Studio et son compilateur (parfois désigné par MSVC).
- Code::Blocks et le compilateur MingW32 qui est inclus par défaut.
La version Express gratuite de Visual Studio 2013 est téléchargeable sur le site de Microsoft.
Code::Blocks est téléchargeable sur son site officiel.
Attention de bien prendre la version comprenant EDI et compilateur, c'est le fichier codeblocks-13.12mingw-setup.exe. Le numéro de version « 13.12 » peut avoir changé, toutefois, ce qui est important, c'est de prendre la version estampillée « mingw ».
I-D. Contenu du livre▲
I-D-1. Principe▲
Le but du livre n'est pas seulement de fournir un « quick start » afin de démarrer rapidement de façon très pragmatique. L'idée est aussi de fournir un début de documentation en français qui soit tout de même un peu plus approfondi. Pour une même proposition, nous essayons d'envisager les différentes fonctions possibles et parfois nous proposons même un détour pour comprendre comment des fonctionnalités de la bibliothèque sont élaborées et programmées. En effet, les développeurs d'Allegro sont des virtuoses du C et c'est très enthousiasmant non seulement d'utiliser la bibliothèque mais aussi de découvrir comment certaines fonctionnalités sont implémentées.
Ainsi c'est aussi le principe d'un cheminement exploratoire pour la découverte technique de la bibliothèque que nous souhaitons proposer.
I-D-2. Objectifs▲
Le livre se partage en deux grandes parties. La première partie constitue un début de référentiel sur la bibliothèque et la seconde est une initiation à la programmation de jeux 2D en C/C++.
La première partie constitue une documentation en français sur la bibliothèque Allegro 5 qui n'en possède pas encore beaucoup au moment de la rédaction de cet ouvrage. La quasi-totalité des publications en français sur la bibliothèque concerne surtout la branche précédente : Allegro 4. Sans être complète, cette documentation va un peu plus loin qu'un simple tutoriel pour démarrer rapidement. Par ailleurs le développement s'effectuant avec les logiciels Code::Blocks et Visual Studio, des explications sont données afin d'installer correctement la bibliothèque sous les deux environnements et d'établir les réglages nécessaires pour les projets ensuite.
- Ainsi dans l'ordre nous abordons, pour la première partie :
- Installation de la bibliothèque (pour Code::Blocks et Visual Studio).
- Premier projet, édition de liens et test (pour Code::Blocks et Visual Studio).
- Fenêtrage et plein écran.
- Couleur, transparence, dessin, texte, polices.
- Images, chargement, affichage, création, superposition, sauvegarde.
- Constitution d'un modèle (template) de projet (pour Code::Blocks et Visual Studio).
- Gestion et capture des événements souris et clavier.
- Pilotage d'un carré avec les flèches.
- Minuteur (Timer) et régulation du temps pour le contrôle des affichages.
- Utilisation du joystick, création d'événements.
La seconde partie concerne la création de jeux :
- Ébauche de vie artificielle à partir de croquis de fourmis.
- Réalisation d'un squelette de jeu d'action simple.
- Gestion des collisions entre personnages.
- Animation, sprites.
- Création de monde, tilemapping.
- Peuplement d'un monde.
I-E. Prérequis▲
Ce tutoriel suppose que l'on commence à maîtriser tous les concepts fondamentaux en langage C inclus dans le C++ : structures de contrôle (test conditionnels et boucles), fonctions, structures, tableaux et pointeurs, directives du pré-processeur (#define etc.).
I-F. Public visé▲
La bibliothèque Allegro 5 permet de développer une grande créativité graphique en C ou en C++. Elle intéresse différents domaines d'activités, des arts aux sciences en passant par les jeux vidéo. Les publics intéressés peuvent être variés et le potentiel est immense. Pour ces raisons, elle est utilisée à l'Université, en IUT et en école d'ingénieurs afin par exemple de compléter des enseignements de programmation en C et C++.
Nous l'utilisons actuellement en première année de licence d'informatique à l'école supérieure d'informatique CS2I Bourgogne située à Nevers. Un module d'étude de la bibliothèque Allegro 5 s'insère dans l'apprentissage de la programmation en langage C vers la fin du premier semestre. Il accompagne pour les étudiants la réalisation en équipe d'un projet de création de jeu vidéo 2D. Outre un indéniable plaisir à coder des jeux 2D rétro, ce module sert pédagogiquement à l'appropriation du langage C et à la découverte de la conception d'un programme d'environ 1000 lignes de code, voire davantage.
La programmation d'un jeu vidéo remonte en effet des problématiques algorithmiques difficiles et le projet pose en amont la question de la constitution de l'espace des connaissances nécessaires à sa réalisation. Il sensibilise ainsi par la pratique à quelques-uns des enjeux de la gestion de projet informatique qui sont approfondis ensuite.
I-G. Remerciements▲
Mes remerciements vont à la communauté Allegro, ses développeurs et son forum auprès desquels on apprend vraiment beaucoup en programmation. Merci en particulier au wiki d'Allegro et à ses auteurs grâce auxquels personnellement j'ai commencé avec Allegro 5. Merci également pour les matériaux libres qui ont inspiré certaines explications dans ce tutoriel. En particulier je voudrais mentionner le travail de Mike Greig sur lequel je me suis appuyé pour l'exemple de jeu donné au chapitre Croquis de fourmis. Également l'ouvrage merveilleux de Jonathan Harbour « Game programming all in one » publié chez Thomson course technology en 2004 qui traitait alors de la bibliothèque Allegro 4. J'ai repris quelques sprites libres de droits qu'il proposait simplement parce que je les aime beaucoup comme étant très emblématiques de la création 2D et parce qu'ils m'accompagnent depuis cette époque. Ces graphismes sont dus à Ari Feldman et sont toujours téléchargeables à http://www.wid-getworx.com/spritelib/.
Par ailleurs d'un point de vue académique je remercie Frédéric Ravaut responsable du cycle L d'informatique à l'école centrale d'électronique de Paris (ECE) qui m'a permis d'inaugurer la programmation graphique dans les cours de C. Je remercie également vivement le Directeur de la pédagogie de l'école supérieure d'informatique CS2i Bourgogne, M. David Aurousseau qui soutient dans une visée entrepreneuriale les projets créatifs et originaux de nos étudiant(e)s pour tous les domaines de la programmation informatique.
Obtenir ce livre▲
Ce document est une retranscription autorisée du livre Allegro 5 - Programmation de jeux en C et C++ écrit par Frédéric DROUILLON. Initialement publié aux éditions ENI, vous pouvez commander le livre sur le site de l'éditeur. |