[{"content":"Currently working on Flight Simulator 2024 at Asobo Studio.\n","externalUrl":null,"permalink":"/","section":"","summary":"","title":"","type":"page"},{"content":" Game Creajeux C++ Unreal Engine A-void is the third and last end-of-the-year project of my formation at Creajeux. It is a local multiplayer (up to 16 players) shooting game in space.\nIt is another project we made in collaboration with Frederick Raynal of Gloomy Wood and the third year artists. We used Unreal Engine 4 (4.7.3) this time and I can say that even if it was sometimes really tiring to deal with, I prefered working on Unreal compared to Unity.\nAt first, the game was suposed to be kind of survival and contemplative but due to some contradiction in the guidelines we finally decided to redo its design and gameplay to end up with more of a Unreal / Quake like game. No real background there, the players enter an arena and fight in first or third person view, picking up weapons and oxygen (that we kept from the first game design to avoid camping).\nAt the beginning I was assigned on finding what objects could be floating around the area (such as space train parts like a thruster or a console panel, a space suit etc…) and program their behavior like playing an animation or a sound. The project advancing, I focused more on the collectible objects which goes on the player’s ship like weapons, oxygen tank or a reactor. With the change in the design, multiple objects disapeared. Among them, all the reactors that changed the speed of the player became a timed bonus, gas tanks for the reactors were removed. I still managed collectibles because there were still the weapons, the oxygen and the reactor to deal with.\nI found my tasks really interresting and maybe it’s the project that I enjoyed the most working on because it was the development of multiple objects and not a big thing like the player’s physic like the year before. It didn’t stop me from working with the ones managing the player though, which I helped now and then and was really close to because I sometimes needed them to do precise behaviors for me. I also worked a little with the network guys to make my changes visibles to all the players. This project may be my favorite in the three years among the big ones and it was a cool game to finish my formation.\nScreenshots # Main menu First person view Using the gatling in third person view The tesla gun The ship can turn around in all directions A plasma shot Previous Next Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/a-void/","section":"Games","summary":"A 3D shooter student project in multiplayer","title":"A-Void","type":"games"},{"content":"Hi and welcome on my website !\nI am a video game programmer and here, I talk about all the games and projects I worked on throughout the years. You\u0026rsquo;ll find old and new projects alike, I like to keep track of my past and humble beginnings.\nExperience \u0026amp; Education Skills \u0026amp; Tools Asobo Studio 2022 - present Gameplay programmer I\u0026rsquo;m working mainly on the planes internal systems on Flight Simulator 2024. The Shooting of Isaac: Rebirth 2021 Remake of a student project Between two jobs, remade one of my student projects from scratch to practice. Kylotonn Games 2016 - 2020 Gameplay programmer I participated in the development of WRC 6, TT Isle of Man, TT Isle of Man 2 and WRC 9. Creajeux 2012 - 2015 Video game programming formation A french private school that taught me more about how programming works in a video game and gave me the fundamentals on how they are created. I validated my diploma with a six months internship at Kylotonn in Paris. BTS in Computer Science 2010 - 2012 Equivalent to an advanced technician certificate My studies there confirmed to me that programmation was my calling and made me think about pursuing a career in the video game industry. STI Baccalauréat - Electronic science A level 2010 This was my introduction to programmation. Languages C++ The language I mainly use since I began working with it in my STI baccalauréat. I just love how it works and all the things that can be done with it. C# I used it a few times over the years. My abilities in C++ allow me to switch to C# quite easily when I need to. I also used JavaScript, python and lua a few times on projects that required them like doing scripts in Google Sheets or creating a bot for my friends on Discord. Softwares Visual Studio I have been using this IDE since 2010 and went through all the versions all the way to 2022 that I use at Asobo. VSCodium This is my main editor that I use for everything from programming to text editing. I created the content of this website using it. VSCodium is very interesting because it is basically the same as VSCode, that I love, but without any AI agent or Microsoft telemtry, which is nice. In-house / proprietary engines As all my working experiences have been on proprietary engines, I am quite capable of adapting myself and learn using a new engine. I quite like having access to the engine code, it helps understand and resolve a lot of situations. Unreal Engine 4 I used it some time ago for a student project at Creajeux. I really liked the experience, I plan to try Unreal again in the future. Unity Like Unreal, I used Unity in Creajeux and was the first big scale ready-to-go game engine that I used. This being my first time with an editor made it a little bit difficult for me to apprehend but I managed to do I wanted to in the end. FaZoN The engine I\u0026rsquo;ve been working on since 2014 when I was at Creajeux. I love to tinker in it and add new things regularly. I\u0026rsquo;ve also been using it for a good amount of projects. I love the fact that the little engine I created ten years ago helps me create today. I also developped applications directly linked to the engine. Managers that help me start new projects faster or manage my assets. I also use softwares like Photoshop, Krita or Audacity regularly for my personnal projects. Libs \u0026amp; Frameworks SFML The library I used to build my engine. I\u0026rsquo;ve been using and loving it since Creajeux in 2012 when I made my very first game with it. It handles pretty much everything I need to do, being displaying sprites, managing sounds and music or handling inputs coming from various peripherals. Dear ImGui Another lib that I fell in love with. I began using it for the games we developped at Kylotonn and never left it, it works so well. Lately, I\u0026rsquo;ve been using it a lot to create small applications to help me with my engine or to use in my life in general, it has been very fun! TinyXml One of the many additions I made to my engine to write and read xml configuration files for my projects. jsoncpp I tend to go towards json more lately even if I still prefer xml for some of my files so I added this library aswell to my engine. I mostly handle options files and user directed files with it. I quite like using json. vcpkg The last big addition to my engine. I love that it allows me to easily add libs to my project without thinking about it. I find this tool very useful. DirectX 9 My first 3D framework. It was quite challenging to use, partly due to the lack of visual feedback (the kind an editor given by Unity or Unreal provides) but I find it very interesting. Coming back to DirectX has been in the back of my head for some time now. ","externalUrl":null,"permalink":"/about/","section":"","summary":"","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/tags/application/","section":"Tags","summary":"","title":"Application","type":"tags"},{"content":"","externalUrl":null,"permalink":"/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":"/tags/c/","section":"Tags","summary":"","title":"C","type":"tags"},{"content":"","externalUrl":null,"permalink":"/tags/c%23/","section":"Tags","summary":"","title":"C#","type":"tags"},{"content":"","externalUrl":null,"permalink":"/tags/c++/","section":"Tags","summary":"","title":"C++","type":"tags"},{"content":"","externalUrl":null,"permalink":"/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":"/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":"/tags/cream/","section":"Tags","summary":"","title":"CreaM","type":"tags"},{"content":"","externalUrl":null,"permalink":"/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":"/tags/game/","section":"Tags","summary":"","title":"Game","type":"tags"},{"content":" Steering Application Creajeux C\u0026#43;\u0026#43; SDL Steering formations and behaviors demonstration 2014 ","externalUrl":null,"permalink":"/applications/","section":"Games","summary":"","title":"Games","type":"applications"},{"content":" Personnal projects # The Shooting of Isaac: Rebirth Game Perso C\u0026#43;\u0026#43; FaZoN SFML The remake of a shooter student project July 2020 to October 2021 (alpha) WarioEscape Remastered Game Perso C\u0026#43;\u0026#43; FaZoN SFML A 2D Sokoban September 2014 Kylotonn (2016 - 2020) # TT Isle of Man - Ride on the Edge Game Kylotonn C\u0026#43;\u0026#43; Kt Engine A 3D motorbike racing game January 2017 to March 2018 WRC 6 Game Kylotonn C\u0026#43;\u0026#43; Kt Engine A 3D racing game January to October 2016 Creajeux - Third year (2014 - 2015) # A-Void Game Creajeux C\u0026#43;\u0026#43; Unreal Engine A 3D shooter student project in multiplayer April / May 2015 WarCreaft Game Creajeux C\u0026#43;\u0026#43; FaZoN SFML A 2D strategy game and AI demo student project November 2014 to March 2015 Creajeux - Second year (2013 - 2014) # Protokit Island Game Creajeux C# Unity A 3D racing game student project April / May 2014 The Shooting of Isaac Game Creajeux C\u0026#43;\u0026#43; SFML A shooter student project December 2013 WarioSkweek Game Creajeux C CreaM SFML A 2D puzzle game student project October 2013 Creajeux - First year (2012 - 2013) # H²ope Game Creajeux C C\u0026#43;\u0026#43; CreaM SFML Creajeux first year class project December 2012 to May 2013 ","externalUrl":null,"permalink":"/games/","section":"Games","summary":"","title":"Games","type":"games"},{"content":" Game Creajeux C C++ CreaM SFML Hope was my first year class project which means we were all together on the same game along with the first year artists.\nThe game is a 2D platformer inspired by The Lost Vikings by Blizzard. There are two robots between which the player(s) can switch to go forward in the game. Each character has its own perks for example one can jump whereas the other can deal melee damage.\nThe plot is quite simple : In the future, people live underground because they have poluted the planet too much but the water is becoming more and more rare so a squad is sent to see why. As they don’t come back, the village is worried so they turn back on old robots and send them to their rescue and deal with the water problem.\nThere are five levels in the game, each with its own ambiance, and a final boss. During this fight, the two robots unite and merge to form a unic robot which will be much more effective.\nTo create this game we used the school engine CreaM (SFML framework) and C at first but as we learnt more and more about programming we switch to C++ so the project has a little bit of the two languages in itself.\nOn this project, I was managing the menu which means leading a little the others that worked with me and doing my own part, I also participated in the creation of one of the monsters.\nSadly, I don’t have the game anymore on my computer so there are only screenshots to see (which another student of my class allowed me to download from their website).\nScreenshots # Main menu Level 1 - Desert Level 3 - One of the NPCs Level 4 - Mountains Level 5 - Last level Final boss Previous Next ","externalUrl":null,"permalink":"/games/hope/","section":"Games","summary":"Creajeux first year class project","title":"H²ope","type":"games"},{"content":"","externalUrl":null,"permalink":"/tags/kt-engine/","section":"Tags","summary":"","title":"Kt Engine","type":"tags"},{"content":"","externalUrl":null,"permalink":"/tags/kylotonn/","section":"Tags","summary":"","title":"Kylotonn","type":"tags"},{"content":"","externalUrl":null,"permalink":"/tags/perso/","section":"Tags","summary":"","title":"Perso","type":"tags"},{"content":" Game Creajeux C# Unity Protokit Island is the second end-year project of my formation at Creajeux. It is a racing game with car customization.\nThis game was made in collaboration with Frederick Raynal of Gloomy Wood and the second year artists of the school in two months using Unity.\nThe player can pick up parts in the environment and place them on their car to be more (or less, depending on the race chosen and the part influence on it) efficient in future races.\nThere are multiple islands which represent different kinds of behavior and control for the car and brought a fair amount of difficulties during the development. At first I was on the Formula 1 team where I made some interesting scripts like the starting lights countdown and I managed little tweaks on the car with the physic team which I joined later. When I switched it was to make the wheels turn to make the game more realistic (in spite of the general idea of the game where we can build a vehicule that would not work in real life, wheels on the roof and such). After that, I helped whith the physical behavior of the car and the multiple adaptations we had to do for the different islands. When it was good for the formula 1, the trial was unbearable or the rally was undriveable and so on.\nAnother feature that gave us a hard time was the fact that the parts the player puts in his vehicule affect its driving so we had to make sure every combination was viable.\nFinally we managed (not without pain) to get something quite smooth and enjoyable, we were really glad at this point.\nThis project was quite nice to work on even if it was hard sometimes but we had a glance what a car behavior programmation implies.\nTrailer # Screenshots # 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 Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/protokit-island/","section":"Games","summary":"A 3D racing game student project","title":"Protokit Island","type":"games"},{"content":"","externalUrl":null,"permalink":"/tags/sdl/","section":"Tags","summary":"","title":"SDL","type":"tags"},{"content":"","externalUrl":null,"permalink":"/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":"/tags/sfml/","section":"Tags","summary":"","title":"SFML","type":"tags"},{"content":" Application Creajeux C++ SDL This application was built from a school exercise we had in third year at Creajeux about steering behaviors. Steering is a movement method applicable on objects in a game, it is used to create behaviors and it is possible to mix them to obtain new ones.\nThe program contains multiple behaviors as follows :\nSeek / Flee: Pairs of entities are created, one seeking for the other, which flees. This behavior is quite simple but can be used to create other ones. Pursuit / Evasion: Similar to the previous one but with a little prediction in the mix. The pursuing enitity goes to the future position of the evading one that avoids the future position of the first. Arrival + Obstacle avoidance: Entities try to reach the user’s cursor while avoiding the red circles on the screen. Wander: Random determination of the next direction of the entity within a restricted range to keep some consistency and smoothness to its movements. It can be used to simulate some sort of idle state of an AI. Path following: Red cricles form a path that the enitities take. Once they’re at the end, they turn around and do the same path in reverse. Unaligned Collision Avoidance: Each entity predicts the movements of others around them and uses the obstacle avoidance to react when their trajectories interesct. Separation: Each entity goes to the opposite direction of the average one formed by their neighbors in a given area. Cohesion: Each entity calculates the average position of the others around and try to reach it. Alignment: Each entity goes in the same direction as the others around. Flocking: A combination of Alignment and Separation, the entities go in the same direction while keeping some distance between them. This behavior can be compared to a shoal. Lead following: All the entities follow the same leader while they keep distance between each other. Formations: A specific kind of lead following behaviour where the enities form a given shape when following their leader. The available formations are Circle, V, Line and Multiline. I enjoyed this exercise as I found it quite interesting and rewarding, I often found myself just looking at my results when debugging instead of closing the application right away. Flocking in particular can be really mesmerizing with enough entities. I also liked using those behaviors for the first time in WarCreaft as we were creating the two at the same time so after developping a behavior in the app, we put it in the game. Watching the game characters moving with my behaviors filled me with joy.\nScreenshots # Arrival + Obstacle avoidance Path following Flocking behavior Circle formation Multiline formation Previous Next Get the application # You can download the application below if you want to try it. Download ","externalUrl":null,"permalink":"/applications/steering/","section":"Games","summary":"Steering formations and behaviors demonstration","title":"Steering","type":"applications"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":" Game Creajeux C++ SFML The Shooting of Isaac is a vertical shooter inspired by The Binding Of Isaac in the graphical style and gameplay. It was a school project to develop during the Christmas holiday, we had only programming constrains which means the graphical part was up to each student. I chose The Binding Of Isaac as a graphical design because I really like this game and has many shooter mechanics so it was quite pleasing to adapt it in a school project.\nYou will have to choose between several characters who have different stats to go through the three levels and beat the final boss. During your progression you’ll pick some items up to help you which will change your stats or your gameplay. At the end of the game, or when you die, you can save your score and look for it in the ten first in the scoreboard of the main menu.\nThis project was my first with SFML. It was quite interresting and also a bit challenging but I went through it and I’m pretty satisfied with the result. I used C++ in Visual Studio 2013, which allowed me to do a lot of inheritance and polymorphism like I needed.\nAll those conditions made the programming really amazing and I didn’t see the hours fly so it quickly passed the hundredth hours of developing.\nVideo presentation # Screenshots # Main menu Character selection The caves with Isaac The depths with Magdalene Final boss fight in Sheol with Eve Game over Previous Next Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/the-shooting-of-isaac/","section":"Games","summary":"A shooter student project","title":"The Shooting of Isaac","type":"games"},{"content":" Game Perso C++ FaZoN SFML The Shooting Of Isaac was a student holiday project that I did during Christmas 2013. In July 2020, seven years later, I finally found the time to start developping a remake with better mechanics and graphics, using the assets from The Binding of Isaac: Rebirth. Thanks to the Afterbirth+ DLC and its modding capabilities (data extractor and in game console), I had access to every file in the game, allowing me to be as close as possible to the base game. The wiki website of the game also helped me tremendously.\nThe Game # The Shooting of Isaac: Rebirth is a 2D vertical shooter in which you play as one of six characters, each one with their own statistics, going through various levels filled with enemies to kill for score and a boss at the end. From time to time, there will be items spawning coming down the screen to pick up. You can have three items at a time and their effects synergise with each other to change your gameplay or give effects to the tears you shoot. If you already have three items and see one you like on the floor, you can select which one you want to replace in your inventory (tab / RB by default) and the new item will go in its slot. Between each level, there will be a shop where you can heal and buy new items. When the end boss is killed, or when you die, you’ll be able to enter a name and save your score.\nI wasn’t really pleased with some aspects of my first game, limited by the time or my skills. The first thing that comes to mind is the Technology (laser instead of normal tears) + Wiggle Worm (sinusoidal tears) synergy, which should have resulted in a sinusoidal laser, instead of a straight one moving left and right. Having this in mind, I wanted to readapt the synergies to have cooler effects. Even if Wiggle Worm is not in the Rebirth version, Technology got some nice reworks, one of them being the combination with Spoon Bender (homing tears) to make a homing laser that goes from its starting point to the enemies on its way.\nThe Development # This is the first big project that I’ve done with FaZoN, my personnal SFML based framework, using C++ and a bit of C# in Visual Studio 2017 and 2019, and I’m quite pleased with the result. Working with FaZoN made me tweak and upgrade it a lot, since I had a lot of needs throughout the production. I, for example, had to add an entire new animation system that could use the files coming from the base game, instead of converting them to what I already had. This took some time but I’m glad I did it because it was much faster after this, I could just take the .anm2 files of the base game and paste them in my game directory and it worked instantly. It also was a much better system than the rudimentary one I had at the time. Like I said with the animation system, all the additions to my framework took time to do and surely slowed the production down a bit, but I’m glad I did them because FaZoN is better now than before and future projects will go more smoothly.\nEnemies # One of the big steps I had to go through during development was how to manage my enemies, I had a good number of them planned and didn’t want to go with inheritance as it would have created a lot of class with little amount of code in them. What I did instead was to look what actions and triggers my enemies needed and put them as separate functions to be called by my unique enemy class via an array and action descriptions. For example, two enemies that shoot bullets will both call the shoot function I created, but with different descriptions detailed in an XML file and stored in the enemy class.\nOn the picture above is displayed an example XML of an enemy, it is one of the first I created. We can see the functions block in red, the animations block in green and the sounds block in blue. There are three types of functions:\nMovement, describing how the enemy move (random behavior, chasing the player, etc…). Action, describing what the enemy can do (shoot, charge, etc…). ActionTrigger, describing how and when the enemy will do an action (proximity with the player, timer, etc…). Movement functions are cumulative, for example, an enemy that have a function that chases the player and an other one that make it move randomly, will make the enemy go towards the player in an eratic and random manner instead of going straight to the player.\nLater on, I added behavior trees to the enemies, it also took a bit of time but really smoothed the process with some of them.\nI worked on a system allowing me to call enemies action functions from within the behavior tree, which made a lot of things easier as I just had to fill a name of an existing function instead of creating variables and initialise them in a behavior tree task. We can see the occurences of the action function squared in red in the behavior tree highlighted in green in the image above.\nEditor # At first, I was editing my XML files manually, but it quickly became more and more difficult as I had more and more variables to put in and affect and remember which variable goes with which function. To make things easier for me and also work faster, I created an editor which read my files and put everything in a nice ImGui window for me to tweak. It helped a lot once I started messing around with behavior trees aswell. It also let me have a window displaying all my enums and masks values clearly so I wouldn’t have to have a file opened on the side displaying which value corresponds to which enum field or mask bit.\nAll the parameters available to make an enemy shoot The enums used in the project Creating this editor was also a way to create and work on my enemies patterns. While the first enemy I created shot a single bullet toward the player, others were far more complicated like Mom’s Heart which had multiple phases and shooting behaviors to look at. This meant that not only did I had to manage a behavior tree, I also had to have a place to handle my patterns and most importantly preview them.\nThe two videos above show the edition of a pattern (top) and the preview of some of the ones I created for Mom’s Heart (bottom). When Isaac is displayed, it means that the patterns adapts to the player’s position:\nThe brimstones (red lasers) will rotate towards the player (the player is on the left of the bottom right laser, so the rotation goes to the left). The single line of bullets (0:47) simply shoot at the player. The five bullet lines one (0:56) rotates the opposite direction of the player. Data Encryption # Since I don’t own the graphic and audio assets, but share my game on Gitlab, I wanted to protect its data. It has always been a goal for me to crypt data since that’s what you’re supposed to do with your productions but since mine have always been little student projects, I never looked into it untill now. I won’t go into too much detail here to keep the security up on the assets. What I can say is that it was a bit difficult to wrap my head around it at first and I may change the way I did it in the future but I’m glad I did it and I now have a working encryption system for my projects with a nice Windows Forms application to make it easier. (Update: Since I wrote this, I entirely remade my file encrypter in C++ with my engine and combined it with a resource manager).\nThe application is divided in three parts:\nOn the left is the hierarchy of the “raw” files, the ones I’m going to encrypt. I can check a file or folder and build only the checked ones, or build all my assets at once with the buttons just below. By default, the application doesn’t overwrite existing files but I can force it by checking the “Force Build” checkbox, in case I modified a file and want to encrypt it again for example. On the right is the hierarchy of the encrypted files so I can see if everything is there. From there, I can also decrypt a chosen file to see if the encryption worked well, it’s more of a debugging feature. I added a “Delete Decrypted Files” button to clean the decrypted files before copying my data folder for a release. At the bottom is the progress bar of the encryption with the current count of encrypted files and the console indicating which file is being processed. If the file already exists and I’m not forcing the build, there will be a gray “skipped” text instead of the “encrypting” black we see on the screenshot. Live streams # During development, I streamed on Twitch to make myself an archive and show people what I was working on. I started around the time I was working on the editor and stopped some time after having finished the alpha version so all the production is not on there but you can check the playlist of my streams on Youtube.\nSpecial Thanks # This project was really challenging and I’m glad that I got people to help me with it from time to time, so I would like to thank Rémi Maigné and Jérôme Benvenuti for their assistance and suggestions, but also Simon Parzer, lead programmer on the base game, who answered some of my questions about the game, and everyone around me for their support during the development.\nScreenshots # Title screen Character selection Keyboard inputs Controller inputs Highscores Azazel fighting the Duke of Flies in the basement Eve having a nightmare Eve fighting the Dark One in the caves Judas in the depths Magdalene in the womb Eve fighting Mom\u0026rsquo;s Heart in the womb Won run with Magdalene Credits Previous Next Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/the-shooting-of-isaac-rebirth/","section":"Games","summary":"The remake of a shooter student project","title":"The Shooting of Isaac: Rebirth","type":"games"},{"content":" Game Kylotonn C++ Kt Engine The Tourist Trophy is a road race that takes place every year in early June on the Isle of Man since 1907. Hundred of pilots face each others in several categories (Supersport, Superbike, Lightweight, Sidecar, etc..) on multiple laps (number depends on the category) on the 37.73 miles (60km) track. Lap record is 16'36.114 by Peter Hickman with an average speed of 136.358 mph (219.447km/h). Pilots can go as fast as 206 mph (331 km/h).\nAfter some support on WRC 6 and shortly helping on an other project, I began working on TT Isle of Man in January of 2017 and stopped some time after the release date in 2018. I joined on a pretty early stage of the production, the physics of the vehicle was being worked on sice a few months and there were a few tracks playable aswell.\nI did several tasks on this game, including the integration of HUD elements and a lot of bug fix, but I will detail two aspects that took me the most time and that were the biggest challenge.\nThe start queue # The first task I did and on which I spent a lot of time throughout the production was the creation and maintenance of the start queue. On the real Tourist Trophy, pilots are placed in a queue and start every 10 seconds. In a race mode we had in the game (that we called TT Style), we wanted to recreate this, so I began the creation of this component.\nA start queue component in the editor The start queue of the Tourist Trophy in game Your browser cannot play this video. Download video.\nThe start queue in action One of the biggest issue with this was to adapt all the procedure of the starting of a race to this style, in GP style the countdown begin right after the player validates the pre-race menu (the menu displayed when the level finished loading, summing up the starting grid) and everyone is leaving at the same time. I had to delay the countdown and make sure it only affects one rider at a time. I also made sure that no matter the player position in the grid, he will always start second at worse, meaning that previous riders (before the one ahead of the player) had to be placed where they should be on the track.\nWe also had several issues with the AIs running their race when they shouldn’t so I had to override some of their states (HFSM) to make it work. This component is part of the ones that required to most attention and support during the development of the game.\nCareer mode # It was a huge deal for me because, even if I had WRC 6 as a base, I had to create everything from scratch. One thing I had to keep in mind was to always use fixed range arrays and standard variables instead of pointers because of the way our save file worked and some TRCs (Technical Requirement Checklist, a set of “rules” to follow to be able to ship the game). It took me pretty much all the time of the production to create and put everything in its place.\nAmong my tasks on the career mode, I had to create events (some random and some scripted ones) and check that multiple seasons could follow one another without any issue. To generate random events, I had a config file specifying the necessary parameters. From there, all that was left to do was to figure out what events I had to create for each generation. Managing the scripted events was a bit difficult as I had to handle when and how those would come back in the calendar, it was quite the challenge. They had multiple conditions to come back, like their frequency (every season, every odd season, one out of X seasons.. etc) and a reappearance value to put a gap between each cycles. It was kind of complicated and I wish I had done something simpler.\nThere were several events generations throughout the season, the player could see two months ahead, so with each month passing, I was generating events for the N+2 month.\nCreating and managing the events was a big part of the career mode and took a lot of time to get it to work.\nTrailer # Screenshots # TT Style race with live rankings Rankings screen at the end of a race Racing in the forest GP race Main menu Home screen of the career Inbox for coming events Calendar of races Previous Next Get the game # ","externalUrl":null,"permalink":"/games/tt-isle-of-man/","section":"Games","summary":"A 3D motorbike racing game","title":"TT Isle of Man - Ride on the Edge","type":"games"},{"content":"","externalUrl":null,"permalink":"/tags/unity/","section":"Tags","summary":"","title":"Unity","type":"tags"},{"content":"","externalUrl":null,"permalink":"/tags/unreal-engine/","section":"Tags","summary":"","title":"Unreal Engine","type":"tags"},{"content":" Game Creajeux C++ FaZoN SFML During our third year at Creajeux, we had to develop a little game in which we could implement all the things we learnt considering AI. Features like pathfinding, behavior trees or steering, in addition to diagnostic tools like console commands or pure programming component like threads. Our teacher wanted a Wacraft 2 inspired game even though it wouldn’t be a game as it would only be composed of tools and not gameplay mechanics, we could add some but it wasn’t the point of the project.\nI was helped by two other students for the development, we started with the diagnostic tools and the threading features which I took care of. My mates were on the units management and HUD / Camera. I was a lot in the core of the game, tweaking the engine (we took the little framework that I had at the time too start) and dealing with mostly intern things. I created the debug window which displays the commands and the units selected or informations about the application like the memory it uses or the framerate.\nLater, I dealt with the pathfinding, which was a really big part of the project. I managed to do something nice and was quite happy about it. I used A-star with a simple Pythagore for the heuristic (I was using Manathan first but it was taking too much time to process). Working with that, I added the steering behaviors so I could use a path following to smooth the units’ movements when going on their targets. I also used string pulling to end up with a really nice path.\nFinally came the behavior trees to make an illusion of AI for the enemies, I really enjoyed that part even if it was a little long to program.\nA thing that was quite troublesome in the process is that with our cursus evolving we had to redo some parts of the game multiple times to adapt the code (to follow the objectives of the features to add) so it is a little hard to read here and there but we managed to keep it as clean as possible in spite of the circonstances.\nI’m quite happy with what I’ve done with WarCreaft in the end, I have several steering behaviors like path following, arrival or seek, a nice pathfinding and some console commands to do multiple things like spawn units, kill units, selection, healing, hurting and so on.\nI think it’s one of the things I enjoyed doing the most during the third year. It also allowed me to work more on my personnal framework (which has become FaZoN now, that I always develop to add more and more features) and I appreciate the fact that you have to predict what the user could want to do with it and develop with that in mind, it’s really interresting.\nScreenshots # The game starts Unit creation New building placement AI base Debug informations display \u0026nbsp; \u0026nbsp; Previous Next Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/warcreaft/","section":"Games","summary":"A 2D strategy game and AI demo student project","title":"WarCreaft","type":"games"},{"content":" Game Perso C++ FaZoN SFML Yes, another game with WarioLand 4 graphical design but I can’t help it, I like this game !\nCreaEscape was the very first game I made at Créajeux (as well as in my life) in two weeks. It teached me well how games are done, at least the basics, and it was a really good start. This version is the remake I made just before the third year to get used to program again and enhance the game a little with animations for example. I also made this because I lost the old version and it made me kinda sad.\nI used the little framework I made in SFML C++ in Visual Studio 2013 for this project and I was really glad to produce something out of a tool I created, this is very rewarding.\nThe principle of the game is to guide your character from the start to the end of the level and avoid any contact with enemies or mines which will kill you and bring you back to the start with one life short. If the player loses their three lives this is the end and they’ll have to retry the level.\nWhile I’m talking about the level, it is created from a text file so you can modify it and create your own but remember to make it 10*10 squares.\nThis is a little game so there’s nothing much to add, just try it and enjoy it !\nScreenshots # Title screen Game session Victory screen Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/warioescape-remastered/","section":"Games","summary":"A 2D Sokoban","title":"WarioEscape Remastered","type":"games"},{"content":" Game Perso C CreaM SFML WarioSkweek is a 2D puzzle game inspired by Tiny Skweeks (DOS game) for the gameplay part as our formator told us to recreate it. Since I like Wario Land 4, I thought it would be nice to use its graphical design with a zest of minecraft for the scenery. I think Minecraft is very useful for that as I just have to download a texture pack to have all kind of tiles for my games !\nThis project was the last one I did with the school engine CreaM, a nice tool but it was time to let go and follow my own path (and after that came The Shooting Of Isaac. It was also the last game I made in C language, now I’m more on C++. I used Visual Studio 2012 on this project.\nThe game has 11 levels from the DOS version with the same passwords and has a level creator so you can add your own. There is a scoring system and a highscore saving to see your improvements.\nBeware ! Due to some compilation issues, I couldn’t translate the game so it’s in french but all the menus and texts are explained in the user manual available in the downloadable zip at the bottom of the page.\nScreenshots # Level 3 Level 5 Level 7 Level score board Highscores Level creator Previous Next Get the game # You can download the game below if you want to try it. Download ","externalUrl":null,"permalink":"/games/warioskweek/","section":"Games","summary":"A 2D puzzle game student project","title":"WarioSkweek","type":"games"},{"content":" Game Kylotonn C++ Kt Engine At the end of my formation at Creajeux, I had to look for an internship to validate my diploma, this is how I found myself at Kylotonn. This studio had released WRC 5 (game with which they obtained the licence) and was beginning the production of WRC 6. It has been the first professional game I worked on and I was really pleased to begin with this one, being satisfied to work on a racing game (a kind of game I like) but also to use C++ on a proprietary engine called Kt Engine. It allowed me to discover something else than other Unity or Unreal, which I studied in school.\nWRC 6 is a racing game where you can play solo just launching races and in career mode, or in local and online multiplayer.\nI mainly did gameplay tasks, some of which I\u0026rsquo;ll detail here.\nVersus races gameplay # The game had special tracks in some countries where the route buckled on itself so it had two parts of the track side by side for the most part of the circuit. One of my longest and hardest tasks was to make the versus gameplay work on those tracks. This gameplay, requiring two players, consisted of making each car appear on different parts of the track so they start side by side but with a route difference.\nAs you can see on these two pictures, each player starts at the middle of the track of the other. They won’t have the same difficulties at the same time of their race.\nThis game mode has provoked many issues because it wasn’t intended by the race system in place. For example, when the second player went through his first checkpoint, he was teleported by the anti-cheat verifications because it wasn’t the first planned in the race in the default version, the player couldn’t complete their run. An other problem was caused by the spline used to indicate the route to follow to the vehicle, indicating if the player goes to far or not. Here again the second player could be teleported to inaccurated spots on the race track.\nI managed to give another spline to the race component for the second player and created a filter system on the checkpoints so they ignore one of the players going through. Other components created issues like other checkpoints used for anti-cheat purposes or the pacenotes display system which we filtered the same way.\nThe HUD of the second player caused trouble too as it displayed their progression cursor in the wrong spot, so I changed the calculation of their position by taking into account the location of the start line on the race spline.\nVehicles progression tracking and interface # The addition of the versus mode and tracks with special routes brought numerous issues regarding the tracking of the vehicles progression through the race. The calculation I mentioned earlier consisting of taking in account the position of the start line being done a multiple places and being used for many things, I created a structure allowing to only read the right values when the time comes.\nThe calculation of the start line position from the beginning of the spline At first, this structure contained only the position of the start line, the vehicle position according to it and the total length of the spline, allowing the re-calculation of the checkpoints position and other triggers laying on the road. Each vehicle getting its own structure, there was no issues with the second player when following their progression or make them respawn to the right place.\nAccomplishments and achievements # The game contains an intern accomplishments system rewarding the player for doing specific actions during races. Some of those accomplishments are achievements (or trophies) aswell for Steam, XBox Live or the PSN.\nI spent a good amount of time making the unlocking of all of them possible by the update of some being already in the game or the addition of new ones. All of them required the tracking of the player’s actions at several places in the game, being in the menus (tweak the vehicle settings, watch the credits…) or in game (win a race, do a flip over, finish with a puncture…). Fortunately, a lot of them were manageable at the same spot, unlocking at the end of the races, but others required more thoroughness. I ended up creating a Google Sheet keeping track of my progression in this task where I was easily lost.\nAn important part of this task was also to allow the player to re-obtain achievements if he resets them, like it is possible on Playstation. Some conditions went from “win a race” to “win one or more races”, the function in charge of the achievements unlocking checking itself if it is already unlocked or not.\nSound related tasks # On several occasion, I had to work on the game sound effects.\nFirst, I made sure that left and right wheels were separated, allowing to have, for example, asphalt sound on the left and grass sound on the right when the player begins to go offroad. Before, we used the higher surface index (say, 0 for asphalt, 1 for grass, 2 for snow, etc..) among the detected surfaces under each wheel, and we played the corresponding sound at the middle of the car. Splitting the sounds between left and right allows a little more realism and immersion. To make this possible, I had to duplicate a good amount of the variables used to manage the wheels sounds, like slipping, rotation force or brake values. I also doubled the sound events instances so we can play the same sound twice when the two sides are on the same surface.\nNext, I changed the sound events used for the pacenotes to use only sounds loaded and streamed when needed. This made me change the management of those sounds, especially on the recovering of their informations such as the length, accessible only when the sound has been fully loaded. I also had to change their loading in the engine because they where unloaded automatically after they were played and were loaded only when played, but I wanted to load them before for some of them. The pacenotes being stored in a pile as the player goes forward, we wanted to load them when they were detected so they’d be ready when we wanted to play them.\nI also added tutorial voices in the menus which describe to the player what’s going on in it. To do this, I added a new sound bus child of one of the fourth already existing (Music, Sound effects, Voices and Interface) and I managed the sounds the same way I did for the pacenotes by loading them when needed.\nFinally, I updated the system used to handle the sounds reverberation in the forest. The code already in place was going through the chunks (cubic zone containing game assets) around the player to detect trees in them during all the gameplay, which was really performance heavy. I used an Oriented Bounding Box (OBB) placed around the vehicle to replace this code and detect the trees in this zone only, and then calculate a weight relative to the impact that each of them will have on the sound reverberation. Once the weights of each side of the vehicle go beyond the required threshold, a reverberation value is calculated.\nThe green detection box and the detected trees represented by red spheres Keyboard \u0026amp; controller bindings update # Some bindings were already in the game but on the wrong buttons, others were simply not there. The important part of this task was to create a binding which scrolls through the gameplay cameras in reverse from the one that was already done, so the player can navigate both ways to get the view they want. The functions managing the camera change being intended to go only in one way, I had to adapt some and create new ones, which took quite some time.\nI’ve done other minor tasks which I won’t detail here, like the application of a red glowing on the brakes according to their temperature or the activation of particles when the player is rolling on the rim of his car.\nI appreciated a lot this project as a first professional experience and the atmosphere with the other employees was really good. I found the majority of my tasks interesting and rewarding, which helped me to always give the best of myself even if it was complicated at times.\nI was also very honored to have my name in the credits of a commercialised game for the first time !\nTrailer # Screenshots # Italy - Tutorial Villa del dique - Argentina Karlstad - Sweden - Versus race Fernet Branca - Argentina - Another versus race Replay menu \u0026nbsp; Previous Next Get the game # ","externalUrl":null,"permalink":"/games/wrc-6/","section":"Games","summary":"A 3D racing game","title":"WRC 6","type":"games"}]