Climbing System
Overview
This prototype was built in the Flex framework Flixel. I wanted to create a climbing system in a 2D side-scrolling environment that is natural to use, feels good to use, and encourages the feeling of direct control of a very agile and skilled character.
While the implemented mechanics are quite simple, the underlying code is much more in-depth. The vast majority of the time spent working on the project was invested in establishing a code base that could be used in the future for other prototypes such as this one and include multi-sprite entities, multi-sprite animations, and state-based behaviors.
Play The Prototype
Controls: Arrow Keys to move, A to jump, S to grab.
Background
The context for the system is to create an climbing system that would exist in a 2D side scrolling game that operates in much the same capacity as Assassin's Creed's climbing system, albeit with a few exceptions. The first is speed. Ezio can scale buildings swiftly, but there are significant pauses between separate motions that don't allow for a completely fluid experience. This climbing system will allow the player to move swiftly through scenarios with limited downtime between motions.
The second point by which this system differs is in direct control. In Assassin's Creed's climbing and free-running systems, the player is simply asked to press a direction on an analogue stick and the game handles how Ezio moves from place to place. This reduces the connection between the player and the character. One of the aspects of the 3D platforming game Sly Cooper and the Thievious Raccoonus that I found particularly compelling was that whenever there was a point that could be climbed, perched, sidled, or swung on, pressing the "circle" button would instantly attach the player to that object, creating a sense of direct control.
Iteration
The first implementation of the system had a "grab" button that would snap the avatar to the nearest climbing object when pressed. This worked well, and created a rhythm of "jump-grab, jump-grab" while moving about. While experimenting with the control layer, I changed it so that the player had to hold down the climbing button in order to stay attached to climbing objects, and immediately felt more connected to the avatar and its movements. It changed from feeling as though the player was directing the avatar to grab, to feeling as though the player was actively the entity holding onto the wall.
Mechanics
The basic interactions with the climbing system involve Jumping and Grabbing. The player has a Jump button and a Grab button. The Jump button makes the avatar leap into the air, while the Grab button makes the avatar attach to any climbing object that is near. Other movements are handled through the cursor keys.
If the player doesn't press the grab button, the avatar will not grab onto the point node.
Jumps can be made to the left and right, upwards, and also on the diagonals. The most distance out of a jump will be gained by holding both "Up" and either "Left" or "Right."
By pressing the jump button, the player can transition from climbing object to climbing object. It is usually most comfortable to simply hold the "Grab" button while jumping.
There are three core objects at play within the climbing system: nodes, horizontal surfaces, and vertical surfaces. Nodes are simply points that the avatar can attach to. From those points, the player can jump off or drop down, but nothing else. Horizontal and vertical surfaces allow the avatar to move along them smoothly while also letting him leap off in any direction at any time.
Moving on horizontal and vertical climbing surfaces.