top of page
3840x2160.png
Anchor 1

Abstract

IMVI (Gravity Grip) is a third-person open-world exploration game.
In this game, players use their character's power to throw the gravity anchor to control the flying direction and break barriers.
On their journey, players will find the answer to this magical world.
 
  • Game Genre: Third-person Open-world Exploration 
  • Role:               Gameplay Designer and Animation & Gameplay Programmer
  • ​Team Size:      22 People
  • Language:      Blueprint and C++
  • Engine:           Unreal Engine 5
AnimationBlueprintEventGraph.png

Animation Blueprint-EventGraph

One of the most significant challenges I encountered was ensuring seamless communication between the Animation Blueprint and the Character Blueprint. This required frequent collaboration with both gameplay and physics programmers to synchronize animation behavior with game mechanics and physics simulations.​I prioritized ensuring that the character class was valid before the animation blueprint was initialized to deal with any operations. I then cast and stored frequently used character references to optimize performance and streamline access for later update.
Fly Demo

Fly Demo

AnimGraph.png

Animation Graph

I utilized the Animation Graph to manage multiple state machines and store various poses. Those setups allowed me to blend upper-body animations with lower-body animations dynamically in runtime, particularly during actions such as controlling gravity anchors or moving. Additionally, I leveraged the Animation Graph to retrieve Control Rig results and blend all poses cohesively to generate the final output pose.
Locomotion_Power_Acrobatics.png

Animation State Machine

I designed and implemented three distinct animation state machines to manage a character's animations across various gameplay states: Locomotion, Ability Control, and Acrobatics.

  • Locomotion handles grounded movement and interactive animations, such as when the player engages with environmental elements like shrines.

  • Ability Control manages animations triggered by the player's input when the player uses the gravity-controlling ability.

  • Acrobatics governs the character's pose during mid-air actions, including floating, spinning, being pulled by external forces, and handling both light and heavy landings.

By separating animation logic into dedicated state machines, I maintain clean and modular control over each category of movement, adapting seamlessly to different player inputs and interaction conditions. This structure also lays the foundation for advanced animation blending, allowing smooth transitions and layered poses during complex interactions.

AnimationNotification.png

Animation Notify

Animation Notifies were extensively utilized as an effective mechanism for updating the state of the Animation Blueprint. They allowed for precise event handling, such as signaling when an action was nearing completion to trigger specific functions, synchronizing hand movements with power release actions, or breaking cutscenes. I also used Animation Notifies to play synchronized sound effects, such as footsteps, and to briefly freeze player movement—such as during a heavy landing—before allowing the character to continue moving.
Control Rig

Control Rig

controlRig_3.png

ControlRig - IK Animation

The complex environment setup and the character’s varied movement styles necessitated continuous adjustments to leg movement in each frame to generate procedural animations that mimic natural movement on uneven terrain. This process involved three key steps: tracing foot positions on the ground, adjusting pelvis height based on the positions of both feet, and adjusting leg poses using foot locations and pole vectors to control knee direction. This approach ensured smooth, realistic character movement even in challenging terrain conditions.
TraceFoot.png

Foot Trace

Although the Animation Graph may appear complex, the underlying concept is straightforward. A sphere trace is used to detect the ground beneath each foot, and the foot is then rotated to align with the ground’s normal. The final step involves using accumulated lerp to gradually transition the foot into position, simulating the natural adjustment people make to stabilize their footing. This gradual transformation prevents all adjustments from happening in a single frame, resulting in smoother and more realistic foot placement.
adjustPelvis.png

AdjustCharacterpelvis

Another crucial step in generating procedural animation is adjusting the character's pelvis to allow the legs enough space to stretch or crawl.​To achieve this, we first retrieve and store the initial pelvis height. Then, using the minimum foot control height, we update the pelvis joint's transform information for each frame as the character makes contact with the ground. This ensures the pelvis is positioned correctly, enabling realistic leg movement and maintaining proper body posture as the character performs different actions.
HighresScreenshot00005
20250219165506_1
controlRigTesting
20250219170642_1
20250219165231_1
HighresScreenshot00004
bottom of page