Root


Root is a rouge-like action game made with Unreal Engine 5

This project was the first one that I worked on which included an intricate ability system, and as such, I learned a lot about Unreal Engie's Gameplay Ability System (GAS): a C++ framework that Unreal created to help manage player abilities. I worked on the architecture for the abilities, which included implementing GAS, creating abilities, and attatching animations to those abilities.

This project started out as a game for a week-long game jam, and implementing GAS in a week proved difficult and unneccesary for a week's worth of time (not to mention school had just begun), but we decided to continue working on it. The ability system that I implemented has not only the capability to switch out different abilities based on what the player decides, but also has a combo system with the melee, which allows the player to be strategic about their melee attacks, and adds variety to what we expect to be the most used ability in our game.

Game Jam Submission

Other cool features

Due to the nature of the rouge-like genre, we also implemented procedureal generation of the maps found in Root. Our level generation system includes noise based terrain generation as well as smart obstacle placement.

The map generation is particularly important to our game, due to our system of "trading" hexes in our map for either upgrades to the player, or advancement to the next level. Root's core idea is trading space in the map, which makes avoiding enemies and general mobility more difficult, for benefits elsewhere in the game (upgrades/level advancement). With the addition of elemental hexes and hexes that apply status effects, it became even more important to generate hexes to maximize the emphasis on the strategical importance of selling hexes in our game

Smart obstacle placement was neccessary for our game because we allow the player to choose hexes of the map to become innaccessible in the system aforementioned. We also had to make sure there were no sections of the map that were cut off by trees that were created by the player. To ensure this, we used graph theory to evaluate whether or not the creation of a tree (or an inaccesible hex) cause a section of the map to be innaccesible.