top of page
simpleMiner_cover.png
Anchor 1

Abstract

Simple Miner is a procedural world generation tech project, that uses Perlin noise to create a huge persistent, real-time editable Minecraft-like open world.
Simple Miner

Simple Miner

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