Roots of Life

Roots of Life
Roots of Life is a video game I developed as both my bachelor’s thesis and the final assignment of my Erasmus attendance. Due to this particular situation, I had to collaborate with other students of Hanzehogeschool in order to graduate from the Gamelab course.
This game was designed to be played by children, with support from their parents. It was intended to be used as a tool to increase bonding between family members. By making use of a standalone smartphone app, parents were able to keep track of the progress of the game, and to help and reward their children during their adventure.
I am proud of the 3rd person character and camera controllers this title features. Both were built from scratch as I wanted to discuss their implementation in my thesis. In order to showcase the functionality of these controllers, I set up a testing scene just to record some footage separated from the final assets of the project.
The Player Character
Given the plans my colleagues and I had for this title, and considering the target audience, I focused on implementing a character that had movement mechanics commonly seen in 3D platforming video games.
In the end, this character controller featured:
- Support for analog movement from gamepads, as well as digital interpolated inputs from keybooards.
- A basic animation blending implementation, where the model used was capable of interpolating between various walking cycles.
- A jump mechanic, using coyote-time and input buffer to be accessible for unexperienced players.
- Seamless step and stairs climbing, preventing the players from getting stuck into the seams of platforms.
- Slope walking where the movement is adjusted to accomodate the ground normal direction.
- Sliding through steep ramps, creating one-way walls.
- Movement redirection when walking against walls, preventing players from losing momentum when walking nearby obstacles.
- Configurable through inspector parameters.
The Camera Movement
Regarding the camera for Roots of Life, I didn’t want players to feel like it was getting in the way of gameplay, so I developed a controller that could work its own most of the time, making sure it pointed to what players wanted to see.
In short, this camera controller was capable of:
- Smoothly follow the player along the level.
- Handling both mouse and gamepad inputs.
- Freely handle camera rotations without clipping through walls or the ground.
- Automatically rotate when the player moved, so it kept framed what was ahead.
- Locking on enemies and other points of interest.
- Transitioning between free or fixed camera modes, turning the gameplay style from 3D to a 2.5D platformer.
- Easy configuration through inspector parameters.