Revenant: Through the Veil

-

Revenant: Through the Veil -

About Revenant

Revenant is a Third-person action RPG, using elements from Egyptian mythology for its story-heavy gameplay. This game was built over the span of two college semesters with a team of 12 people.

Format

Team Size: 12
Time frame: 2 Semesters
Engine: Unreal Engine 5
Language: Blueprints and C++

My Roles & Tasks

Technical Designer

    • Player Abilities

    • Enemy AI

    • Quest System

    • Puzzle mechanics and implementations

    • In-game Cutscenes

    • Dialogue/Voice over

    • BGM System

    • SFX implementations

    • Player Animation Implantation

    • Enemy procedural animation

    • Menu functionality

    • HUD implementation

    • Save/Load

    • Difficulty

    • Settings

Player Abilities

Laser Beam

Player aims then shoots a laser beam from their hand

Shock-wave

The player is able to shoot a beam of light that is able to damage enemies and able to bounce of certain reflect-able surfaces. The logic makes use of a raycast which checks for the start and endpoint of the beam to allow for better communication between the VFX and code. The logic also contains an array of enemies its damaged as not to allow the player to melt enemies super fast. the array also contains a list of reflective surfaces its hit so when spawning in a reflected laser it inherits the array from its parent to avoid infinite loops if the reflective surfaces aim at each other.

The player is able to create a shock-wave around them dealing damage and destroying certain structures around the level. We wanted to give the player a way to deal damage to multiple enemies surrounding them, which also doubled as a puzzle tool. And I came up with a shock-wave which dealt AOE damage and destroyed key items in the levels to allow for progression. The logic makes use of a expanding Sphere overlap which deals damage to items caught inside the sphere.

Time Stop

Grapple Hook

The player is able to stop the movement of enemies and platforms using the time stop ability. when using the ability the player spawns an the time stop actor into the world which contains the logic for the ability. on spawn it does a multi box trace for objects, I choose to allow the player to hit multiple objects and use a box trace instead of a line trace as it would allow the player more leeway when attempting to freeze a moving platform or hit an enemy if there are other objects in the way.

The player is able to use a grappling hook during the later levels of the game to traverse around the world. The grapple hook behaves similar to a super jump rather than a traditional grapple hook, as I felt like it would feel better in a 3rd person game like this and would cause less confusion. While aiming the grapple hook the predicted trajectory of the player is calculated and shown to the player based off the arc of where they are aiming at, allowing the player to not jump in blind

Puzzle Interactions

Reflection puzzles

Platforming Puzzles

As spoken about in the previous section, the maze level makes use of reflection puzzles. The player having the push mirrors along a spline or interacting with mirrors to rotate them around. Eventually aiming the mirrors up to allow them to hit a button that finishes the puzzle. This system works very similar to the laser puzzles from portal and portal 2.

The player can encounter platforming puzzles within each level where some of them require the use of certain abilities. Such as the time stop to allow for more time to jump to platforms or larger gaps that require the grapple hook. The moving platforms either move along preset paths or fall after being stood on for some time.

Scale Puzzles

Force Field Puzzles

The player can encounter scale puzzles in the courtroom level. Making the player have to even out the weight on the scales in order to progress. The logic for this makes use of two overlap boxes above the two platforms. which checks whenever an item enters or leaves its overlap. The scale has a total mass counter where the right scale counts as the positive end and the left counts as the negative end. For instance if an object enters the right scale it adds to the scale if it enters the left scale it subtracts from it. depending on whether the scale is negative/positive or neutral determines the output from the scale allowing the puzzle to be completed.

During the field of reeds level the player encounters giant force fields with large symbols on them. Using the shock-wave ability on items that bear those symbols you are able to take down the barrier. Whenever you use the shock-wave it checks the items it affects if it implements the shock-wave interface if it does it activates it and sends a signal to the item and its parent force field that its been destroyed..

Game and UI systems

VN (Visual Novel) dialogue box system

Our team wanted to utilize a mix of VN dialogue boxes and in game Voice over systems to push the narrative forward. I choose to pick up both of these tasks because I had my fair share of UI implementation under my belt as well. For the base of the VN system I created a struct which included Enumerations for Character names, Sprite settings, Text, Audio, and animation settings. Which was then used in a data table where I copied the script into and updated the information needed for each and every line. After creating the base for the system I created a widget blueprint that took in the information of each data table line and updated its relevant variables for a smooth reading of each line. To give the characters more emotion I also created simple animations for each sprite

Voice-over system

As mentioned in the previous section our team wanted to implement voice overs to play during gameplay without stopping the game with a dialogue box pop-up. Which used a more simple version of the VN system having a struct, and data table only having the name of the character speaking, the text that was spoken, a delay, and the audio file itself. When activated the VO system tells the game instance to start playing the voice over in 2D space and stopping at the set stop point that is given to the system.

Player HUD

As any game needs we needed a HUD for the player to find their important stats. I was tasked with creating the systems that updated the HUD’s info. The health and stamina bar are fairly simple keeping track of the related stat and running them through a FInterp to node to give them a smooth feel. As for the ability markers, I wanted to do something more fun instead of a simple change of a sprite. So I made a system that keeps the Vector 2D location of each icon on the widget and swap them around based on which ability is currently selected to be used.

Extra polish

Procedural animations

Proving complicated to hand animate I suggested to use procedural animation for our 4 legged enemy, which allows for more fluid and creepy movement. Using a combination of Control rigs for its legs and eye and an alternating ray-cast for its feet position I was able to create a optimized procedural walk cycle for our creepy crawly, in addition to its eye tracking the player makes this enemy a memorable one.

Situational animations

Healing fires are scattered around the levels in Revenant, but sometimes a player would get stuck in a healing animation when being chased by enemies. Which is why I implemented logic that checks if their are enemies near the player and players a shorter animation if there are. I also included a way to exit any of the animations early if the player still thinks its too long.