Big Tuto SDL 2 : Rabidja v. 3.0

Chapitre 2 : Configurer notre projet en SDL 2 sous Code::Blocks

 

Tutoriel présenté par : Jérémie F. Bellanger (Jay81)
Réécriture complète : 28 septembre 2014
Dernière révision : 29 mai 2016

 

      Prologue

 

   Avant de commencer, je tiens à vous signaler que Gondulzac a préparé un tutoriel expliquant comment configurer et créer un projet SDL 2 sous Visual Studio. Vous aurez donc le choix : libre à vous de choisir entre Code::Blocks et Visual Studio, voire de tester les deux ! wink 

   Si vous préférez donc cet IDE, passez donc directement au chapitre 3. wink.

 

 

      1. Installer l'environnement de travail

               A. Installer l'IDE Code::Blocks 

 

    Pour programmer, nous avons besoin d'un IDE, c'est-à-dire d'un programme qui nous permettra d'écrire notre code source, puis de le compiler pour le tester (enfin, on peut aussi utiliser un éditeur de texte et compiler via la console, mais je le déconseille aux débutants wink). Il en existe plusieurs, et on verra ici comment utiliser Code::Blocks.

    Le lien ci-dessous vous enverra sur la dernière version de Codeblocks (si ce n'est plus le cas, merci de m'en faire part par mail, MP ou sur le forum wink). Sélectionnez Download the binary release, puis sur la nouvelle page, nous vous recommandons de choisir la version en bundle avec le compilateur MinGW qui aura un nom du style : codeblocks-16.01mingw-setup.exe (recommandé).

    Toutefois, vous pouvez aussi choisir d'installer l'IDE et le compilateur séparément. Dans ce cas, installez d'abord le compilateur grâce au lien ci-dessous, puis la version simple de Code::Blocks qui a un nom du style : codeblocks-16.01-setup.exe.

Télécharger Code::Blocks 

 

 

               B. Installer le compilateur MingW

Seulement si vous avez choisi la version standalone de Code::Blocks ! 

 

    Voilà maintenant le lien vers MingW, si vous souhaitez l'installer séparément pour avoir la dernière version disponible.

   Le nom du fichier à télécharger change en fonction des mises à jour, mais sur la dernière version de la page de téléchargement, vous noterez le message : "Looking for the latest version? Download mingw-get-setup.exe". C'est ce qu'il vous faut. Voilà, installez maintenant MingW puis Code::Blocks et on est prêt à décoller  !

Télécharger MingW

 

N.B.: Si vous les télécharger séparément, installez MingW avant Code::Blocks, pour qu'il le détecte à l'installation.  Sinon, vous pourrez le régler plus tard dans les options. Notez que vous pouvez aussi compiler avec le compilateur de VS sous Code::Blocks, les deux compilateurs étant différents (mais autant installer VS dans ce cas cheeky).

 

 

               C. Installer la SDL 2 

    Pour programmer notre jeu de plateformes, nous allons avoir besoin de bibliothèques tierces (libraries en anglais) nous permettant de gérer les entrées (clavier, joystick), la vidéo, le texte, le son, etc.
    Pour cela, nous allons utiliser la SDL 2 et ses bibliothèques annexes (TTF pour le texte, Mixer pour le son, etc.).

 

Attention !!! Dans ce tutoriel, nous utiliserons bien la SDL 2, et non pas la 1.2. Faites donc bien attention à sélectionner la SDL 2 et par la suite les versions des libs compatibles, sinon, ça ne marchera pas !

    

   Pour plus de renseignements sur la SDL, je vous renvoie à son site officiel (cliquez sur l'image ci-contre).

   Sur cette page, allez dans la section Development libraries, puis choisissez Windows, et là, choisissez la version pour Mingw 32/64 bits.


    Pour l'installer, c'est assez simple, il suffit d'extraire les fichiers de l'archive puis de les copier, de préférence sous : C:\SDL2, pour pouvoir la retrouver facilement par la suite. 
 

Notez aussi que le fichier .dll (SDL.dll) devra être copié dans tous les dossiers de programmation de vos applications. Il s'agit en effet de la bibliothèque dynamique et votre .exe en aura besoin pour fonctionner. wink

 

 

      2. Créons notre projet Code::Blocks

    Nous allons voir ici comment configurer Code::Blocks pour qu'il détecte la SDL 2 et que nous puissions créer notre projet. Toutefois, pour ceux qui rencontreront des difficultés à faire ces manips, sachez que vous pourrez télécharger l'archive du chapitre 3, qui contiendra tout ce qu'il faut pour configurer le tout, clefs en mains (avec un mode d'emploi simplifié). Cela dit, les infos qui suivent sont essentiels pour tout programmeur qui se respecte, et vous y serez forcément confrontés un jour ou l'autre .

    Alors accrochez-vous maintenant, car ça va être un peu plus compliqué que pour la SDL 1.2. cheeky


    Si vous avez suivi les instructions précédentes, vous devriez avoir mis le contenu de votre archive zip dans un répertoire nommé SDL2, sous C, soit C:/SDL2. Or là, vous constaterez qu'il existe 2 versions de la SDL : i686 et x86_64. Il va en fait falloir choisir la bonne selon votre config et votre OS :

 

