Rappel down a gargantuan tower as a succession of explorers wanting to bring salvation to their kind. However, the tower isn't as friendly as originally thought. Confronted with overwhelming darkness and a relentless environment, which path will you weave down to its base?”
Down the Tower is our ongoing 3rd year project at Bellecour Ecole, which serves to demonstrate our ability to put into practice everything we had learned up until now. My roles in this project were mainly prototyping core mechanics, developing quality of life tools, and building a cohesive narrative.
During the first months, I worked on prototyping two core features:
  • A torch that changes its appearance based on its distance to the player
  • A ladder that falls until it hits an obstacle (or hits 180°)
Since these two mechanics were objects we could throw anywhere, I also had to develop an aiming feature to help the player previsualize either the torch's trajectory, or check the ladder placement's validity. By rapidly prototyping these mechanics, we realized that the ladders didn't really work with the intentions we had for our game. As such, we scrapped it without wasting any time on development.
Once we knew which mechanics to keep, I went back to general game design and analyzed what kind of player skills were required for each of our core mechanics, so that we could then use that analysis to tweak some variables in diverse situations for a smoother difficulty curve. Here is an example for the torch:
To make the life of our level designer easier, I started to work on a tool that would spawn an astonishing amount of meshes in a defined radius with minimal impact on performance. To do so, the tool first distributes raycasts in a “fibonacci sphere” pattern, and spawns a game object on collision. The transform of each of these objects is stored in a list so that once play mode is enabled, all the game objects are deleted and replaced with GPU instanced meshes.
Added to that are tweakable values that let us control how large we want the spawn radius to be, the amount of rays we want to cast, how far apart each object should be, or the minimum and maximum scales of each object.
The main reason we wanted to have a tool like this one was to spawn in organic elements, primarily mushrooms. So to make the pattern a bit more natural, I translated keijiro's 3D Simplex Noise from HLSL to C# (which took a while, because there is no simple way of printing values in HLSL. I had to use the step node in the shader graph and manually input results…). In doing so, I could easily combine this tool with shaders that would use the same noise. Here's a result of my work with the added shader done by our technical artist, counting a total of over 45 000 mushrooms:
In between major tasks like these, I mostly worked on prototyping and implementing basic features like elevators, levers, light-receptive doors, while also fleshing out the narrative by writing logs from the point of view of in-game characters.
Developed by Noah Coupey | 2025