A short demo of my 2D parkour system, showcasing the character's core moves: walking, sprinting, a fixed-trajectory (with variable-height) jump, and wall climbing.
This 2D parkour system is a personal project I developed in Unity and C#, born from a passion for games. The project was directly inspired by the fluid, 2D traversal mechanics of the Assassin's Creed Chronicles series. My long-term goal for this prototype was to expand it with a complex combat system, though that feature was not implemented. The tileset used in the demo comes from Axulart on Itch.io.
Advanced Horizontal Movement: A 2D controller with distinct walking and sprinting states.
Variable-Height with Fixed-Trajectory Jump: Variable jump-height based on the duration of the button press, allowing for both short hops and full leaps. The trajectory is fixed, meaning horizontal movement is disabled once you're in the air.
Wall Climbing: The core parkour mechanic. By holding a button against a detectable wall, the player transitions to a "climbing" state, allowing them to stick to the surface and move vertically up or down.
Language: C#
Engine: Unity
Core Concepts: 2D Character Controller, Physics (Collisions), Tilemap Systems
IDE: Visual Studio
Tools: GitHub
This project was a significant self-directed technical challenge, pushing my C# and Unity skills beyond simple controllers. The main hurdles were in engineering the parkour logic and managing the project's ambitious scope.
Unity's Tilemap System: The single greatest challenge I faced during this project was migrating from using hand-placed blocks to instead using Unity's built-in tilemap system. This was per recommendation from my College tutor, and whilst at the time it did serve as quite challenging, having now done it I believe it was the right choice - greatly speeding up the level creation process. The challenge itself didn't come from getting the tilemap to work, but instead getting other systems such as detecting climbable walls, to work with it. This taught me a great deal about collision layers, and grid-based logic.
Parkour Mantling: I was ultimately unable to implement a "mantle" (climbing over the top of a ledge). I struggled with the logic of how to detect when the player is at the top of the wall, and how to make this transition feel smooth. It was a frustrating problem to leave unsolved, but it highlighted the complexity of advanced character controllers and is a feature I am keen to solve in the future.
Scoping: My long-term vision for this project was to eventually end with a fully-fledged game, drawing inspiration from the Assassin's Creed Chronicles series, but also adding my own personal spins with the combat system & narrative. This ambitious scope was beyond what I could achieve in my available time, leaving the project as a pure movement prototype. This was a clear lesson in project scoping and time-management.