Anthony Verdon - Portfolio





So_long est un projet faisant partie des 3 premiers projets graphiques de l'école 42, dont le but est d'apprendre à utiliser une librairie graphique (la miniLibX ou une de ses dérivés, ressemblant à SDL2) pour créer un projet 2D. Dans So_Long, le but est de créer un jeu vidéo où le joueur devra ramasser tous les objets d'un niveau avant de se diriger vers la sortie.




example of a so long from subject

un exemple donné avec le sujet du projet




Personnellement, je suis parti sur aspect de donjon, où le joueur incarne un chevalier qui doit ramasser tous les coffres en évitant les ennemis puis se diriger vers l'échelle qui apparaît lorsque tous les coffres ont été ramassé.




tileset from so_long

Le tileset que j'ai décidé d'utiliser




Le programme, développé en C, se lance avec comme paramètre un fichier .ber, extension créée pour se projet. Ce fichier contient les informations du niveau, tel que les espaces vides (0) ou le joueur peut se déplacer, les murs (1) qui empêchent le joueur d'avancer, les objets (?) que le joueur doit ramasser, la sortie (E) qui permet de finir le niveau, et les monstres (M) qui peuvent tuer le joueur. Ainsi, avant que le jeu ne commence, il faut effectuer une vérification sur ce fichier pour s'assurer qu'il soit conforme à certaines règles, comme le fait de pouvoir finir le niveau, ou bien que la carte soit un rectangle ne comportant que les caractères ASCII cités précédemment.




.ber file example

exemple d'un fichier de lancement contenant une carte de 10 par 10




Ensuite, le jeu peut commencer. Le gameplay est très simple car la seule action que le joueur peut faire est de se déplacer en appuyant sur les touches WASD. En effet, les projets 42 ont ce défaut qui est qu'ils se concentrent plus sur le rendu que sur le gameplay (problème qu'on retrouve dans Cub3D, un autre projet 42, et aussi un peu dans Doom-Nukem ou le rendu reste très important).




gif of the player moving

Les seules actions que peut faire le joueur




Pour aller dans ce sens, j'ai décidé de me concentrer sur le rendu en faisant les bonus du projet (les projets 42 sont séparés en 2: une partie obligatoire et une partie bonus) mais aussi personnels. Par exemple, j'ai ajouté une animation sur les monstres et sur le chevalier. J'ai aussi fait en sorte que les murs forment une pièce fermée et que dans le cas où certains se retrouvent au milieu de la pièce, ils soient représentés par des caisses. Enfin, ce qui a pu être le plus compliqué mais auquel je tenais à été de gérer les cartes trop grandes pour la largeur de l'écran. Pour cela, j'ai découpé la carte initiale en sous-carte de 10 par 10, et le joueur peut naviguer entre les différentes.




gif of the player animation and the monster animation

animations du joueur et des monstres



a map in game

une carte de 10 par 10 en jeu



a gif showing the slicing of a big map

Une grande carte est découpée en plus petite carte




Ce projet, bien que très simple, est important pour moi car il est réellement mon premier jeu vidéo, et j'ai beaucoup aimé travaillé dessus.

github logo black version