French Chinese (Simplified) Dutch English German Greek Italian Japanese Korean Spanish

     

 



 

 

Big Tuto SFML 2 : Rabidja v. 3.0

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

 

Tutoriel présenté par : Jérémie F. Bellanger (Jay81)
Ecriture : 11 février 2014
Dernière révision : 02 novembre 2015

 

      Prologue

    Comme je l'avais promis à certains d'entre vous, j'ai adapté Rabidja 3.0 du Big Tuto C/SDL 2 en C++/SFML 2.

    Mais qu'est-ce que ça change, me direz-vous ? surprise

    Eh bien, pour le joueur, pas grand chose ! wink Les deux versions sont quasiment identiques au niveau du gameplay, de l'affichage et de la fluidité. La seule différence, pour l'instant, c'est que les monstres peuvent désormais prendre les pentes, eux aussi. cheeky

    Par contre, pour le programmeur que vous êtes, ça change TOUT cheeky L'architecture n'a plus rien à voir. On est maintenant passé en Programmation Orientée Objet (POO), avec des classes et tout ! Si ça, c'est pas la classe ! (Oui, je sais, elle était facile... indecision)

 

   Mais, je suis débutant, quelle version me conseillez-vous ? frown

   Eh bien, ce n'est pas facile de répondre car chaque version à ses avantages et ses inconvénients (liés aussi bien au choix de la lib : SDL 2 ou SFML 2, que du langage : C ou C++) et ses difficultés propres. Maintenant, pour ce qui est de la logique pur du moteur de jeu, ce sera exactement la même. wink

    Toutefois, je peux vous donner quelques pistes :

     - Le Big Tuto C / SDL 2, de par l'ancienneté du langage, permet plus de liberté dans l'organisation du code mais il est aussi plus exigeant : il faut maîtriser les pointeurs, les allocations / libérations de la mémoire, etc. Cela dit, la SDL 2 offre un contrôle de bas niveau, qui nous permet d'organiser les choses comme on le souhaite.

    - Le Big Tuto C++ / SFML 2 adopte une architecture classique en POO, qui est peut-être plus contraignante (même si j'ai fait exprès de ne pas trop pousser l'usage des classes avec des classes dérivées ou virtuelles, pour ne pas perdre les débutants en cours de route. Gondulzak proposera certainement quelque chose à ce propos, plus tard wink). En retour, par contre, on bénéficie de la facilité d'utilisation du C++ (notamment avec les chaînes de caractères - ou strings, les références, etc.). Vous verrez que la SFML 2 est aussi beaucoup plus simple d'utilisation que la SDL 2. Par contre, elle offre aussi en retour moins de contrôle. Nous le verrons ainsi lors de l'allocation de sprites en mémoire, par exemple : comme la SFML désalloue automatiquement les objets périmés, il conviendra, à veiller à ce qu'ils restent en vie suffisamment longtemps pour pouvoir nous servir. wink

 

     Au final, le choix vous revient. C'est avant tout une question de goût. wink

    Pour ma part, j'ai pris autant de plaisir en C / SDL qu'en C++ / SFML 2, et je dirais, que si vous voulez parfaire votre connaissance, à la fois du C et du C++, il peut être intéressant de lire les deux ! laugh

    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 (elle est issue de la version C / SDL 2 du jeu, mais la version C++ / SFML 2 a exactement la même tête cheeky). 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 de meruvia.fr 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

   Pour cela, je vous propose de lire d'abord le Big Tuto : Apprenez le C++, rédigé par Gondulzak, pour apprendre les bases du langage. 

 

       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).

 

Pour ce Big Tuto précédent, on utilisera le nouveau Level Editor officiel du Meruvia Game Studio, qui est disponible icicool

Il a été programmé en C / SDL 2 (le code source est fourni, mais pour vous en servir en stand-alone, cliquez simplement sur LevelEditor.exe) mais cela ne changera rien, puisqu'on s'en servira simplement pour éditer les maps de notre jeu.

Notez que le format des maps, que nous verrons plus tard, est le même pour le Big Tuto C / SDL 2 et C++ / SFML 2. wink

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 n'en avez pas déjà un, il vous faudra installer un IDE (Code::Blocks ou Visual Studio 2013 (ou 2015), qui sont gratuits, par exemple). wink

   Pendant longtemps, j'ai conseillé Code::Blocks aux débutants, cependant Visual Studio 2013, même s'il est un tout petit peu plus complexe à configurer, apporte ensuite un véritable confort d'utilisation ! cool Je travaillerai donc avec lui pour ce tuto, surtout depuis que Microsoft nous propose la version complète : Community, entièrement gratuite ! wink Dans tous les cas, si vous choisissez un autre IDE, vous pourrez vous rendre sur le site officiel de la SFML, où on vous expliquera comment configurer l'IDE de votre choix.

 

   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 bien lire la documentation officielle ainsi que le chapitre suivant pour Visual Studio 2013. Je proposerai aussi une archive téléchargeable déjà préconfigurée pour faciliter la vie de certains (avec le chapitre 3 du Big Tuto SFML 2) ! wink

   Et voilà pour ce chapitre de présentation, rendez-vous maintenant au chapitre 2 pour configurer Visual Studio 2013 Community. wink

   @ bientôt sur Meruvia,

                                   Jay.

 

Commentaires   

-3 #1 laverdure 08-05-2016 11:45
J'aurais une question , j'ai le droit d'utiliser votre level edditor pour mon propre jeu ?
+1 #2 jay81 08-05-2016 14:21
Salut :-) ,

Oui, tu as le droit d'utiliser le level editor pour créer des niveaux pour ton propre jeu (commercial ou non) mais pas de redistribuer le level editor avec ou de le revendre.

@ bientôt. :-)
0 #3 jj42 21-07-2016 15:28
Je viens juste de commencer à programmer avec la SFML. J'espere que tout va bien se passer! Mille et une fois merci ! jay81
0 #4 fanchlerouge 22-08-2017 11:21
Bonjour,

Le lien du level editor semble ne plus être correct. Impossible de le télécharger.

Bien cordialement,
Fanch
0 #5 jay81 22-08-2017 11:31
Bonjour, :)

Oui merci, c'est corrigé. ;)

Il suffisait juste d'aller le rechercher dans la section Téléchargements . Le lien n'a pas dû aimer la dernière mise à jour. :P

@ bientôt ! :lol:
0 #6 fanchlerouge 22-08-2017 12:06
Super merci.

Je vais tenter de configurer Visual studio community 2017. Ce n'est pas gagner, mais c'est en forgeant que l'on devient forgeron.

A bientôt... :)

Fanch
0 #7 jay81 22-08-2017 13:05
Attention, car je ne suis pas sûr que la nouvelle version de la SFML pour VS 2017 soit disponible sur leur site (auquel cas, il faut la compiler soi-même)... :-*

De même, si c'est une version supérieure à celle utilisée dans le tuto, il se peut que le code ne fonctionne pas directement : il faudra le mettre à jour en suivant les évolutions de la SFML. ;)

Après, tu peux toujours utiliser le même VS que celui du tuto et la même version de la SFML, cela dépend de ce que tu veux faire. ;)

Bon courage ! :D
0 #8 fanchlerouge 23-08-2017 08:51
Ho, super merci. Déjà que j'ai planté le code avec le test pour code::block. Je crois que je vais avoir l'immense joie de compiler la SMFL pour code::block et Visual studio community 2017.

Merci beaucoup, je vais en avoir besoin du courage.

Fanch

Connectez-vous ou inscrivez-vous pour pouvoir poster.