i686 = architecture 32-bits Intel x86
x86_64 =
architecture 64-bits Intel x86

 

    Donc, si vous avez un PC récent avec plus de 3 Go de Ram et Windows 7, 8 ou 10 en 64 bits, vous prendrez x86_64, sinon vous prendrez l'autre. Notez aussi que compiler en 32 bits peut être un avantage si vous voulez que votre jeu puisse tourner sur des PCs plus anciens. Toutefois, l'utilisation de la mémoire devrait être moins optimisée. Tout dépend donc de votre projet . Dans le doute, la version 32 bits devrait de toute façon marcher (et peut parfois être conseillée - attention toutefois à ne pas mélanger les fichiers entre les deux, sinon ça ne fonctionnera pas !)  .

    Voilà, si vous avez tout bien copié comme moi (pour avoir le même linkage), vous devriez avoir ceci :

 

 

    Première étape : Maintenant, il vous faut ouvrir Code::Blocks (pour une fois, ça c'est pas trop dur  !). Là, choisissez : Files - New - Project. Vous devriez obtenir ceci :

 

 

   Attention ! Ne choisissez pas SDL project, vous créeriez un projet SDL 1.2 ! Faites défiler jusqu'à choisir Enpty Project. Cliquez sur GO pour atterrir sur cette page :

 

 

    Là, il suffit simplement de cliquer sur Next. Il n'y a rien de plus à faire. Vous tombez alors sur une nouvelle page qui va vous demander des informations vis-à-vis de notre projet.


    Pour le nom, j'ai choisi Rabidja, mais libre à vous de lui donner un autre nom (cela ne vous empêchera pas de télécharger et de tester les archives pré-configurées du site, à côté ). Indiquez ensuite où le projet sera stocké sur le disque (un endroit facile à retrouver de péférence ). Le nom du fichier projet Code::Blocks prend automatiquement le nom de votre projet (logique). Et le tour est joué ! Plus qu'à appuyer sur Next !

 

 

    Ici, normalement tout est préréglé, donc rien à faire. Il vous indique simplement le compilateur utilisé et où seront rangés les exécutables et les makefiles de votre jeu après complilation (debug et release). Cliquez sur Next !

 

 

    Plus qu'à cliquer sur Finish et notre programme est créé ! Seulement voilà, la SDL 2 n'est pas du tout configurée... sad Et c'est là que ça va se compliquer !

 

 

    Il va maintenant falloir aller dans Project - Build option :

 

 

   Dans l'onglet Linker settings, cliquez sur le bouton Add et ajouter les fichiers suivants (à la question "Keep as relative path ?", vous pouvez répondre OUI ) :
   Dans le répertoire de Codeblocks (normalement : C:\Program Files) :

CodeBlocks/MinGW/lib/libmingw32.a  

   Dans le répertoire SDL2 (vous remarquerez que j'ai choisi la version 32 bits à des fins de compatibilité ) :

i686-w64-mingw32/lib/libSDL2main.a
i686-w64-mingw32/lib/libSDL2.dll.a

Il faut mettre ces 2 dernières libs dans l'ordre, sinon ça risque de ne pas fonctionner.

 

   Allez ensuite dans l'onglet : Search directories.
   Dans le premier onglet : Compiler, choisissez Add et ajoutez le répertoire include de la SDL 2 :

C:\SDL2\i686-w64-mingw32\include


 

    Dans le deuxième onglet : Linker, ajoutez de la même façon le repertoire contenant les libs:

C:\SDL2\i686-w64-mingw32\lib


 

   Voilà, notre projet SDL2 est maintenant créé !

   Sachant qu'il existait une template sous Code::Blocks pour configurer automatiquement un projet SDL 1.2, on peut penser qu'il en sortira une prochainement pour la SDL 2, ce qui devrait simplifier toutes ces manoeuvres. Espérons-le !

   Voilà, nous allons à présent copier la dll se trouvant dans le dossier bin de votre type de SDL2 dans le répertoire de notre projet, soit SDL2.dll qui va aller dans le dossier Rabidja ! Et hop !

   Maintenant que c'est fait, il nous reste encore à configurer notre projet en mode GUI, et non pas console, puisqu'on va créer un jeu vidéo .
   Pour cela, allez sur le nom de votre projet, et choisissez Properties :

 

 

 

    Là, vous irez dans l'onglet Build Targets, et vous choisirez GUI Application dans Type, à la fois pour la Debug et la Release :

 

 

    Cliquez ensuite sur OK.

    Pour vérifier que tout fonctionne correctement et que ça compile, on maintenant créer notre 1er fichier : main.c.

    Pour cela, faites, File - New - Empty File.

 

 

    Si CodeBlocks vous demande de sauvegarder, dites oui et appelez ce fichier main.c.

 

 

    Voilà, plus qu'à taper du code minimal dans ce fichier. Entrez donc le code suivant, sauvegardez puis compilez. Normalement, ça devrait fonctionner ! angel

 

#include <SDL2/SDL.h>
 
int main(int argc, char* argv[])
{
      return 0;
}

 

 

 

 

 

 

      3. Installons les bibliothèques SDL_Image 2, SDL_TTF 2 et SDL_Mixer 2

 

   Vous pourrez trouver ces 3 bibliothèques (ou libs pour libraries en anglais wink) en suivant les liens ci-dessous :

Télécharger SDL_Image 2

Télécharger SDL_TTF 2

Télécharger SDL_Mixer 2

 

   Là, vous choisirez dans tous les cas les Development Libraries, en faisant bien attention que leurs noms commencent par SDL2 (les versions pour la SDL 1.2 sont dispos en cliquant sur un lien en haut mais elles ne sont pas compatibles avec la SDL 2 et vice versa !).

   Comme nous sommes sous CodeBlocks avec le compilateur MingW, vous choisirez donc bien cette version ! wink

   Vous devriez ainsi obtenir les fichiers : SDL2_image-devel-2.0.0-mingw.tar.gzSDL2_ttf-devel-2.0.12-mingw.tar.gz et SDL2_mixer-devel-2.0.0-mingw.tar.gz.

 

Attention, elles ne sont pas faciles à trouver sur le site de la SDL, en-dehors de ces liens !...

 

   SDL_image est une bibliothèque très pratique qui permet de charger des fichiers d'image dans d'autres formats que le simple BMP de la SDL, comme le jpg et le png par exemple. D'ailleurs, si vous devez choisir un format d'image pour votre jeu, je vous conseille le format png car il est non destructif (donc l'image reste la même) et gère la transparence.

   SDL_TTF, quant à elle, permet d'afficher du texte à l'aide d'une police de caractères.

   Et enfin SDL_Mixer nous permettra de jouer de la musique et des effets sonores pour notre jeu. cool

   Nous allons donc maintenant installer ces 3 libs dans notre projet.

   Dézippez-les jusqu'à obtenir un dossier contenant 2 sous dossiers : i686-w64-mingw32 et x86_64-w64-mingw32. Le plus simple est de les sélectionner à chaque fois et de les copier sous C:/SDL2, là où vous avez installé la SDL2 plus haut. Ainsi tous les fichiers nécessaires (headers .h, libs et dll) seront copiés. wink

 

 

   Copiez ensuite tous les fichiers .dll du dossier lib dans le dossier de votre projet (par exemple Rabidja).

   Il ne reste plus qu'à configurer Code::Blocks de la même façon que nous avons configuré la SDL 2 tout à l'heure.

   Faites un clic droit dans Code::Blocks sur le nom de votre projet puis choisissez : Build options...

 

 

   Dans l'arborescence, choisissez le nom de votre projet pour configurer tout le projet d'un coup et choisissez l'onglet Linker Settings.

 

 

   Dans Link libraries, choisissez add puis sélectionnez toutes les libs en .dll.a et en .a pour libSDL2_image, libSDL2_ttf et libSDL2_mixer comme dans l'image ci-dessus, en recherchant là où vous avez installé la SDL 2 (par exemple : C:\SDL2\i686-w64-mingw32\lib\libSDL2_image.dll.a).

   Une fois qu'elles sont toutes ajoutées, cliquez sur OK en bas, et normalement c'est bon !

 

    Voilà, passez désormais au chapitre 4 pour vous attaquer aux premières lignes de code de votre jeu, à moins que vous ne souhaitiez aussi installer Visual Studio au chapitre 3 !

          @ bientôt sur Meruvia ! wink

                                                 Jay.

 

 

Connexion

CoalaWeb Traffic

Today71
Yesterday178
This week571
This month4245
Total1743452

25/04/24