Saparkour: Evolution (V2)
Traversal Systems | Custom Rigidbody Controller | Grapple Mechanics | Level Design
Play The Game →Summary
Saparkour: Evolution is a ground-up rebuild of the original Saparkour that explores a new movement
model based on momentum-driven traversal.
Instead of jump commitment, the player controls a spherical frog that accelerates through player
input and maintains speed through careful steering and drifting.
The project focuses on physics-driven movement, expressive routing through bouncing and shortcuts,
and a fully rebuilt grappling system capable of rope wrapping and interaction with moving
platforms.
Project Details
1 large handcrafted level divided into 5 traversal sections
Momentum-based custom Rigidbody character controller
Drift system enabling sharp turns while preserving speed
Expanded bounce system allowing rebounds on both walls and floor surfaces
Fully rebuilt grappling system with rope wrapping mechanics
Grappling compatible with moving platforms
Rope system implemented using dynamic rope-point lists
Custom rotation and rolling system driven by player velocity
Multiple shortcuts and branching traversal paths enabling emergent routing
Team and Time
Team Size: 1 (Solo project)
Time: 2 weeks
Developed in parallel with FIEA capstone production.
Goals
The goal of Saparkour: Evolution was to revisit the original Saparkour concept after one semester
at FIEA and explore how my technical design skills had evolved.
Rather than iterating on the existing prototype, I rebuilt the project from scratch with a new
movement model and a stronger focus on system architecture and code clarity.
The primary objective was to design a physics-driven traversal system based on momentum and drifting,
supported by a fully custom Rigidbody controller and a redesigned grappling system.
I also experimented with spline-based level construction to better support the new movement style
and allow for smoother traversal routes and shortcuts.
Development took place over three weeks while working in parallel with capstone production. Most of
the development time was dedicated to refining the character controller and traversal systems, while the
final week focused on building a large demonstration level that showcases the mechanics and possible
routes through the environment.
Systems
Momentum Movement System
Custom Rigidbody-based character controller built around momentum traversal
Player acceleration driven by directional input
Velocity-preserving movement encouraging speed maintenance and routing decisions
Expanded bounce system allowing rebounds on both walls and floor surfaces
Physics interactions designed to support emergent movement strategies
Drift System
Custom drift manager manipulating Rigidbody velocity vectors
Separates forward velocity from lateral velocity components
Dampens forward speed while redirecting side velocity to enable sharp turns
Visual drift feedback implemented through mesh tilt and yaw adjustments
Designed to preserve player speed while enabling precision steering
Particle system and sound effects enhance feedback
Grapple System
Spring-joint based grappling mechanic integrated with the physics controller
Rope wrapping implemented through dynamic rope-point list
Spherecasts detect geometry intersections and insert new rope corner points
Grapple anchors stored in local space and updated to support moving platforms
Rope path recalculated dynamically to maintain stable physics behavior
Rotation and Rolling System
Mesh rotation decoupled from physics body to support ball-like traversal visuals
Character roll calculated from forward velocity to simulate rolling motion
Rotation manager aligns player facing direction with velocity or grapple target
Drift visual feedback applied through controlled yaw offsets
Spline-Based Level Traversal
Level paths structured using spline-based traversal routes
Designed to support momentum-based movement and drifting turns
Allows flexible track shaping and shortcut opportunities
Enables rapid iteration of traversal paths during level design
Technical Challenge: Rope Wrapping and Moving Grapple Anchors
Saparkour: Evolution rebuilt the grappling system from scratch using a fully custom Rigidbody-based
character controller.
While this allowed much more control over the traversal mechanics, it introduced a new challenge:
supporting rope behavior that could both wrap around geometry and remain attached to moving
objects.
In the original Saparkour prototype, the grappling tongue could only connect directly to a target point.
If geometry blocked the line between the player and the grapple anchor, the grapple would stop.
For the new version, I wanted the rope to behave more naturally by wrapping around obstacles and
by remaining attached to moving platforms while the player was grappling —
requiring dynamic rope path updates each frame while keeping the physics interaction stable.
Solution
I implemented a rope system based on a dynamic list of rope points representing the corners of the
rope path between the player and the grapple anchor.
Each frame, the system performs spherecasts along the rope path to detect geometry intersections.
When the rope intersects a surface, a new corner point is inserted into the rope path, allowing the
rope to wrap naturally around the obstacle.
If the player moves in a way that removes the obstruction, the system detects the clear path and
removes the corresponding corner point, effectively "unwrapping" the rope.
To support grappling onto moving platforms, rope anchor points are stored in the local space of the
object they are attached to. Their world position is recalculated on update, ensuring the rope remains
attached correctly even when the platform moves.
Outcome
This system enabled the grappling mechanic to support more complex traversal scenarios, including
swinging around corners and grappling onto moving platforms without breaking the rope simulation.
Beyond improving gameplay feel, the solution reinforced the importance of building traversal systems that
can dynamically adapt to changing world geometry and physics interactions.