cazh-CNendeeliwhiiditjakoptrues

     

 

 

Big Tuto SDL 2 : Rabidja v. 3.0

Chapitre 1 : Créons un jeu de plateformes de A à Z avec la SDL 2 !

 

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

 

      Prologue

   Ce Big Tuto est en fait une sorte de remake de mon premier Big Tuto Rabidja, qui était alors écrit à l'aide de la SDL 1.2. Avec la sortie de la SDL 2, j'ai amélioré ce premier tutoriel avec l'aide de Gondulzak, avant de décider de le réécrire entièrement pour prendre en compte la SDL 2 dès le début.   

    Maintenant, je vais vous expliquer ce que ce nouveau tuto va apporter par rapport au précédent, car ce dernier permet déjà d'arriver à un résultat très convaincant à la fin de ses 35 chapitres. 

   Eh bien concrètement, voilà ses avantages :

- vous commencerez directement en SDL 2 et n'aurez donc pas à switcher d'une SDL à l'autre comme dans le tuto précédent (même si chaque chapitre a été converti par notre ami Gondulzak). 

- le code a été entièrement réécrit et optimisé : les variables globales (considérées par certains comme mauvaises, même si le sujet prête à caution cheeky) ont disparu et le code a été optimisé et arrangé façon objet, comme dans des langages plus puissants tels que le C++, le C# ou le java. Si vous passez d'un monde à l'autre, la transition sera donc plus facile (même s'il reste les gentils petits pointeurs du C ! cheeky ).

- certaines fonctions ont été largement améliorées (notamment la fonction gérant la caméra du scrolling). 

- la gestion des ressources a été améliorée et respecte davantage les codes de bonne pratique recommandés dans l'écriture d'un jeu vidéo : utilisation de grosses spritesheets, chargement des ressources une fois en début de programme et déchargement à la fin, etc.

- les différents fichiers du code constituent quasiment des "classes" en eux-mêmes (même si les classes n'existent pas en C...) et sont donc plus facilement transposables d'un projet à un autre : vous pourrez donc consulter un chapitre spécifique et intégrer son contenu à votre propre projet en le "branchant simplement" à l'aide des fonctions classiques : init(), update(), draw() et clean().

 

   Voilà, cependant, si vous comparez les deux jeux obtenus à la fin de ce Big Tuto et du Big Tuto SDL 1.2 / 2, vous ne distinguerez que très peu de différences in-game, si ce n'est le déplacement de la caméra ! cheeky Les nouveautés sont donc principalement dans le code. 

   Notez également que ce projet a également été adapté en C++ avec la SFML dans le Big Tuto Rabidja SFML 2. A vous de choisir votre langage / lib de prédilection ! wink Ou de tester les deux ! cheeky

    Voilà, il est maintenant temps de commencer par le commencement et de voir les prérequis nécessaires pour bien suivre ce Big Tuto !

    Bonne lecture !
                                   Jay.


Voici Rabidja, ce sera le héros de notre jeu de plateformes !

 

     A propos de ce tutoriel

    Si votre rêve a toujours été de créer votre propre jeu, que vous ne savez pas par où commencer, mais que vous avez suffisamment de courage pour vous lancer dans la programmation, vous êtes à la bonne adresse ! wink


    Nous commencerons par installer ce dont nous aurons besoin pour notre jeu, puis par créer la base de notre moteur de jeu, avant de rajouter au fur et à mesure de nouvelles fonctionnalités qui le rendront toujours plus professionnel.
 

    Cette vidéo présente le jeu que vous serez amenés à créer en suivant ce tuto. Bien entendu, vous serez libres de l'adapter comme bon vous semblera et de remplacer tous les "assets" (= graphismes, tiles, sprites, musiques, effets sonores, etc.) par les vôtres pour créer VOTRE JEU cool

 

   Je tiens d'ailleurs à préciser que tous les éléments graphiques et sonores du jeu sont soumis au droit d'auteur du Meruvia Game Studio et de son ou ses créateurs respectifs. Vous pouvez donc les utiliser dans le cadre de ce tuto pour vous exercer chez vous, mais vous n'avez pas le droit de les utiliser pour distribuer votre jeu, que ce soit à des fins commerciales ou non. Changez-les par les vôtres, votre jeu n'en sera que davantage le vôtre ! wink

 


Voilà une présentation du jeu que nous allons programmer.



       1. Avant de commencer

    Avant de vous lancer tête bêche dans ce tutoriel, il y a des prérequis. cheeky
 
   En effet, comme nous allons programmer notre jeu en C, il vous faut déjà connaître les bases de la programmation dans ce langage. wink
 
   Et cela tombe bien, car Meruvia vous propose également un Big Tuto pour apprendre les bases du C, co-écrit par moi et notre ami Ludovyc ! 
 
   Alors, si vous découvrez ce nouveau monde qu'est la programmation, c'est par ici que ça se passe :

 

 

       2. Le préprojet

    Avant de commencer à programmer quoi que ce soit, commençons par réfléchir à ce qu'on veut créer. En effet, on ne peut pas se lancer dans un projet, si l'on n'a aucune idée du résultat auquel on veut parvenir. On ne doit pas pour autant fignoler tous les détails dès maintenant, loin de là, le projet va mûrir en cours de route. Mais il est indispensable d'avoir déjà une idée générale de ce à quoi on veut parvenir et c'est ce que l'on va voir dans un premier temps.

   C'est un étape incontournable dans la création d'un jeu, même si elle est ici un peu biaisée, car le jeu existe déjà, et vous venez de le voir tourner dans la vidéo ci-dessus ! cheeky

 

    Nous allons donc créer un jeu de plateformes original qui reposera sur notre propre moteur de jeu, que nous ferons évoluer selon nos propres besoins, bien sûr. wink

   Notre personnage sera un lapin ninja du nom de Rabidja (c'est le lapin-vendeur de la série des jeux Aron et il est jouable dans Wiwi's Adventures 3 pour ceux qui connaissent wink) : il pourra sauter sur la tête des ennemis pour les tuer (comme dans Mario) et pourra donc rebondir sur leurs têtes (il faudra gérer cela). Plus tard, il lancera aussi des shurikens (Ninja Attack !! laugh). Pour les power-ups, notre héros ramassera des étoiles et au bout de 100, il gagnera une vie (comme c'est original ! Mais il faut bien poser les bases cheeky).

   Mais alors, dès à présent, de quoi va-t-on avoir besoin, concrètement ? surprise

 

   Pour l'instant, notre but va être de mettre en place un moteur de jeu basique qui gèrera :

- l'affichage de la map sur plusieurs couches (le background en couche de fond et devant plusieurs couches de tiles sur lesquelles marchera le héros et qui feront aussi office de décor. Les différentes couches permettront de donner un effet de profondeur (on pourra passer devant ou derrière certaines tiles)).

- le déplacement au clavier (et au joystick !) du héros.

- l'initialisation et la gestion des monstres.

- la gestion des collisions avec les monstres mais aussi le décor (pour ne pas passer au-travers du sol !).

- les power-ups étoiles et la gestion des vies.

- l'animation.

- l'affichage du HUD (nombre de vies, d'étoiles).

- la musique et les effets sonores (sounds Fx).

- et quelques menus comme le menu Start et Pause par exemple.

 

   Voilà, en gros, pour l'instant. Cela peut vous paraître énorme comme travail, mais en fait ce n'est vraiment que la base et en termes de développement, cela prend très peu de temps, comparé au peaufinage du jeu avec l'ajout de plein de petits détails de gameplay, le level design ou même la conception artistique des graphismes. wink

   D'ailleurs, en parlant de level design, il ne va pas falloir oublier non plus d'avoir un deuxième programme pour le level editor. Eh oui ! Créer un jeu, c'est aussi créer plusieurs outils qui permettront plus tard de développer le jeu facilement. Et vous verrez qu'avec un level editor, c'est quand même plus agréable de concevoir des niveaux qu'en rentrant des chiffres à la main dans un fichier de données (surtout s'il y en a 10 000 pour une map ! surprise).

Dans le Big Tuto précédent, je vous avais montré comment créé un level editor basique en SDL 1.2 : il peut encore reservir ici, peu importe qu'il soit en SDL 1.2, tout ce qui nous intéresse, ce sont les fichiers maps exportés ! wink

Cela dit, comme ce level editor était un peu trop limité et peu pratique, j'en ai créé un nouveau (aussi pour mon usage professionnel) qui est disponible ici. Il est beaucoup plus puissant grâce aux améliorations apportées régulièrement par la communauté (je remercie notamment Stephantasy pour tout ce qu'il a pu apporter au logiciel ! wink).

Qui plus est, je vous donne également son code source à des fins pédagogiques mais aussi pour que vous puissiez l'améiorer à votre guise et le modifier selon vos besoins (n'hésitez pas à nous renvoyer votre version optimisée dans ce cas, ce sera sympa pour la communauté) ! cool

