Adventure Game Character Controller
A game-ready character controller designed for casual, exploration-based adventure games.
Roles (Solo Project): Game Design, Programming
Tools: Unity
Timeline: 4 Months
Gameplay Video
My Work on the project
Character Controller Design: Concepted, prototyped, and implemented all character actions.
Programming: Custom scripted all character functions in C# with a focus on game feel and polish.
Full Implementation of Animations: Used existing animations from Mixamo to fully animate the character with animation state control and blend trees.
Design Challenges
Ledge Detection
The climbing system was full of important design decisions to increase usability and game feel, but the hardest one to design was how to handle jumping between ledges. I needed to design it in both a game design and a technical aspect, so I worked to find an effective solution for both.
The user experience I wanted was to be able to move the joystick towards any possible ledge and be able to jump to it. My programming solution for this checks for the nearest point to each ledge within the detection hitbox, and finds the angle to it. It then uses this information to map out angle ranges for the joystick to be able to jump to each ledge using midpoints and a max angle offset of 45 degrees to ensure the player is always able to go where they want.
The character then jumps to the new ledge through code and uses an animation blend to create an animation for every possible jump angle.
Inverse Kinematics
Getting inverse kinematics to work properly and meet the design goals I had was a big focus of this project.
This implementation results in:
Super adaptive, procedural animation that flows great with the rest of the controller.
Makes the player feel like they have more presence in the world.
Improved game feel.
Take Aways
Experienced a full production on a shippable game feature.
Learned how to use inverse kinematics to enhance player immersion and interaction with the world.
Explored animation states and blend trees to create convincing, adaptive animation.