How we created our climber - Part 1

New Heights: Realistic Climbing and Bouldering

The ultimate climbing and bouldering simulation game. Explore and climb 250 real world routes, create your own routes and compete against your friends from the safety of your computer.

[img]{STEAM_CLAN_IMAGE}/43535104/84a0118447be4363bfd9f0d14dd211d7fa27759d.jpg[/img] In this series of articles I’ll tell you all about how we created our climbing system for New Heights. Not only will I explain how it was implemented, but also what steps we took and what decisions we made along the way to get to where we are today. Like many games before us, New Heights started out as a simple prototype. The goal was to create a game with a realistic climbing system to simulate the climbing and bouldering we do in real life. But then meant to be implemented in a more story-driven adventure game! The first version was based on animations and Inverse Kinematics. [img]{STEAM_CLAN_IMAGE}/43535104/efec715ee1013451673837aee83d212bd3e9d970.gif[/img] [i]Our first climbing game prototype[/i] We picked some nice walking and climbing animations and we used Inverse Kinematics (specifically: Final IK) to aim the limbs where we wanted them. For the first version this worked well enough. While you were moving along the wall we played a nice “shimmying” animation which we blended based on the direction you were moving, we kept the arms where we wanted them with IK and we simply moved the entire body up/down/left/right based on the input of the player. [img]{STEAM_CLAN_IMAGE}/43535104/64085aba663a9b1e43e034dc3699c65987a294cf.gif[/img] [i]You can see the hands away from their holds while the character is moving around[/i] But there were some awkward quirks to this system. Most prominently: it was pretty hard to keep the hands and feet locked at the position they were grabbing. After all, IK simply aims a limb towards a point but doesn’t impose any restrictions on our character movement at all. We had to program these restrictions ourselves by introducing a maximum distance the player could move from each of the limbs they were holding. For example: we didn’t allow the player to move further from a hand that was grabbing a hold than its arm length. But what if the player is rotated slightly? What if the limb is restricted in some other way? What if the limb grabs something around a corner? The system was beginning to show its flaws… Yet, we pressed on. We improved it as much as we could, we removed some of the climbing animations to prevent the character from wriggling on the wall too much and improved the movement limitations. We implemented some rotation limits and tried to make the climbing look as realistic as possible. For the first prototype this worked fine, the character felt snappy and responsive, it looked decent enough and people could test our climbing mechanics. All of which gave us the confidence to continue the project and to build it into a fully-fledged climbing simulator. But we kept having the feeling that the climbing just didn’t look good enough. In certain situations the character felt like it was floating instead of climbing. The character lacked “weight” and the climber always just stuck to the wall without ever losing its balance or sliding down. Everything felt too static and predictable, it lacked the suspense of real climbing. [img]{STEAM_CLAN_IMAGE}/43535104/cb2891fbee897f7d1961f28348a3595d15e1a199.gif[/img] [i]You can make the character float[/i] The more we discussed it and the more we tried to implement changes to improve the feeling of the climbing mechanics the more the limitations of our current animated-based implementation started to show. In order to improve it we were trying to simulate the physics involved in climbing itself: how your character would “hang” on your limbs, how your rotation affected your reach, how your character would fall over if you were out of balance and probably a countless number of other ways real-life physics would affect your climbing experience. We realized we were fighting the inevitable: in order to make it feel truly realistic, we couldn’t just simulate these things ourselves. We needed to introduce actual physics to our character and while it required us to rework the entire climbing system we built thus far, there was no other way around it: we needed to make our climber entirely physics-based. We needed to use active ragdolls. In the next article we take our first steps towards making our active ragdoll climber. We’ll look at the basic setup, how we aim its limbs and how we can combine the ragdoll with character animations.