Nous nommerons notre jeu d'après le nom de son héros : Rabidja.
Maintenant, ce tutoriel est là pour vous aider à créer votre propre jeu.
 
Si vous avez donc déjà votre héros en tête, mieux encore, si ses sprites sont même déjà prêts, utilisez le nom de votre personnage et personnalisez ce tutoriel !
 
Sans oublier de nous présenter votre jeu et de nous faire part de l'avancée de votre projet sur le forum de ce site !!

 

 

       3. Installer l'environnement de travail 

   Dans les chapitres suivants, vous allez voir comment mettre en place votre environnement de travail pour pouvoir vous lancer dans le tuto.

   Si vous avez suivi le Big Tuto C, vous devriez déjà avoir un IDE (Code::Blocks ou Visual Studio), dans le cas contraire, il faudra en installer un. wink

   Pendant longtemps, j'ai conseillé Code::Blocks aux débutants (notamment dans le Big Tuto précédent), cependant Visual Studio, même s'il est un tout petit peu plus complexe à configurer au départ, apporte ensuite un véritable confort d'utilisation ! cool Je travaillerai donc prioritairement avec lui (même si j'inclus souvent les deux projets : CodeBlocks et Visual Studio (2013) dans les archives téléchargeables). wink

 

   Attention aussi, la configuration des IDE pour pouvoir programmer est très tâtillonne : une seule micro erreur et ça ne fonctionnera pas ! laugh
   Je vous demanderais donc de lire les chapitres suivants (2 ou 3 selon l'IDE que vous aurez choisi) avec beaucoup de précautions.
   Je propose aussi une archive téléchargeable déjà préconfigurée pour faciliter la vie de certains (cf. Téléchargements) ! wink

 

   Et voilà pour ce chapitre de présentation, rendez-vous maintenant au chapitre 2 si vous avez choisi d'utiliser Code::Blocks ou au chapitre 3, si comme moi, vous préférez Visual Studio. Dans tous les cas, ces deux IDE sont gratuitswink

 

        @ bientôt sur Meruvia,

                                              Jay.

 

 

Connexion

CoalaWeb Traffic

Today51
Yesterday173
This week555
This month4409
Total1572790

28/10/21