[{"content":"Actuellement en poste chez Asobo Studio sur Flight Simulator 2024.\n","externalUrl":null,"permalink":"/fr/","section":"","summary":"","title":"","type":"page"},{"content":"Bonjour et bienvenue sur mon site !\nJe suis un programmeur de jeu vidéo et ici, je parle de tous les jeux et les projets sur lesquels j\u0026rsquo;ai travaillé au fil des années. Vous pourrez consulter des projets anciens et nouveaux, j\u0026rsquo;aime garder la trace de mon passé et de mes modestes débuts.\nExpérience et Éducation Compétences et Outils Asobo Studio 2022 - present Programmeur gameplay Je travaille principalement sur les systèmes internes des avions sur Flight Simulator 2024. The Shooting of Isaac: Rebirth 2021 Remake d\u0026#39;un projet étudiant Entre deux emplois, j\u0026rsquo;ai refait un de mes jeux étudiants pour expérimenter. Kylotonn Games 2016 - 2020 Programmeur gameplay J\u0026rsquo;ai participé au développement de WRC 6, TT Isle of Man, TT Isle of Man 2 et WRC 9. Créajeux 2012 - 2015 Formation en programmation de jeux vidéos Une école privée à Nîmes qui m\u0026rsquo;a appris comment marchait la programmation dans un jeu vidéo et m\u0026rsquo;a donné les fondamentaux sur leur création. J\u0026rsquo;ai validé mon diplime avec un stage de six mois chez Kylotonn à Paris. BTS IRIS 2010 - 2012 Informatique et Réseau pour l\u0026#39;Industrie et les Services Mes études pendant ce BTS m'ont confirmé que je voulais faire de la programmation et m'on fait réfléchir à poursuivre cette carrière dans l'industrie du jeu vidéo. Baccalauréat STI Électronique 2010 Mon introduction à la programmation. Langages C++ Mon langage principal depuis que j\u0026rsquo;ai commencé à l\u0026rsquo;utiliser pendant mon bac. J\u0026rsquo;aime beaucoup comment il marche et tout ce qu\u0026rsquo;il est possible de faire avec. C# J\u0026rsquo;en ai utilisé quelques fois au fil des ans. Mes capacités en C++ me permettent d\u0026rsquo;utiliser le C# assez facilement quand j\u0026rsquo;en ai besoin. J\u0026rsquo;ai aussi utilisé du JavaScript, du Python et du lua à quelques occasions pour des projets qui le demandaient comme l\u0026rsquo;ajout de scripts dans Google Sheets ou la création d\u0026rsquo;un bot pour mes ami·es sur Discord. Logiciels Visual Studio J\u0026rsquo;ai utilisé cet IDE depuis 2010 et je suis passé par toutes les versions qu\u0026rsquo;ils on publié jusqu\u0026rsquo;à la 2022 que j\u0026rsquo;utilise chez Asobo. VSCodium C\u0026rsquo;est mon éditeur principal que j\u0026rsquo;utilise pour tout, de la programmation à la simple rédaction de textes. Je l\u0026rsquo;ai utilisé pour créer le contenu de ce site. VSCodium est très intéressant parce que c\u0026rsquo;est sensiblement la même chose que VSCode, que j\u0026rsquo;aime beaucoup, mais sans l\u0026rsquo;agent IA ou la télémétrie ajoutée par Microsoft, ce qui est appréciable. Moteurs propriétaires / maison Vu que toutes mes expériences professionnelles se sont faites sur des moteurs propriétaires, je suis très capable de m\u0026rsquo;adapter et apprendre à utiliser un nouveau moteur. J\u0026rsquo;aime assez avoir accès au code interne, ça aide à comprendre et résoudre plein de situations. Unreal Engine 4 Je l\u0026rsquo;ai utilisé il y a un moment pour un projet étudiant à Créajeux. J\u0026rsquo;ai vraiment aimé l\u0026rsquo;expérience et je prévois de retourner dessus à un moment dans le futur. Unity Comme pour Unreal, j\u0026rsquo;ai utilisé Unity à Créajeux et ça a été mon premier contact avec un gros moteur prêt à l\u0026rsquo;emploi. Ça a été un peu compliqué à appréhender au début mais j\u0026rsquo;ai réussi à m\u0026rsquo;en sortir et faire ce que je voulais. FaZoN Le moteur sur lequel je travaille depuis 2014 quand j\u0026rsquo;étais en études à Créajeux. J\u0026rsquo;aime travailler dedans et y ajouter de nouvelles choses régulièrement. Je l\u0026rsquo;ai utilisé pour un bon nombre de projets. J\u0026rsquo;aime le fait que le petit moteur que j\u0026rsquo;ai créé il y a plus de dix ans m\u0026rsquo;aide à créer aujourd\u0026rsquo;hui. J\u0026rsquo;ai aussi développé, des applications directement liées au moteur. Des managers qui m\u0026rsquo;aident à démarrer des nouveaux projets plus rapidement ou gérer mes ressources. J\u0026rsquo;utilise aussi régulièrement des logiciels comme Photoshop, Krita ou Audacity pour mes projets personnels. Librairies et Frameworks SFML La librairie que j\u0026rsquo;ai utilisé comme base pour mon moteur. J\u0026rsquo;ai commencé à l\u0026rsquo;utiliser et l\u0026rsquo;aimer depuis que je l\u0026rsquo;ai découverte à Créajeux en 2012 quand j\u0026rsquo;ai fait mon tout premier jeu avec. Elle gère à peu près tout ce que j\u0026rsquo;ai besoin de faire, que ce soit l\u0026rsquo;affichage de sprites, la gestion de sons et de musiques ou des inputs venant de divers périphériques. Dear ImGui Un autre librairie de laquelle je suis tombé amoureux. J\u0026rsquo;ai commencé à l\u0026rsquo;utilisé pour les jeux sur lesquels j\u0026rsquo;ai travaillé chez Kylotonn et ne l\u0026rsquo;ai jamais quittée, elle fonctionne incroyablement bien. Dernièrement, je l\u0026rsquo;ai beaucoup utilisé pour créer des petites applications pour m\u0026rsquo;aider avec mon moteur mais aussi dans ma vie en général, ça a été très amusant! TinyXml Un des nombreux ajouts que j\u0026rsquo;ai fait à mon moteur pour lire et écrire des fichiers de configuration pour mes projets. jsoncpp Je tends à utiliser le json de plus en plus ces temps-ci même si je préfère le xml pour certains de mes fichiers, j\u0026rsquo;ai donc ajouté cette librairie dans mon moteur. Je gère principalement des fichiers d\u0026rsquo;options et des fichiers voués à être utilisés/lus côté utilisateur·ice. J\u0026rsquo;aime bien utiliser le json. vcpkg Le dernier ajout à mon moteur. J\u0026rsquo;aime le fait que ça me permet d\u0026rsquo;ajouter des libraires dans mes projets sans y penser. Je trouve cet outil vraiment très utile. DirectX 9 Mon premier framework 3D. C\u0026rsquo;était un peu compliqué à utiliser, notamment à cause du manque de retour visuel (le genre que permet d\u0026rsquo;avoir un éditeur comme Unity ou Unreal) mais c\u0026rsquo;était très intéressant. Ça fait un moment que j\u0026rsquo;ai en tête de revenir tester DirectX à un moment. ","externalUrl":null,"permalink":"/fr/about/","section":"","summary":"","title":"À propos","type":"page"},{"content":" Jeu Créajeux C++ Unreal Engine A-void est le troisième et dernier projet de fin d’année de ma formation à Créajeux. C’est un jeu de tir dans l’espace en multijoueur local (jusqu’à 16).\nC’est le deuxième projet que nous avons fait en collaboration avec Frederick Raynal de Gloomy Wood et les artistes en troisième année à l’école. Nous avons utilisé Unreal Engine 4 (4.7.3) cette fois et je peux dire que même si ça à pu être fatigant à gérer parfois, j’ai préféré travailler sur Unreal plutôt qu’Unity.\nDans un premier temps, le jeu était supposé être une sorte de jeu de survie contemplatif mais à cause de certaines contradictions dans le cahier des charges, nous avons décidé de repenser entièrement le gameplay et l’ambiance du jeu. Nous nous sommes arrêtés sur quelque chose de plus proche d’un Unreal Tournament ou d\u0026rsquo;un Quake. Le jeu n’a pas vraiment de background, les joueurs entrent dans l’arène et se battent en caméra à la première ou à la troisième personne en ramassant des armes et de l’oxygène (gardé du game design de départ pour éviter que les joueurs ne soient trop statiques).\nAu début, j’ai été assigné à la tâche consistant à trouver quels objets pourraient être dans la zone de jeu (des parties de train de l’espace comme un propulseur ou un panneau de commande, une combinaison spaciale, etc… ) et programmer leur comportement comme jouer une animation ou un son. Avec l’avancement du projet, je me suis plus focalisé sur les objets ramassables qui s’ajoutent au vaisseau du joueur comme les armes, les bouteilles d’oxygène ou un réacteur. Avec le changement dans le game design, beaucoup d’objets ont disparus. Parmi eux, tous les réacteurs qui influaient sur la vitesse du joueur devinrent un bonus limité dans le temps et les réservoirs de carburant des propulseurs ont été enlevés. J’ai quand même continué le projet sur la même tâche puisqu’il restait les armes, l’oxygène et le propulseur à gérer.\nJ’ai trouvé mes tâches très intéressantes et c’est sans doute le projet sur lequel j’ai le plus apprécié mon travail car c’était le développement de plusieurs objets et pas une grosse fonctionnalité comme la physique du joueur comme l’année précédente. Ça ne m’a pas empêché de travailler avec ceux gérant le personnage malgré tout. Je les aidais parfois et il m’arrivait aussi d’avoir besoin d’eux pour faire des tâches précises. J’ai aussi un peu travaillé avec les personnes s’occupant du réseau pour que les changements que je faisait soient vu par tout le monde en jeu.\nCe projet doit être celui que j’ai préféré parmi les grosses créations faites pendant les trois ans de mon école et c’était un bon jeu sur lequel finir ma formation.\nCaptures d\u0026rsquo;écran # Menu principal Vue à la première personne Utilisation de la gatling en vue à la troisième personne Le canon Tesla Le vaisseau peut tourner dans toutes les directions Un tir de plasma Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/a-void/","section":"Jeux","summary":"Un projet étudiant de shooter en 3D multijoueur","title":"A-Void","type":"games"},{"content":"","externalUrl":null,"permalink":"/fr/tags/application/","section":"Tags","summary":"","title":"Application","type":"tags"},{"content":" Steering Application Creajeux C\u0026#43;\u0026#43; SDL Démonstration de comportements et formations de steering 2014 ","externalUrl":null,"permalink":"/fr/applications/","section":"Applications","summary":"","title":"Applications","type":"applications"},{"content":"","externalUrl":null,"permalink":"/fr/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/fr/categories/c/","section":"Categories","summary":"","title":"C","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/tags/c/","section":"Tags","summary":"","title":"C","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/c%23/","section":"Tags","summary":"","title":"C#","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/c++/","section":"Tags","summary":"","title":"C++","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/categories/creajeux/","section":"Categories","summary":"","title":"Creajeux","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/tags/creajeux/","section":"Tags","summary":"","title":"Creajeux","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/categories/cream/","section":"Categories","summary":"","title":"CreaM","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/tags/cream/","section":"Tags","summary":"","title":"CreaM","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/fazon/","section":"Tags","summary":"","title":"FaZoN","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/categories/game/","section":"Categories","summary":"","title":"Game","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/tags/game/","section":"Tags","summary":"","title":"Game","type":"tags"},{"content":" Jeu Créajeux C C++ CreaM SFML Hope a été le projet commun de première année, ce qui veut dire que nous travaillions tous ensemble dessus avec les les graphistes en première année.\nC’est un jeu de plateforme en 2D inspiré de The Lost Vikings par Blizzard. Il y a deux robots entre lesquels le(s) joueur(s) peut naviguer pour avancer dans le jeu. Chaque personnage a ses propres compétences, par exemple, l’un peut sauter alors que l’autre peut taper au corps-à-corps.\nL’histoire est assez simple : Dans le futur, les gens vivent sous terre car ils ont trop pollué la planète mais leurs réserves d’eau s’amenuisent, une escouade est donc envoyée pour voir pourquoi. Comme ils ne reviennent pas, le village est inquiet et décide de rallumer d’anciens robots pour aller à leur secours et régler le problème d’eau.\nIl y a cinq niveau dans le jeu, chacun avec sa propre ambiance en plus d’un boss de fin. Pendant le combat contre ce dernier, les deux robots fusionnent et forment un robot unique qui sera beaucoup plus efficace.\nPour créer ce jeu, nous avons utilisé le moteur de l’école (une surcouche de la SFML) et du C dans un premier temps mais on a ensuite appris plus de choses en programmation et on a fini par changer pour du C++ ce qui fait que le projet a un peu des deux langages en lui.\nSur ce projet, je me suis occupé du menu, ce qui m’a amené à gérer un peu les autres personnes travaillant avec moi en plus de faire ma partie. J’ai aussi participé à la création d’un des monstres.\nJe ne suis malheureusement plus en possession d’une copie du jeu, il n’y aura donc que des captures d’écran (qu\u0026rsquo;un autre étudiant m\u0026rsquo;a autorisé à télécharger de son site).\nCaptures d\u0026rsquo;écran # Menu principal Niveau 1 - Le desert Niveau 3 - Un des PNJ du jeu Niveau 4 - Les montagnes Niveau 5 - Le dernier niveau Le boss de fin Previous Next ","externalUrl":null,"permalink":"/fr/games/hope/","section":"Jeux","summary":"Projet de première année à Créajeux","title":"H²ope","type":"games"},{"content":" Projets personnels # The Shooting of Isaac: Rebirth Game Perso C\u0026#43;\u0026#43; FaZoN SFML Le remake d\u0026rsquo;un projet étudiant de shooter Juillet 2020 à Octobre 2021 (alpha) WarioEscape Remastered Game Perso C\u0026#43;\u0026#43; FaZoN SFML Un Sokoban en 2D Septembre 2014 Kylotonn (2016 - 2020) # TT Isle of Man - Ride on the Edge Game Kylotonn C\u0026#43;\u0026#43; Kt Engine Un jeu de course de moto en 3D Janvier 2017 to Mars 2018 WRC 6 Game Kylotonn C\u0026#43;\u0026#43; Kt Engine Un jeu de course en 3D Janvier to Octobre 2016 Créajeux - Troisième année (2014 - 2015) # A-Void Game Creajeux C\u0026#43;\u0026#43; Unreal Engine Un projet étudiant de shooter en 3D multijoueur Avril / Mai 2015 WarCreaft Game Creajeux C\u0026#43;\u0026#43; FaZoN SFML Un projet étudiant de jeu de stratégie en 2D et démo d\u0026rsquo;IA Novembre 2014 to Mars 2015 Créajeux - Deuxième année (2013 - 2014) # Protokit Island Game Creajeux C# Unity Un projet étudiant de jeu de course en 3D Avril / Mai 2014 The Shooting of Isaac Game Creajeux C\u0026#43;\u0026#43; SFML Un projet étudiant de shooter Décembre 2013 WarioSkweek Game Creajeux C CreaM SFML Un projet étudiant de puzzle game en 2D Octobre 2013 Créajeux - Première année (2012 - 2013) # H²ope Game Creajeux C C\u0026#43;\u0026#43; CreaM SFML Projet de première année à Créajeux Décembre 2012 to Mai 2013 ","externalUrl":null,"permalink":"/fr/games/","section":"Jeux","summary":"","title":"Jeux","type":"games"},{"content":"","externalUrl":null,"permalink":"/fr/tags/kt-engine/","section":"Tags","summary":"","title":"Kt Engine","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/kylotonn/","section":"Tags","summary":"","title":"Kylotonn","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/perso/","section":"Tags","summary":"","title":"Perso","type":"tags"},{"content":" Jeu Créajeux C# Unity Protokit Island est le projet de fin de seconde année de ma formation à Créajeux. C’est un jeu de course avec de la customisation faisant évoluer le véhicule du joueur.\nCe jeu a été fait en collaboration avec Frederick Raynal de Gloomy Wood et les graphistes de seconde année de l’école en deux mois sur Unity.\nLe joueur peut ramasser des pièces disséminées dans l\u0026rsquo;environnement et les placer sur sa voiture pour la rendre plus (ou moins, dépendamment du type de course choisi par rapport à la-dite pièce) efficace pour les futures courses auxquelles il participera.\nIl y a plusieurs îles qui représentent chacune différents comportements et type de contrôles pour la voiture et qui ont apportés leurs lots de difficultés durant le développement. J’ai d’abord été dans l’équipe chargée de la formule 1 où j’ai créé quelques scripts intéressants comme un décompte de départ avec des lumières s’allumant en fonction du temps restant. J’ai aussi aidé un peu a l’équilibrage de la physique de la voiture avec l’équipe s’en chargeant, que j’ai rejoint par la suite. Quand j’ai fait ce changement d’équipe, c’était pour faire en sorte que les roues tournent pour que le jeu soit un peu plus réaliste (malgré l’aspect général du jeu où l’on peut créer des véhicule qui n’auraient aucun sens dans la vie réelle, avec des roues sur le toit par exemple). Une fois ma tâche effectuée, j’ai aidé la personne s’occupant du comportement physique de la voiture sur les adaptation multiples à faire en fonction des différentes îles. Quand c’était bon pour la formule 1, le trial devenait insupportable ou le rallye incontrôlable et ainsi de suite.\nUne autre fonctionnalité qui nous a posé quelques difficultés a été le fait que les pièces que le joueur met dans son véhicule ont un effet sur la conduite, nous devions donc nous assurer que toutes les combinaisons possibles soient viables.\nNous avons finalement réussi (non sans mal) a obtenir une conduite assez jouable et agréable, nous étions plutôt contents à ce moment là.\nIl a plutôt été sympathique de travailler sur ce projet même si ça a pu être dur par moments mais nous avons pu constater ce à quoi la programmation du comportement d’une voiture peut ressembler.\nBande annonce # Captures d\u0026rsquo;écran # Main menu Character selection Vehicle editor Full map display of the islands Trial track \u0026nbsp; Rally track Formula 1 start with AIs Formula 1 track by night End of the dragster track Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/protokit-island/","section":"Jeux","summary":"Un projet étudiant de jeu de course en 3D","title":"Protokit Island","type":"games"},{"content":"","externalUrl":null,"permalink":"/fr/tags/sdl/","section":"Tags","summary":"","title":"SDL","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/fr/categories/sfml/","section":"Categories","summary":"","title":"SFML","type":"categories"},{"content":"","externalUrl":null,"permalink":"/fr/tags/sfml/","section":"Tags","summary":"","title":"SFML","type":"tags"},{"content":" Application Creajeux C++ SDL Cette Application a été créée à partir d’un exercice fait en troisième année à Créajeux sur les comportements de steering. Le steering est une méthode de mouvement applicable à des objets d’un jeu, elle est utilisée pour créer des comportements et il est possible des les mélanger pour en obtenir de nouveaux.\nLe programme contient plusieurs comportements comme suit :\nRecherche / Fuite: Des paires d’entités vont être créées, l’une cherchera l’autre qui la fuira. Ce comportement est assez simpliste mais peut être utile pour en créer d’autres. Poursuite / Évasion: Similaire au précédent mais avec une peu de prédiction ajoutée dans le tout. L’entité poursuivante va aller à la future position de celle qui l’évite, qui va se détourner de la future position de sa poursuivante. Arrivée + Évitement d’obstacles: Les entités vont essayer d’atteindre le curseur de l’utilisateur en évitant les cercles rouges à l’écran. Errer: Détermination aléatoire de la prochaine direction suivie par l’entité dans un certain spectre restreint pour garder de la cohérence et de la régularité dans ses mouvements. Cela peut être utilisé pour créer une sorte d’état de repos d’une IA qui se baladerai dans une zone. Suivi de chemin: Les cercles rouges forment un chemin que les entités vont emprunter. Une fois arrivées au bout, elles feront demi-tour et repartiront dans l’autre sens. Évitement de collision non-aligné: Chaque entité prédit le mouvement des autres autour d’elle et utilise l’évitement d’obstacles pour réagir quand leur trajectoires se croisent. Séparation: Chaque entité va dans à l’opposée de la direction générale empruntée par ses voisines comprises dans un certain rayon. Cohésion: Chaque entité calcule la position moyenne de ses voisines et essaie de l’atteindre. Alignement: Chaque entité va dans la même direction que ses voisines. Regroupement: Une combinaison des comportements d’Alignement et de Séparation, les entités vont dans la même direction tout en gardant leurs distances par rapport à leur voisines. Ce comportement peut être comparé à un banc de poissons. Suivi de guide: Toutes les entités suivent un même guide tout en gardant leurs distances les unes par rapport aux autres. Formations: Variante du comportement précédent où les entités dessinent une forme donnée en suivant leur guide. Les formations disponibles sont le Cercle, le V, la Ligne et la Multiligne. J’ai aimé cet exercice et l’ai trouvé assez intéressant et rémunérateur, je me suis souvent pris à juste regarder mes résultats se dérouler pendant la phase de développement au lieu de fermer l’application dès que possible. Le regroupement en particulier peut être assez hypnotisant avec assez d’entités. J’ai aussi aimé utiliser ces comportements pour la première fois dans WarCreaft, nous développions les deux projets en parallèle donc dès qu’un comportement était fait dans l’application, il allait dans le jeu. Regarder les personnages du jeu bouger grâce aux comportements que j’avais créé m’a empli de joie.\nScreenshots # Arrivée + évitement d\u0026rsquo;obstacle Suivi de chemin Regroupement Formation en cercle Formation multiligne Previous Next Obtenir l\u0026rsquo;application # Vous pouvez télécharger l\u0026rsquo;application juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/applications/steering/","section":"Applications","summary":"Démonstration de comportements et formations de steering","title":"Steering","type":"applications"},{"content":"","externalUrl":null,"permalink":"/fr/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":" Jeu Créajeux C++ SFML The Shooting Of Isaac est un shooter inspiré de The Binding Of Isaac dans son style graphique et son gameplay. C’était un projet à développer pendant les vacances de Noël pour lequel nous n’avions que des directives de programmation, ce qui veut dire que la partie graphique était au goût de chaque étudiant·e. J’ai choisi The Binding Of Isaac comme univers graphique car j’aime beaucoup ce jeu et il a beaucoup de mécaniques de shooter, il a donc été plaisant de l’adapter à ce projet.\nVous devrez choisir entre plusieurs personnages ayant chacun des statistiques différentes pour traverser les trois niveaux et battre le boss final. Pendant votre progression vous pourrez ramasser des objets pour vous aider en changeant vos statistiques ainsi que votre manière de jouer. À la fin du jeu, ou quand vous mourrez, vous pourrez sauvegarder votre score et le retrouver parmi les dix premiers dans le tableau des scores accessible depuis le menu principal.\nCe projet a été mon premier utilisant la SFML et ça a été très intéressant et un peu difficile mais j’y suis arrivé et je suis plutôt satisfait du résultat. J’ai utilisé le C++ dans Visual Studio 2013, ce qui m’a permis de faire un bon nombre d’héritages et de polymorphisme selon mes besoins.\nToutes ces conditions ont rendu la programmation de se projet vraiment incroyable et je n’ai pas vu le temps passer en travaillant dessus, ce qui fait que j’ai vite passé la centaine d’heures de développement.\nPrésentation video # Captures d\u0026rsquo;écran # Menu principal Sélection de personnage Les caves avec Isaac Les profondeurs avec Magdalene Le combat contre le boss de fin dans Sheol avec Eve Partie terminée Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/the-shooting-of-isaac/","section":"Jeux","summary":"Un projet étudiant de shooter","title":"The Shooting of Isaac","type":"games"},{"content":" Jeu Perso C++ FaZoN SFML The Shooting Of Isaac était un projet étudiant à développer pendant les vacances de Noël 2013. En Juillet 2020, sept ans plus tard, j’ai enfin eu le temps de commencer le développement d’un remake avec de meilleures méchaniques et graphismes, en utilisant les assets de The Binding of Isaac: Rebirth. Grâce au DLC Afterbirth+ et ses possibilités de modding (extracteur de données et console dans le jeu), j’ai eu accès à tous les fichiers du jeu, ce qui m’a permis d’être aussi proche que possible du jeu de base. Le wiki du jeu m’a aussi énormément aidé.\nLe Jeu # The Shooting of Isaac: Rebirth est un shooter vertical en 2D dans lequel vous jouez un personnage parmi six disponibles, tous avec leur propres statistiques, qui parcourt différents niveaux remplis d’ennemis à tuer pour gagner du score et d’un boss à la fin. De temps en temps, des objets à rammasser apparaîtront. Les effets de vos objets se combinent pour changer le gameplay de votre personnage ou donner des effets aux larmes que vous tirez, vous pouvez en porter trois à la fois maximum. Si vous avez déjà le maximum d’objets sur vous et que vous en voyez un qui vous intéresse au sol, vous pouvez sélectionner celui que vous voulez remplacer dans votre inventaire (tab / RB par défaut) et le nouveau prendra sa place dans son emplacement. Entre chaque niveau, il y aura un magasin dans lequel vous pourrez vous soigner et acheter de nouveaux objets. Quand le boss de fin est tué, ou que vous mourez, vous pourrez alors entrer votre nom et sauvegarder votre score.\nJe n’étais pas vraiment satisfait par certains aspects de mon premier jeu, limité par le temps et mes compétences. La première exemple qui me vient en tête étant la combinaison Technology (laser qui remplace les larmes normales) + Wiggle Worm (tirs sinusoïdaux), qui aurait du donner un laser sinusoïdal, au lieu d’un laser rectiligne se déplaçant de gauche à droite. Ayant ça en tête, je voulais réadapter les synergies et avoir des effets plus classe. Même si Wiggle Worm n’est plus dans la version Rebirth, Technology a profité d’une refonte, l’une d’entre elles étant la combinaison avec Spoon Bender (tirs téléguidés) qui donne un laser à tête chercheuse qui part du personnage et va vers les ennemis.\nLe Développement # Ceci est le premier gros projet sur lequel j’ai travaillé en utilisant FaZoN, mon framework personnel basé sur la SFML, en utilisant le C++ et un peu de C# dans Visual Studio 2017 et 2019, et je suis très satisfait du résultat. Travailler sur mon framework m’a permis de beaucoup le peaufiner et de l’améliorer car j’ai eu un bon nombre de besoins tout le long de la production. J’ai, par exemple, eu à ajouter tout un nouveau système d’animation qui pouvait lire les fichiers du jeu de base, au lieu de les convertir pour le système que j’avais déjà. Ça m’a pris pas mal de temps mais je suis content de l’avoir fait car ça a rendu la suite beaucoup plus rapide, j’ai pu prendre les fichiers .anm2 du jeu de base et les coller dans les dossiers de mon jeu pour que tout marche instantanément. C’était aussi un bien meilleur système que celui que j’avais déjà en place, assez rudimentaire. Comme avec les animations, tous les ajouts que j’ai fait à mon framework ont pris du temps et ont certainement ralenti la production, mais je suis content de les avoir fait car FaZoN est meilleur maintenant et mes futurs projets seront beaucoup plus fluides.\nEnnemis # Une des grandes étapes que j’ai du traverser pendant le développement a été de décider comment gérer mes ennemis, je voulais en implémenter un bon nombre et je ne voulais pas partir sur de l’héritage qui m’aurait demander de créer beaucoup de classes différentes avec peu de code en elles. À la place, j’ai regardé les actions et déclencheurs de ces actions dont mes ennemis avaient besoin et les ai mis dans mon code en tant que fonctions séparées, appellées dans mon unique classe Enemy par un tableau et des structures de descriptions. Par exemple, deux ennemis qui tirent des larmes vont tous deux appeller la fonction Shoot que j’ai créé, mais avec différentes descriptions détaillées dans un fichier XML gardé en mémoire dans la classe.\nSur l’image au dessus, on peut voir un example de XML d’un ennemi, c’est l’un des premier que j’ai créé. Il y a le bloc des fonctions en rouge, le bloc des animations en vert, et celui des sons en bleu. Il y a trois types de fonctions:\nMovement, qui décrit comment l’ennemi bouge (déplacement aléatoire, poursuite du joueur, etc…). Action, qui décrit ce que l’ennemi peut faire (tirer, charger, etc…). ActionTrigger, qui décrit comment et quand l’ennemi fera son action (proximité avec le joueur, temps, etc…). Les fonctions de mouvement peuvent être cumulées, par exemple, un ennemi qui a la fonction de poursuite du joueur en plus de celle le faisant bouger de manière aléatoire, le fera se déplacer vers le joueur de manière ératique au lieu d’aller directement vers le joueur en ligne droite.\nPlus tard, j’ai ajouté des behavior trees aux ennemis, ce qui m’a aussi pris un peu de temps mais a vraiment aidé à fluidifier le processus de création sur certains d’entre eux.\nJ’ai travaillé à faire en sorte de pouvoir appeller mes fonctions d’action au sein du behavior tree, ce qui a rendu les choses plus faciles car j’avais juste à donner un nom de fonction existante au lieu de créer des variables et de les initialiser dans une tâche de behavior tree. On peut voir les occurences de la fonction d’action encadrée en rouge dans le behavior tree mis en évidence en vert sur l’image au dessus.\nÉditeur # Au début, je modifiais mes fichiers XML à la main, mais c’est rapidement devenu compliqué car j’avais de plus en plus de variables à gérer et il fallait que je me rappelle de laquelle d’entre elles allait avec quelle fonction. Pour rendre les choses plus faciles et travailler plus vite, j’ai créé un éditeur qui lit mes fichiers et m’affiche tout dans une interface ImGui très pratique. Ça a également beaucoup aidé quand j’ai commencé à travailler sur les behavior trees. J’ai aussi pu me créer une fenêtre affichant mes enums et valeurs de masques clairement pour ne plus avoir à ouvrir un fichier sur le côté pour me donner quelle valeur correspond à quel champ d’enum ou bit de masque.\nTous les paramètres qui permettent à un ennemi de tirer Les enums utilisées dans le projet Créer cet éditeur était aussi un moyen de créer et travailler sur les patterns de tirs des ennemis. Le premier que j’ai créé n’avait qu’un tir allant en direction du joueur, d’autres ont été beaucoup plus compliqués comme Mom’s Heart qui avait plusieurs phases et patterns de tirs à gérer. Cela voulait dire qu’en plus d’un endroit ou créer et modifier mon behavior tree, j’avais aussi besoin d’une fenêtre où créer, régler et surtout prévisualier mes patterns.\nLes deux vidéos au dessus montrent l’édition d’un pattern (en haut) et la prévisualisation de certains que j’ai créé pour Mom’s Heart (en bas). Quand Isaac est affiché, cela veut dire que le pattern s’adapte à la position du joueur:\nLes brimstones (lasers rouges) tourneront vers le joueur (il est sur la gauche du laser se trouvant en bas à droite, la rotation s’effectuera donc vers la gauche). La ligne unique de larmes (0:47) tire simplement sur le joueur. les cinq lignes de larmes (0:56) tournent dans le sens opposé de la direction que prend le joueur. Cryptage de données # Puisque je ne suis pas propriétaire des assets graphiques et sonores, mais que je partage mon jeu sur Gitlab, je voulais protéger ses données. Ça a toujours été un but pour moi puisque c’est ce qu’on est sensé faire avec ses productions, mais vu que les miennes ont toujours été de petits projets étudiants, je ne m’étais jamais encore penché sur la question. Je ne vais pas donner trop de détails ici pour garder un maximum de sécurité sur les assets. Ce que je peux dire, c’est que j’ai eu un peu de mal au début avec la marche à suivre, mais je suis content de l’avoir fait, et j’ai maintenant un système de cryptage qui marche avec une jolie application Windows Forms pour rendre les choses plus faciles. (Mise à jour: Depuis l\u0026rsquo;écriture de cette page, j\u0026rsquo;ai entièreent refait mon crypteur de fichier en C++ à l\u0026rsquo;aide de mon moteur et l\u0026rsquo;ai combiné à un gestionnaire de ressources).\nL’application est divisée en trois parties:\nÀ gauche, la hiérarchie des fichiers source, ceux que je vais crypter. Je peux cocher un fichier ou un dossier et ne traiter que ceux là, ou passer sur tous les fichiers d’un coup avec les boutons juste en dessous. Par défaut, l’application ne réécrit pas les fichiers existants, mais je peux le forcer en cochant la case “Force Build”, dans le cas où j’aurais modifié un fichier source que je voudrais recrypter par exemple. À droite, la hiérarchie des fichiers cryptés, pour voir si tout est bien là. Depuis cet affichage, je peux aussi décrypter un fichier pour voir si tout s’est passé, c’est plutôt une fonctionnalité de debug. J’ai ajouté un bouton “Delete Decrypted Files” pour supprimer les fichiers décryptés avant de copier mon dossier de données pour une release. En bas, la barre de progression et le compte de fichiers du cryptage en cours et la console qui indique quel fichier est en train d’être traité. Si le fichier existe déjà et que je ne force pas le traitement, une ligne grise disant “skipped” apparaîtra au lieu des “encrypting” noires visibles sur la capture d’écran. Streaming # Pendant le développement, j’ai streamé sur Twitch pour me faire une archive et montrer aux gens ce sur quoi je travaillais. J’ai commencé à un moment où je travaillais sur l’éditeur et j’ai arrêté un peu après avoir publié la version alpha du jeu, donc toute la production n’y est pas présente mais vous pouvez jeter un oeil à la playlists de mes streams sur sur Youtube.\nRemerciements # Ce projet a été un vrai défi à relever et je suis heureux d’avoir des gens pour m’aider quand j’en ai besoin, j’aimerais donc remercier Rémi Maigné et Jérôme Bevenuti pour leur aide et leurs suggestions, mais aussi Simon Parzer, lead programmeur sur le jeu de base, qui a répondu à mes questions à propos du jeu, et tous les gens autour de moi pour leur soutien pendant le développement.\nCaptures d\u0026rsquo;écran # Écran titre Sélection de personnage Contrôles au clavier Contrôles à la manette Tableau des scores Azazel combattant Duke of Flies dans Basement Eve fait un cauchemar Eve combattant Dark One dans Caves Judas dans Depths Magdalene dans Womb Eve combattant Mom\u0026rsquo;s Heart dans Womb Une partie gagner par Magdalene Crédits Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/the-shooting-of-isaac-rebirth/","section":"Jeux","summary":"Le remake d’un projet étudiant de shooter","title":"The Shooting of Isaac: Rebirth","type":"games"},{"content":" Jeu Kylotonn C++ Kt Engine Le Tourist Trophy est une course de moto se déroulant chaque année au début de mois de Juin sur les routes de l’Ile de Man depuis 1907. Des centaines de pilotes s’y affrontent dans plusieurs catégories (Supersport, Superbike, Lightweight, Sidecar, etc. ) sur plusieurs tours (dépendants de la catégorie) des 60,72km de piste. Le record du monde du tour les plus rapide est de 16'36.114 par Peter Hickman avec une vitesse moyenne de 217,989 km/h. Certains pilotes peuvent monter à une vitesse de 331 km/h.\nAprès un peu de support sur WRC 6 et avoir aidé rapidement sur un autre projet, j’ai commencé à travailler sur TT Isle of Man en Janvier 2017 et j’ai arrêté un peu après sa sortie en 2018. J’ai rejoint la production assez tôt, le travail sur la physique de la moto avait commencé depuis quelques mois et quelques pistes étaient jouables.\nJ’ai effectué plusieurs tâches sur ce jeu, comprenant l’intégration d’éléments du HUD et beaucoup de correctifs, mais je vais détailler deux aspects qui m’ont pris le plus de temps et qui ont été les plus gros défis à relever.\nLa ligne de départ # La première tâche sur laquelle j’ai travaillé et sur laquelle j’ai passé beaucoup de temps au fil de la production à été la création de la ligne de départ (start queue). Au vrai Tourist Trophy, les pilotes sont placés en ligne les uns derrière les autres et démarrent leur course toutes les 10 secondes, dans un mode de course présent dans le jeu (que l’on a nommé TT Style), nous voulions reproduire ce départ particulier, j’ai donc commencé la création de cet élément.\nUn composant de départ en ligne dans l\u0026rsquo;éditeur La file de départ du Tourist Trophy en jeu Your browser cannot play this video. Download video.\nLe départ en ligne en action Un des plus gros problèmes à été l’adaptation de notre procédure de démarrage d’une course à ce style. En style GP, le compte à rebours démarre dès que le joueur valide le menu de pré course (le menu affiché quand le niveau à fini de charger, résumant les pilotes présents sur la grille de départ) et tout le monde part au même moment. J’ai dû retarder ce compte à rebours et m’assurer qu’il n’affecte qu’un pilote à la fois. J’ai aussi fait en sorte que peu importe la position du joueur dans la grille, il soit le deuxième à partir dans le pire des cas, ce qui veut dire que les pilotes partis avant (devant le premier pilote de la file) devaient être placé là où ils auraient du être sur la piste si on leur avait fait faire leur départ.\nNous avons aussi eu plusieurs problèmes avec les IA qui déclenchaient leur mode course quand elles ne le devaient pas (car toujours présentes dans la file), j’ai donc dû surcharger certains de leurs états (HFSM) pour régler ça. Cette ligne de départ a été un des éléments qui a demandé le plus d’attention et de support durant tout le développement du jeu.\nMode carrière # Cette tâche a été très importante pour moi car, même en ayant WRC 6 comme base, j’ai dû tout créer de zéro. Une des choses que j’avais à garder en tête était le fait de n’utiliser que des tableaux statiques et des variables standard au lieu de pointeurs à cause de la manière dont marchait notre sauvegarde et de certains TRC (Technical Requirement Checklist, une liste de “règles” à suivre pour pouvoir publier le jeu). J’ai utilisé quasiment tout le temps de la production pour tout mettre en place.\nParmi mes tâches en mode carrière, j’ai du créer des évènements (certains aléatoires et d’autres scriptés) et vérifier que plusieurs saisons pouvaient se succéder sans encombre. Pour générer un évènement aléatoire, j’avais un fichier de configuration qui spécifiait chaque paramètres dont j’avais besoin. Avec ça, tout ce qu’il me restait à faire était de déterminer de quel type d’évènements j’avais besoin pour chaque génération. Gérer les évènements scriptés a été un peu compliqué car je devais gérer quand et comment ces derniers allaient revenir dans le calendrier. Ils avaient des conditions pour réapparaitre, comme leur fréquence (toutes les saisons, à chaque saison impaire, une fois toutes les X saisons, etc.) et un temps de réapparition pour mettre un peu de temps entre chaque cycle. C’était un peu compliqué et j’aurais aimé avoir fait quelque chose de plus simple.\nIl y avait plusieurs générations d’évènements à travers la saison, le joueur pouvait voir deux mois à l’avance, donc à chaque mois qui passait, je générais les évènements du mois N+2.\nCréer et gérer les évènements a été une grosse partie du mode carrière et ça a pris beaucoup de temps de tout faire marcher.\nBande annonce # Captures d\u0026rsquo;écran # Une course en style TT avec son classement Un classement de fin de course Une course dans la forêt Une course en mode GP Menu principal Écran d\u0026rsquo;accueil de la carrière La boîte de réception des futurs événements Le calendrier des courses Previous Next Obtenir le jeu # ","externalUrl":null,"permalink":"/fr/games/tt-isle-of-man/","section":"Jeux","summary":"Un jeu de course de moto en 3D","title":"TT Isle of Man - Ride on the Edge","type":"games"},{"content":"","externalUrl":null,"permalink":"/fr/tags/unity/","section":"Tags","summary":"","title":"Unity","type":"tags"},{"content":"","externalUrl":null,"permalink":"/fr/tags/unreal-engine/","section":"Tags","summary":"","title":"Unreal Engine","type":"tags"},{"content":" Jeu Créajeux C++ FaZoN SFML Pendant la troisième année à Creajeux, nous devions développer un petit jeu dans lequel nous pouvions intégrer tout ce qu’on voulait concernant l’IA. Des fonctionnalités comme le pathfinding, les behavior trees ou le steering en plus d’outils de diagnostic tels qu’une console de commandes ou des composants de programmation comme les threads. Notre formateur voulait quelque chose inspiré de Wacraft 2 même si ce ne serait pas vraiment un jeu car il ne contiendrait que des outils et peu de mécaniques de gameplay même si nous pouvions en ajouter mais ce n’était pas le but du projet.\nJe faisait équipe avec deux autres étudiants pour le développement, nous avons démarré avec les outils de diagnostic et l’utilisation des threads dont je me suis occupé. Mes camarades s’occupaient des unités, du HUD et de la caméra. Je m’occupais beaucoup du coeur du jeu, modifiant le moteur (nous nous sommes basés sur le petit framework que j’avais à l’époque) et gérant principalement des choses internes au jeu. J’ai créé la fenêtre de débug qui affiche les commandes et les unités selectionnées ou des informations sur l’application comme la mémoire qu’elle utilise et le framerate.\nPlus tard, j’ai travaillé sur le pathfinding qui était une grosse partie du projet, j’ai réussi à faire quelque chose qui marchait assez bien et avec lequel j’était content. J’ai utilisé le A-star avec un simple Pythagore pour l’heuristique (j’utilisait Manathan mais ça prenait trop de temps de calcul). En travaillant là dessus, j’ai ajouté les comportements de steering, notamment le path following pour adoucir les mouvements des unités quand elles rejoignaient leur endroit cible. J’ai aussi utilisé du string pulling pour finir avec un chemin optimisé.\nPour finir, j’ai ajouté les behavior trees pour créer une illusion d’IA pour les ennemis, j’ai vraiment apprécié cette partie même si c’était assez long à programmer.\nUne chose qui a pu poser problème était que, notre cursus progressant, nous avions à refaire certaines parties du jeu plusieurs fois pour adapter le code (pour suivre les objectifs des fonctionnalités à rajouter) et il est devenu un peu compliquer à lire à certains endroits mais nous avons réussi à le garder aussi propre que possible malgré les circonstances.\nJe suis assez content de ce que j’ai fait sur ce jeu au final. J’ai intégré plusieurs comportements de steering comme le path following, l’arrival ou le seek, un pathfinding qui marche bien et une console de commande qui peut accomplir plusieurs tâches comme faire apparaître des unité, les tuer, les sélectionner, les soigner, les blesser et autre.\nJe pense que c’est une des choses que j’ai le plus aimé faire en troisième année. Ce projet m’a aussi permis de travailler sur mon framework personnel (qui est plus tard devenu FaZoN, sur lequel je travaille toujours pour ajouter plus de fonctionnalités) et j’ai apprécié le fait de prévoir ce que l’utilisateur voudrait faire et développer avec ça en tête, c’est très intéressant.\nCaptures d\u0026rsquo;écran # La partie commence Création d\u0026rsquo;unité Placement d\u0026rsquo;une nouvelle construction Base de l\u0026rsquo;IA Affichage d\u0026rsquo;informations de debug \u0026nbsp; \u0026nbsp; Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Download ","externalUrl":null,"permalink":"/fr/games/warcreaft/","section":"Jeux","summary":"Un projet étudiant de jeu de stratégie en 2D et démo d’IA","title":"WarCreaft","type":"games"},{"content":" Jeu Perso C++ FaZoN SFML Et oui, encore un jeu avec des sprites tirées de Wario Land 4 mais je n’y peux rien, j’aime ce jeu !\nCreaEscape était le tout premier jeu que j’ai fait à Créajeux (et de ma vie) en deux semaines. Cela m’a appris comment les jeux sont fait, en tout cas à la base, et c’était un très bon départ. Cette version est le remake que j’ai fait juste avant la troisième année pour me remettre à la programmation et améliorer un peu le jeu de base, notamment avec des animations. J’ai aussi fait ce remake car j’avais perdu l’ancienne version du jeu, ce qui me rendais un peu triste.\nJ’ai utilisé le petit framework que j’avais commencé à faire utilisant la SFML C++ et Visual Studio 2013 pour ce projet. J’était assez heureux de produire quelque chose à partir de l’outil que j’avais créé, c’était très valorisant.\nLe principe du jeu est de guider son personnage du départ vers l’arrivée en évitant tout contact avec les ennemis ou les mines qui vous tuent et vous ramènent au départ avec une vie en moins. Si le joueur perds ses trois vies, la partie est terminée et il devra retenter le niveau.\nTant que je parle du niveau, il est créé à partir d’un fichier texte, il est donc possible de le modifier et de créer n’importe quel niveau tant qu’il est toujours aux dimensions de 10*10.\nC’est un petit jeu donc il n’y a pas grand chose de plus à ajouter, essayez le et bon jeu !\nCaptures d\u0026rsquo;écran # Écran titre Une session de jeu Écran de victoire Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/warioescape-remastered/","section":"Jeux","summary":"Un Sokoban en 2D","title":"WarioEscape Remastered","type":"games"},{"content":" Jeu Perso C CreaM SFML WarioSkweek est un puzzle game inspiré de Tiny Skweeks (jeu DOS) dans le gameplay, notre formateur nous ayant demandé de recréer le jeu. Puisque j’aime Wario Land 4, j’ai pensé qu’il serait sympathique d’en utiliser l’univers graphique avec un soupçon de Minecraft pour le décor. Je pense que Minecraft est très utile pour ça car j’ai juste eu à télécharger un pack de texture pour avoir toute sortes de tuiles pour mes jeux.\nCe projet a été le dernier que j’ai fait en utilisant CreaM, le moteur de l’école, qui était un bon outil mais il était temps que passe à autre chose pour suivre ma propre voie (ce qui a ensuite donné The Shooting Of Isaac). Ce fut aussi le dernier jeu que j’ai fait en C, et je suis depuis plutôt tourné vers le C++. J’ai utilisé Visual Studio 2012 sur ce projet.\nLe jeu est constitué de 11 niveaux tirés de la version DOS avec les mêmes mots de passe qu’à l’époque. Il y a aussi un éditeur de niveau pour ajouter vos créations au jeu. Il y a un système de score et une sauvegarde de ces derniers pour constater votre progression.\nCaptures d\u0026rsquo;écran # Niveau 3 Niveau 5 Niveau 7 Tableau des scores d\u0026rsquo;un niveau Meilleurs scores Créteur de niveaux Previous Next Obtenir le jeu # Vous pouvez télécharger le jeu juste en dessous si vous voulez l\u0026rsquo;essayer. Télécharger ","externalUrl":null,"permalink":"/fr/games/warioskweek/","section":"Jeux","summary":"Un projet étudiant de puzzle game en 2D","title":"WarioSkweek","type":"games"},{"content":" Jeu Kylotonn C++ Kt Engine À la fin de ma formation à Créajeux, j’ai dû chercher un stage pour valider mon diplôme, c’est ainsi que je me suis retrouvé chez Kylotonn. Le studio avait sorti WRC 5 auparavant (jeu avec lequel il avait récupéré la licence) et commençait la production du 6. WRC 6 à été le premier jeu professionnel sur lequel j’ai travaillé et j’était très content de commencer par celui là, étant satisfait de travailler sur un jeu de course (un des style que j’affectionne) mais aussi d’utiliser le C++ sur un moteur propriétaire. Ce dernier, répondant au nom de Kt Engine, m’a permis de découvrir autre chose que Unity ou Unreal, que j’avais utilisé à l’école.\nWRC 6 est un jeu de rallye où l’on peut jouer en solo en faisant des courses et dans le mode carrière, ou en multijoueur local et en ligne.\nJ’ai principalement effectué des tâches de gameplay, voici le détail de quelques unes.\nGameplay des courses en versus # Le jeu proposait des pistes spéciales dans certains pays où le tracé bouclait sur lui même de manière à avoir deux parties de la piste côte à côte la majeure partie du temps de la course. Une de mes tâches les plus longues et compliquées que j’ai réalisées à été de mettre en place et faire marcher tout le gameplay de versus sur ces pistes. Ce dernier, ce jouant à deux, consistait à faire apparaître chaque voiture sur une partie différente de la piste pour qu’elles démarrent côte à côte mais avec une différence de tracé.\nComme on peut le voir sur ces deux images, chaque joueur démarre à la moitié du tracé de l’autre. Ils n’auront donc pas les mêmes difficultés au même moment de leur course.\nCe mode de jeu a posé de nombreux problèmes car il n’était pas prévu par le système gérant la course. Par exemple, quand le deuxième joueur traversait son premier checkpoint, il était téléporté par les vérifications anti-triche car ce n’était pas le premier prévu dans la course dans sa version de base, le joueur ne pouvait donc pas faire sa course. Un autre problème a été posé par la spline servant à indiquer le tracé à suivre au véhicule, lui disant si le joueur s’éloigne trop ou non, là encore le deuxième joueur pouvait se faire téléporter à de mauvais endroits de la course à des moments où il n’aurait pas du.\nJ’ai donc fait en sorte que l’on puisse donner une deuxième spline au composant de course pour que le deuxième joueur l’utilise et j’ai mis en place un système de filtres sur les checkpoints pour qu’ils ignorent l’un ou l’autre des joueurs à leur passage. D’autres composants ont posé problème comme d’autres checkpoints servant uniquement à éviter la tricherie ou le système d’affichage des indications du copilote que l’on a filtré de la même façon.\nLe HUD du deuxième joueur a aussi posé problème puisqu’il affichait son curseur de progression au mauvais endroit, j’ai donc changé le calcul de la position de ce dernier en prenant en compte la position de la ligne de départ sur la spline de la course.\nSuivi de la progression des véhicules et interface # L’ajout du versus et des pistes aux tracés spéciaux ont amenés de nombreux problèmes quand au suivi de la progression des véhicules au fil de la course. Le calcul dont j’ai parlé plus tôt consistant à prendre en compte la position de la ligne de départ sur la spline devant être fait à plusieurs endroits car servant à de nombreuses choses, j’ai donc créé une structure pour s’en occuper et permettre de seulement lire ses calculs aux moments appropriés.\nLe calcul de la position de la ligne de départ depuis le début de la spline Cette structure ne contenait au début que la position de départ, la position du véhicule adaptée à celle-ci et la taille totale de la spline de course, permettant de re-calculer la position des checkpoints et autres déclencheurs posés sur la route. Chaque structure étant propre à un véhicule, il n’y avait donc plus de problèmes relatifs à la position du deuxième joueur pour suivre sa progression où le faire réapparaître au bon endroit.\nAccomplissements et succès # Le jeu possède un système d’accomplissements interne au jeu qui récompensent le joueur pour avoir accompli certaines actions lors de ses courses. Certains de ces accomplissements sont aussi des succès (ou trophées) pour Steam, le Xbox Live ou le PSN.\nJ’ai passé un bon moment à rendre le déblocage de tous ces accomplissements possible par la mise à jour de certains déjà présent ou l’ajout de nouveaux. Tous demandaient de traquer ce que fait le joueur un peu partout dans le jeu, que ce soit dans certains menus (modifier les réglages de la voiture, regarder les crédits…) ou en jeu (gagner une course, faire un tonneau, finir avec une crevaison…). Heureusement, beaucoup d’entre eux se géraient au même endroit, se débloquant à la fin des courses, mais d’autres ont demandés plus de minutie. J’ai fini par créer un Google Sheet gardant la trace de mes avancements dans cette tâche qui pouvait facilement me perdre.\nUne partie importante de cette tâche à aussi été de faire en sorte que la ré-obtention des succès soit possible en cas de remise à zéro de ces dernier, comme on peut le faire sur PlayStation. Certaines conditions sont donc passées de “gagner une course” à “gagner une course ou plus”, la fonction de déblocage se chargeant de vérifier si le succès était déjà obtenu ou non.\nTâches sur le son # À plusieurs reprises, j’ai travaillé sur les effets sonores du jeu.\nPremièrement, j’ai fait en sorte que les sons des roues à gauche et à droite soient séparés, permettant d’avoir, par exemple, le son du goudron à gauche et de l’herbe à droite quand le joueur commence à sortir de la route. Avant, on utilisait l’index de surface le plus haut (disons, 0 pour le goudron, 1 pour l’herbe, 2 pour la neige, etc..) entre les surfaces détectées sous chaque roue, et on jouait le son correspondant au milieu de la voiture. Séparer les sons entre gauche et droite permet un peu plus de réalisme et d’immersion. Pour rendre cela possible, j’ai du dupliquer bon nombre des variables servant à gérer les sons des roues, comme les valeurs de dérapage, la force de rotation appliquée aux roues ou les valeurs de freinage. J’ai aussi doublé les instances d’événements sonores pour pouvoir joueur deux fois le même son quand les surfaces sont les mêmes des deux côtés.\nEnsuite, j’ai changé les événements sonores servant aux indications du copilote pour n’utiliser que des sons chargés au moment où on en a besoin puis streamés. Une telle utilisation m’a fait changer la gestion de ces son, notamment sur la récupération de leurs informations comme la durée, accessible seulement quand le son est chargé. Il a aussi fallu modifier un peu leur chargement dans le moteur car ils étaient déchargés automatiquement après les avoir joués et n’étaient chargés qu’au moment d’être jouer alors que je voulais faire ça avant pour certains. Les sons d’indications étant stockés dans une pile au fur et à mesure que le joueur avance, on voulait les charger au moment de la détection pour n’avoir qu’a les jouer le moment venu.\nJ’ai aussi ajouté les voix de tutoriel dans les menus qui décrivent au joueur ce qui s’y passe. Pour ça, j’ai ajouté un nouveau bus sonore enfant d’un des quatre déjà présents (Musique, Effets sonores, Voix et Interface) et j’ai géré les sons de la même manière que les indications du copilote en les chargeant quand j’en ai besoin.\nEnfin, j’ai mis à jour le système servant à gérer la réverbération du son en forêt. Le code déjà présent parcourait en permanence les chunks (zone cubique contenant des objets dans le jeu) autour du joueur pour y détecter les arbres présents, ce qui était très lourd en performances. J’ai utilisé une boite de collision orientée (OBB) autour du véhicule pour remplacer ce code et détecter les arbres présents uniquement dans cette zone et calculer un poids relatif à l’impact qu’aura chacun sur la réverbération du son. Une fois les poids de chaque côté du véhicule dépassent les seuils minimaux requis, une valeur de réverbération est calculée.\nLa boite de détection verte et les arbres détectés représentés par des spheres rouges Mise à jour des raccourcis clavier / manette # Certains raccourcis étaient déjà présent mais sur les mauvaises touches, d’autres tout simplement absents. La partie importante de cette tâche à été de créer le raccourcis de défilement des caméras de gameplay dans le sens inverse de celui déjà présent, pour que le joueur puisse naviguer dans les deux sens pour atteindre la vue de son choix. Les fonctions s’occupant du changement de caméra n’étant prévues que pour aller dans un seul sens, j’ai du en adapter certaines et en créer de nouvelles, ce qui a prit pas mal de temps au final.\nJ’ai accompli d’autres tâches plus mineures que je ne détaillerais pas ici, comme l’application du rougeoiement des freins en fonction de leur température ou l’activation de particules quand le joueur roule sur la jante de sa voiture.\nJ’ai beaucoup apprécié ce projet comme première expérience professionnelle et l’ambiance avec les autres employé(e)s était très bonne. J’ai trouvé la majeure partie de mes tâches intéressantes et valorisantes, ce qui m’a aidé à toujours donner le meilleur de moi même.\nJ’ai aussi été très honoré de retrouver mon nom dans un jeu commercialisé pour la première fois !\nBande annonce # Captures d\u0026rsquo;écran # Italie - Tutoriel Villa del dique - Argentine Karlstad - Suède - Course en versus Fernet Branca - Argentine - Une autre course en versus Menu de replay \u0026nbsp; Previous Next Obtenir le jeu # ","externalUrl":null,"permalink":"/fr/games/wrc-6/","section":"Jeux","summary":"Un jeu de course en 3D","title":"WRC 6","type":"games"}]