Rubu Tribe: Pathfinding

Pathfinding was quite a challenge for Rubu Tribe. The player character was Muku, the leader of a tribe of Rubu. The rest of the Rubu had to be able to follow Muku anywhere, even if they had to jump or climb to get there. The world also had dynamic objects that affected the pathfinding, like trees that could be cut down to make bridges. Additionally, the levels were very large, so an A* search over a weighted graph representing the entire level was too slow. The levels had to be broken up into smaller regions so that heirarchical pathfinding could be implemented. The level designers had enough work on their plates without having to worry about pathfinding waypoints, so all of the pathfinding data for a level had to be generated programmatically when the level was exported. Taking all these considerations into account, I fully implemented both the generation of pathfinding data in the level exporter and the in-game pathfinding system.


Rubu using the dynamic pathfinding system to jump over ledges.

Rubu using the dynamic pathfinding to climb up and down a cliff.

Rubu Tribe: Bungee Worm

Rubu Tribe was the story of an epic journey that the Rubu make on the back of a huge creature called the Uut. They live in a treehouse-like structure called the Hive, which they've built on the Uut's back. To get up to the Hive, the player stands underneath it and presses the triangle button. The bungee worm swings down, grabs the player character, and tosses him onto the Hive. To implement the bungee worm, I had to work with the controls system to detect that the player was standing underneath the hive pressing triangle, sequence the animations, programmatically control one of the bungee worm's joints so that it would look natural grabbing the player character in any spot within a 15 foot radius, and work with the physics system to make sure that the player was always thrown onto the Hive. I worked closely with the animator to make sure that the animations sequenced correctly, that the player character lined up with the bungee worm, and that the programmatically controlled joint worked smoothly with the animation.


The bungee worm in action.

Rubu Tribe: Rubu AI

Much of Rubu Tribe's gameplay revolved around the player assigning different tasks to the Rubu, using the skills of the three different types of Rubu to solve puzzles. I used a squad system to delegate and keep track of the tasks the player assigned to the Rubu, and wrote complex logic and animation sequencing code in C++ to implement the actual tasks. For example, the warrior Rubu could attack enemy NPCs and destroy obstacles in the path, the worker Rubu could cut down trees and pick berries, and the scholar Rubu could study objects to give the player more information about them. The video shows an example of the player commanding a worker Rubu to cut down a tree.


A Rubu cutting down a Knuckle Tree.

Rubu Tribe: Enemy AI

I implemented all of the low-level AI systems for Rubu Tribe, as well as the behaviors of many of the characters. The video shows player fighting the Chikkit enemy.


Chikkits fighting the player.