Down the Tower

Genre: Abseiling, Adventure
Stack: Unity Engine, DOTween
Team size: 16
Duration: October 2024 - May 2025
Role: System, physics & controller programmer
Abseil 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 an relentless environment, what path will you weave to its base?
Down the Tower is my third-year game project at Bellecour Ecole. Our team consists of sixteen members, with a core design team of five—including myself—responsible for shaping the game's vision.
As the sole trained game programmer on the team, I oversee the project's architecture and develop key gameplay mechanics, such as the player controller and the rope system. My role is crucial in ensuring the game's technical foundation is solid while bringing innovative features to life.

ARCHITECTURE

For this project, we ultimately chose Unity as our development engine. A significant portion of the mechanics involved modifying the Render Pipeline, which is more straight-forward and accessible in Unity compared to Unreal Engine. Unreal's Render Pipeline, while powerful, operates more like a "black box," making it less flexible for our specific needs.
This project marked a departure from my previous work, as it was the first time I ventured into non-systemic game design.
Since November 2024, I have consistently employed a Data-Driven Architecture in my projects, and this one was no exception. By leveraging Scriptable Objects and the Observer Pattern, I was able to efficiently store and manage data while enabling seamless and non-static communication between scripts. This approach not only improved scalability and maintainability but also allowed for a more modular and flexible development process.

CONTROLLER

The playable character serves as the core feature of the game, acting as the critical bridge between player input and the in-game environment. Its behavior is driven by a State Machine (STM) that manages three primary states:
Locomotion: Handles movement while the character is grounded (see Figure 3.1).
Fall: Manages movement when the character is airborne and not attached to any objects (see Figure 3.2).
Rope: Controls movement when the character is airborne but attached to a rope (see Figure 3.3).
Figure 3.1. Controller "Locomotion" state
Figure 3.2. Controller "Fall" state
Figure 3.3. Controller "Rope" state

ROPE

The rope is the second most critical feature of the game, serving as the centerpiece for a majority of the gameplay challenges. Players will frequently rely on the rope to swing, climb, and navigate through the environment.
The rope system is composed of several interconnected subsystems, each handling specific interactions:
Folding: When an obstacle (collider) is positioned between the character's harness and the piton (anchor point), a fold is created. The rope then continues from the last fold instead of the piton. Whenever a fold is created or removed, the rope length is dynamically updated to ensure seamless adjustments to the rope constraint (see Figure 4.1).
Length Management: The rope length acts as a constraint on the character's movement, with the center of the constraint being the last fold. This ensures the rope behaves realistically and adapts to the environment.
Abseiling: Temporarily removes the rope constraint, allowing the character to descend freely.
Climbing: Gradually reduces the rope constraint, enabling the character to ascend.
Swinging: While in the "Rope" state, player movement inputs apply acceleration along a tangent to the circular arc represented by a vertical slice of the sphere that the rope constraint visually defines. Combined with gravity, this creates a realistic pendulum effect, making swinging both intuitive and dynamic (see Figure 4.2).
Figure 4.1. Rope folding system
Figure 4.2. Rope balancing
made by hugo valot