Indie Dev Prototype
Development has begun on my indie game for the Unit 2 submission. I am making a 3D puzzle platformer that has an emphasis on character movement and mechanics. It features mechanics like teleporting, climbing, and launching across platforms. During the implementation of one mechanic specifically, Climbing, I found that I was very unhappy with how it looked and felt.
The main reason being that I wanted my character to be able to climb at different angles, including upside down. I kept running into issue of keeping the Character on the wall as they moved. Their hands and feet were always floating off of the wall. I had begun to look into IK retargeting for the player walking on uneven surfaces initially and wanted to extend the implementation to the hands and feet for climbing. So in theory, a similar effect would take place for walking as it would for climbing. Instead of the player’s one foot floating over a sloped surface while standing, it would snap to the ground. For climbing, the hands and feet would snap to the wall as they were climbing. This would snap the player to the wall no matter the angle they were climbing at.
I started this implementation by researching Inverse Kinematics more generally to gain an understanding of how I could achieve something for my specific use case. IK is an incredibly dense and complicated subject in kinematic (study of motion) mathematics. Reduced down to a simpler function, it is a way to simulate precise movement along a series of joints. In robotics, this could be a series of many joint angles that move together to help the end-effector (the robot hand, etc.) reach it’s ultimate goal. Inverse Kinematics is a way of determining each position and angle in space, for the corresponding joints connecting to the end-effector, to move it in the correct position.

In humans, or playable game characters, the arms and legs are a series of joints with end-effectors being hands and feet respectively. Unlike some robotics, human skeletal joints have constraints with how we can manipulate our joints around specific axes and angles. With those constraints, the principles of IK can manipulate the series of joints of an arm, in a “realistic” manner to reach an end goal.
Luckily, Unreal Engine has some tools in place to help achieve this. Such as building an IK Rig, which allows IK retargeting of specific bones of a character’s skeleton to be mapped. Constraints can be customized accordingly with this map. This is what I did.

With goal positions in place (the Base of the movement deriving from its initial starting points all of the way to the end-effectors) in place, I can now manipulate the skeleton to different positions with the rest of the joints following in a more natural way.
I manipulated the skeleton of the player by doing line traces from the character’s hands and feet to the climb wall and then reposition the hands on the line trace collision points. I positioned each end-effector with the Hips following suit as the center of gravity of the body follows as the rest of the skeleton is manipulated. The result looked something like this…


The results are definitely not perfect as I felt like I could have spent a few more months even getting this to work as I wanted. In this Prototype I felt like I scratched the surface of how IK Retargeting can make a massive difference to the feel of a game. Something I want to explore deeper in the future.
Reference:
Inverse kinematics (IK) algorithm design with MATLAB and Simulink. (MathWorks, n.d.) https://www.mathworks.com/discovery/inverse-kinematics.html