Let's discuss what I have built so far. We'll start with the Cables.
The current Cable Blueprint is very representational, using simple black cylinders that indicate the relative position of the Player to the current anchor points. All of the math to move the Player through the world uses those two anchor point vectors to determine the direction of the forces applied. All of the invisible, all-powerful math.
The cables currently have two main functions:
1) Keep track of the 'Anchored' state of each cable
2) Prevent the Player from moving farther away from each anchor point than the length of the relevant cable
When the player is anchored and attempts to leave the radius of the cable's reach, the velocity they are using to escape is negated and re-applied, preventing any movement outside of the cable radius.
However, this acts as a hard stop, and I'd like to eventually add in a little bounce to the cables when the player reaches their length. The velocity that is re-applied is also used to add Centripetal Force to the Player as they swing around the anchor.
Later on, I'd really like to add basic collision functionality to the cables to let them "catch" on basic geometry, like a real rope. That way Players can use the environment to tighten their swings, like in Spider Man 2.
Man, that was an awesome game.
When the player hits a wall rotated greater than 15 degrees from the standard world up vector, they rotate towards it and re-apply their velocity perpendicular to the wall. It isn't terribly complicated, but it really helps keep players moving at high speeds through heavily cluttered areas.
It's simple, don't worry about it. The Player just runs on walls, go back to sleep.
A huge focus of this system was to let the Player move very quickly, but without sacrificing accuracy. A major element of this was the control scheme, as Players needed a lot of control using only a few buttons. This system also always prioritizes movement towards the camera look direction, keeping the player moving fluidly towards the reticle.
Right now, all controls are on Mouse and Keyboard. Gamepad controls will come later, after the standard human reaction time evolves to less than 0.3 seconds.
Towards this, I have mapped the controls to Left and Right mouse button to fire the Left and Right cables respectively. Cables that are anchored automatically pull the player towards them. When the player lets the buttons go, they retract.
The player can stop all cable reeling by holding the cable lock button (currently mapped to the F key). This lets them swing, like in Spider Man 2.
Jumping is fairly standard, using the Space Bar. You can also jump while wall running, and its called a wall jump. Kind of like in Spider Man 2.
My early playtesters across the board desired very different movement speeds to control the character comfortably, so to accommodate this I implemented a simple speed shift. Similar to shifting gears in a car, changing your speed levels updates both the Player's max velocity and the force the cables apply. Currently the shifting action uses Q and E to shift down and up, respectively (between low, med, and high). These speed states move the player between a max velocity of 75 m/s and 125 m/s.
At low speed, you're like Armin. At high speed, you're closer to Levi. If you haven't seen the Anime and don't get that reference, go watch it.
Whatever you're doing is less important.
...Unless you're playing Spider Man 2.