Scélérat is a 2D top-down rogue-like mixing the themes : mushroom, mafia, rats and jazz. In game, you play "Jazz", a field rat, that fights against the city's rat mafia and their mushroom traffic. It was made in 5 months by a small team composed of 2 Game Designers and 3 Game Artists.
For this project, I was Game Designer and Technical Lead, and had the following responsabilities :
-Design the mechanics, 3C and systems for the game with the help of the other Game Designers.
-Define the technical architecture including class inheritance for the project and assure the implementation of the code made by the other Game Designers.
-Program the controller, IA, procedural terrain generation, A* pathfinding, UI and camera.
- Assure the implementation of animation, VFX and shaders made by the art team.
With Scélérat, we wanted to create a dark and immersive world using jazz like sound and environmental narration. Scélérat is an homage to "film noir".
We really wanted to build a coherente univers. Therefore, we put a lot of effort in the environement, sound design, animation and VFX.
We also wanted to add dialogues into the game but sadly we had to cut this features in order to finish the project in time.
Scélérat is focused on action and simplified ressource management. The game is made to be played with a gamepad, in twin-stick (one stick to aim and the other to move the character).
Jazz, the main character, can shoot with his gun, kick mushrooms or enemies around him and set up or smoke mushrooms. As you can see in the gameplay video, there are 2 types of mushrooms : a blue and a red. Each have different effects when they are set up like traps (to impact enemies) or smoked (to buff Jazz). The blue mushrooms impact mobility and the red affect damages. Jazz can set up a mushroom then kick it straigth in the enemies' faces !
A shop is also present between the levels and the boss, which allow Jazz to heal himself or to buy more mushrooms before the final fight. In order to buy items in the shop, you have to collect money, which you can find by killing enemies. This simple feature gives a reason to kill enemies and not just try to dodge them.
Lastly, you can see that the player only has two bullets. After 2 shots, he must reload (automatically) in order to shoot again. This makes the "no mushroom" playstyle very dangerous (but not impossible if you like to try-hard).
As a rogue-like, Scélérat had to have a procedurally generated world. This was a big challenge for me because I had to make the feature in only one week, and contrary to most rogue-likes, our game wasn't taking place in a closed dungeon, but instead in an open city! We had to give to the player the feeling of coherence and freedom, but still make him go where we want him to go. We decided to use roads to indicates the "good" path to follow, and to generate room per room or "district per district" the level.
On the first video, you can see the first prototype of the procedural generation. In this video, the green room is the start, blue is the final room and red are ambush rooms with a lot of weak enemies. We used ambush to manage the pacing of the game and add some diversity.
In this picture, you can see the results of the generation, after adding roads, buildings, props and lighting. The props and building positions are randomly chosen in an array of pre-set possible positions in the room prefab. This technique allowed us to place coherently the buildings and props, and to have a lot of control on the world generation.
Here is a video of the final product, with the enemies. As you can see the world is instantly generated when the player starts the game. You may also notice that the number of enemies per room increases gradually. The type of ennemies is also managable. We wanted to be able to modify these values in order to have a good pacing. Lastly, the enemies wait for you to be close enough before attacking you, so you don't have to fight all the enemies of the level all together.
Artificial Inteligence was the other huge feature of the project. We wanted 3 different types of enemies, which meant 3 different behaviors, and with that a pathfinding system that work this the procedural level generation. In order to do that, I built a simple architecture based on class inheritance, as you can see on the diagram.
For the AI pathfinding, I used A* algorithm. The game scan the props around you in order to detect non-walkable space for AI, and when the player moves too far from the previous scan area, the gamescans the new area. We couldn't scan the whole level at once beacause it was too expensive on the performance side.
On this video, you can see the blue area (A* scan) where the red dots are non-walkalbe space. You can also see all gizmos, including a yellow cone when the player is shooting. This cone is the aim assist for the player, which are raycasts detecting enemies.
The circle arounds enemies are the different area for the AI, in order to have the best behavior depending on how far (in which area) is the player.
We made this project in 5 months with only two game designers (including me, that spent most of my time programming). This made the production hard. On the side you can see the work I had to do each day on the project. Thankfully, the five of us really got along which probably saved us !
It was a great experience, both technically and on the human side. We all learned a lot and we are very proud of what we have accomplished.