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.
|