Motion Graph Ladders
Overview
Ladders have been an ubiquitous part of the first person shooter genre, with a huge range of implementations. Many FPS ladders are hacky workarounds for what is a surprisingly complex problem, and a poor implementation can often stand out.
NeoFPS attempts to set a standard for first person shooter ladders. They come in 2 flavours: contact ladders and interactive ladders, but both share the same underlying system.
Contact Ladders
Contact ladders are climbed automatically as soon as the player character touches them. They often allow the player to climb sideways across the ladder, dropping off if they pass the edge. They also allow the player to turn a full 360 degrees while on the ladder without any look constraints.
Contact ladders are often used in fast paced shooters where flow is much more important than realism.
For more information see the ContactLadder reference.
Interactive Ladders
Interactive ladders require the player to look at and use the ladder and attach to it. Once attached, the character is constrained to moving up and down the ladder until they reach the ends, let go (by interacting again) or jump off.
Interactive ladders are more restrictive than contact ladders, keeping the character fixed to one axis of movement. They can also constrain the camera, blocking the camera from turning too far away from the ladder if at all. Because of these features they are often used in more realistic games or in games where pacing needs to be more controlled.
For more information see the InteractiveLadder reference.
Ladder Implementation
In NeoFPS ladders have 2 elements. The ladder surface itself, and a wrap around at the top of the ladder.

These sections are inflated from the ladder geometry by the character's radius. The system then moves a point at the bottom center of the character collider around in this "ladder space".

This system has 2 benefits: Firstly, it is easy to stick the character to the shape, making climbing consistent both part way up the ladder and also at the top of the ladder where some implementations can have difficulty registering contact. Secondly, the look direction can be judged in ladder space instead of world space.
By calculating look direction in ladder space, it means that a character at the top of a ladder and looking forwards is actually looking up the ladder. This makes changing climb direction based on aim much more intuitive than if the character had to look straight up in this situation. Another example is if the player approaches a ladder from the top. Walking forwards while looking at the edge will walk down the ladder. Looking away from the edge and slightly down will still be considered looking up the ladder in ladder space, so walking backwards will climb down the ladder as expected.