CURSED LANDS - PART 1
CURSED LANDS PART 1
CURSED LANDS - PART 1
Locomotion & Traversal
Locomotion & Traversal
PURPOSE
PURPOSE
PURPOSE
A small Open-World RPG portfolio piece showcasing my Gameplay Engineering skills using the latest Frameworks (GAS, Gameplay Camera System, Motion Warping, etc.)
Part 1 introduces Locomotion and Parkour mechanics - movement and traversal
serving as the foundation to the upcoming parts of the project,
while I'm learning and exploring the 3Cs area
A small Open-World RPG portfolio piece showcasing my Gameplay Engineering skills using the latest Frameworks (GAS, Gameplay Camera System, Motion Warping, etc.)
Part 1 introduces Locomotion and Parkour mechanics - movement and traversal
serving as the foundation to the upcoming parts of the project,
while I'm learning and exploring the 3Cs area
A small Open-World RPG portfolio piece showcasing my Gameplay Engineering skills using the latest Frameworks (GAS, Gameplay Camera System, Motion Warping, etc.)
Part 1 introduces Locomotion and Parkour mechanics - movement and traversal
serving as the foundation to the upcoming parts of the project,
while I'm learning and exploring the 3Cs area
tech
tech
tech
The project uses Unreal Engine 5 with aim to leverage the latest
Frameworks and Plugins Unreal Engine has to give, such as:
The project uses Unreal Engine 5 with aim to leverage the latest Frameworks and Plugins Unreal Engine has to give, such as:
Animation
Layering
Animation Layering
Animation
Warping
Animation Warping
Motion
Warping
Motion Warping
ChooserTables
ChooserTables
Gameplay Camera
System (Experimental)
Gameplay Camera
System (Experimental)
Gameplay Ability
System
Gameplay Ability System
StateTrees
StateTrees
ADVANCED LOCOMOTION SYSTEM
The Locomotion and Animations take inspiration from ALSv5 and LyraGame, aiming to provide a smoother, AAA-like experience.
To achieve that I've used Animation Layering with the use of Animation Layer Interfaces and a separation to Base/Layers Animation Blueprints.
The use of Animation Layering is the groundwork for the upcoming Combat part of the project, where different animations for Unequipped and Equipped with different weapon types will be used.
The project also leverages animation Plugins such as Animation Warping, Animation Locomotion Library, and Motion Warping to provide better Animations.
All Animation Sequences and Montages are chosen using ChooserTables.
โ The project doesn't use Motion Matching, because this is a personal project that most likely won't have a big data set of Animations to choose from.
ADVANCED LOCOMOTION SYSTEM
The Locomotion and Animations take inspiration from ALSv5 and LyraGame, aiming to provide a smoother, AAA-like experience.
To achieve that I've used Animation Layering with the use of Animation Layer Interfaces and a separation to Base/Layers Animation Blueprints.
The use of Animation Layering is the groundwork for the upcoming Combat part of the project, where different animations for Unequipped and Equipped with different weapon types will be used.
The project also leverages animation Plugins such as Animation Warping, Animation Locomotion Library, and Motion Warping to provide better Animations.
All Animation Sequences and Montages are chosen using ChooserTables.
โ The project doesn't use Motion Matching, because this is a personal project that most likely won't have a big data set of Animations to choose from.
ADVANCED LOCOMOTION SYSTEM
The Locomotion and Animations take inspiration from ALSv5 and LyraGame, aiming to provide a smoother, AAA-like experience.
To achieve that I've used Animation Layering with the use of Animation Layer Interfaces and a separation to Base/Layers Animation Blueprints.
The use of Animation Layering is the groundwork for the upcoming Combat part of the project, where different animations for Unequipped and Equipped with different weapon types will be used.
The project also leverages animation Plugins such as Animation Warping, Animation Locomotion Library, and Motion Warping to provide better Animations.
All Animation Sequences and Montages are chosen using ChooserTables.
The project doesn't use Motion Matching, because this is a personal project that most likely won't have a big data set of Animations to choose from.
EXTENDED CHARACTER MOVEMENT COMPONENT
To support different movement mechanics, such as Walking/Crouching/Sprinting and different Falling logic/animations, I've created a custom CMC (Character Movement Component).
The custom CMC stores and handles two states and the transitioning between them:
- Stance (Standing/Crouching)
- Gait (Walking/Jogging/Sprinting)
This custom CMC provides multiple pros:
- Helping keep the Character class lean and cleaner
- Providing a good separation of logic
- Opportunity for extension
๐ Going forward:
I plan to refactor the CMC so that it can be more extended and easily integrated into other projects
and extract it into a dedicated Plugin in my personal Plugins Repository.
EXTENDED CHARACTER MOVEMENT COMPONENT
To support different movement mechanics, such as Walking/Crouching/Sprinting and different Falling logic/animations, I've created a custom CMC (Character Movement Component).
The custom CMC stores and handles two states and the transitioning between them:
- Stance (Standing/Crouching)
- Gait (Walking/Jogging/Sprinting)
This custom CMC provides multiple pros:
- Helping keep the Character class lean and cleaner
- Providing a good separation of logic
- Opportunity for extension
๐ Going forward:
I plan to refactor the CMC so that it can be more extended and easily integrated into other projects
and extract it into a dedicated Plugin in my personal Plugins Repository.
EXTENDED CHARACTER MOVEMENT COMPONENT
To support different movement mechanics, such as Walking/Crouching/Sprinting and different Falling logic/animations, I've created a custom CMC (Character Movement Component).
The custom CMC stores and handles two states and the transitioning between them:
- Stance (Standing/Crouching)
- Gait (Walking/Jogging/Sprinting)
This custom CMC provides multiple pros:
- Helping keep the Character class lean and cleaner
- Providing a good separation of logic
- Opportunity for extension
๐ Going forward:
I plan to refactor the CMC so that it can be more extended and easily integrated into other projects
and extract it into a dedicated Plugin in my personal Plugins Repository.
CHARACTER TRAVERSAL COMPONENT
To support basic Parkour mechanics, such as Traversal and Sliding, I've created the Character Traversal Component.
This Component (like the custom CMC) provides separation of logic keeping the Character class lean and clean while also providing the possibility of reuse in future projects.
The Traversal takes inspiration and reference from Epic Games's GASP (Game Animation Sample).
๐ Going forward:
I plan to refactor the Component so that it can be extended and easily integrated into other projects (who of course will depend on the same dependencies) and extract it into a dedicated Plugin in my personal Plugin Repository.
CHARACTER TRAVERSAL COMPONENT
To support basic Parkour mechanics, such as Traversal and Sliding, I've created the Character Traversal Component.
This Component (like the custom CMC) provides separation of logic keeping the Character class lean and clean while also providing the possibility of reuse in future projects.
The Traversal takes inspiration and reference from Epic Games's GASP (Game Animation Sample).
๐ Going forward:
I plan to refactor the Component so that it can be extended and easily integrated into other projects (who of course will depend on the same dependencies) and extract it into a dedicated Plugin in my personal Plugin Repository.
CHARACTER TRAVERSAL COMPONENT
To support basic Parkour mechanics, such as Traversal and Sliding, I've created the Character Traversal Component.
This Component (like the custom CMC) provides separation of logic keeping the Character class lean and clean while also providing the possibility of reuse in future projects. The Traversal takes inspiration and reference from Epic Games's GASP (Game Animation Sample).
๐ Going forward:
I plan to refactor the Component so that it can be extended and easily integrated into other projects (who of course will depend on the same dependencies) and extract it into a dedicated Plugin in my personal Plugin Repository.
MODERN FRAMEWORKS
(GAS, GAMEPLAY CAMERA SYSTEM, STATETREES)
MODERN FRAMEWORKS (GAS, GAMEPLAY CAMERA SYSTEM, STATETREES)
The project aims to use the most modern and new Frameworks provided by Epic Games.
Such as:
GAS (Gameplay Ability System)
Used for the character's basic Health and Stamina Attributes.
Gameplay Camera System
Used in favor of the old Camera and SpringArm Components, for few reasons:It's the newest (experimental) Framework for Camera usage, so I'm trying to learn and expertise in it as early as possible.
It provides benefits for smooth Camera transitions between different Stances and Gaits.
It provides a more data-oriented use case and doesn't require the use of both a Camera and a SpringArm Components.
StateTrees
Used to provide the Player Character with extra State Machine oriented functionality, such as transition from Alive to Dead state, triggering Ragdoll and Collision change Tasks.
๐ Going forward:
I plan to use those Frameworks in the Combat system, from using GAS for Character/Enemy Attributes and Abilities to using StateTrees for further Character logic and Enemy AI behavior.
MODERN FRAMEWORKS (GAS, GAMEPLAY CAMERA SYSTEM, STATETREES)
The project aims to use the most modern and new Frameworks provided by Epic Games.
Such as:
GAS (Gameplay Ability System)
Used for the character's basic Health and Stamina Attributes.
Gameplay Camera System
Used in favor of the old Camera and SpringArm Components, for few reasons:It's the newest (experimental) Framework for Camera usage, so I'm trying to learn and expertise in it as early as possible.
It provides benefits for smooth Camera transitions between different Stances and Gaits.
It provides a more data-oriented use case and doesn't require the use of both a Camera and a SpringArm Components.
StateTrees
Used to provide the Player Character with extra State Machine oriented functionality, such as transition from Alive to Dead state, triggering Ragdoll and Collision change Tasks.
๐ Going forward:
I plan to use those Frameworks in the Combat system, from using GAS for Character/Enemy Attributes and Abilities to using StateTrees for further Character logic and Enemy AI behavior.
MODERN FRAMEWORKS
(GAS, GAMEPLAY CAMERA SYSTEM, STATETREES)
The project aims to use the most modern and new Frameworks provided by Epic Games.
Such as:
GAS (Gameplay Ability System)
Used for the character's basic Health and Stamina Attributes.
Gameplay Camera System
Used in favor of the old Camera and SpringArm Components, for few reasons:It's the newest (experimental) Framework for Camera usage, so I'm trying to learn and expertise in it as early as possible.
It provides benefits for smooth Camera transitions between different Stances and Gaits.
It provides a more data-oriented use case and doesn't require the use of both a Camera and a SpringArm Components.
StateTrees
Used to provide the Player Character with extra State Machine oriented functionality, such as transition from Alive to Dead state, triggering Ragdoll and Collision change Tasks.
๐ Going forward:
I plan to use those Frameworks in the Combat system, from using GAS for Character/Enemy Attributes and Abilities to using StateTrees for further Character logic and Enemy AI behavior.
TESTING & DEBUGGING
To test the mechanics I've worked on, I've created a Gym level for each system I've worked on (currently Locomotion/Traversal).
Each Gym includes playgrounds for testing each mechanic and its edge cases, for example Sliding into Falling or Sliding into Crouching.
To properly debug and troubleshoot issues during development, I've added Console Variables that toggle debugging information and traces on screen.
Such examples are the:
CLShowDebug.PlayerCharacterAnimInstance to show all the animation data information and visual info like line traces for Velocity and Acceleration vectors and stop distance predictions.
CLShowDebug.CharacterTraversal to show the visual info of hit result traces for traversal actions and traversable objects.
๐ Going Forward:
I'm planning on designing and implementing a more generic tracing solution that will allow me to easily set up traces for new systems, with a better visual system to see those traces (somewhat visually similar to ShowDebug AbilitySystem)
TESTING & DEBUGGING
To test the mechanics I've worked on, I've created a Gym level for each system I've worked on (currently Locomotion/Traversal).
Each Gym includes playgrounds for testing each mechanic and its edge cases, for example Sliding into Falling or Sliding into Crouching.
To properly debug and troubleshoot issues during development, I've added Console Variables that toggle debugging information and traces on screen.
Such examples are the:
CLShowDebug.PlayerCharacterAnimInstance to show all the animation data information and visual info like line traces for Velocity and Acceleration vectors and stop distance predictions.
CLShowDebug.CharacterTraversal to show the visual info of hit result traces for traversal actions and traversable objects.
๐ Going Forward:
I'm planning on designing and implementing a more generic tracing solution that will allow me to easily set up traces for new systems, with a better visual system to see those traces (somewhat visually similar to ShowDebug AbilitySystem)
TESTING & DEBUGGING
To test the mechanics I've worked on, I've created a Gym level for each system I've worked on (currently Locomotion/Traversal).
Each Gym includes playgrounds for testing each mechanic and its edge cases, for example Sliding into Falling or Sliding into Crouching.
To properly debug and troubleshoot issues during development, I've added Console Variables that toggle debugging information and traces on screen.
Such examples are the:
CLShowDebug.PlayerCharacterAnimInstance to show all the animation data information and visual info like line traces for Velocity and Acceleration vectors and stop distance predictions.
CLShowDebug.CharacterTraversal to show the visual info of hit result traces for traversal actions and traversable objects.
๐ Going Forward:
I'm planning on designing and implementing a more generic tracing solution that will allow me to easily set up traces for new systems, with a better visual system to see those traces (somewhat visually similar to ShowDebug AbilitySystem)
PROJECT MANAGEMENT
PROJECT MANAGEMENT
The task and time management of this project was done using Jira, where I've created tasks not only for features and bug fixes, but for places that require refactoring and TODOs that are added to the project during development.
I would then prioritize the tasks bi-monthly into a 2-weeks Sprint, properly prioritizing core work and improvements like refactoring and TODO cleanups.
The Version Control was done using Git and GitHub, as the project mainly uses simple assets and code, and doesn't require large storage solutions.
โ ๏ธ In case large storage is required in the future, will consider migrating to either Azure DevOps (which operates just like GitHub but allows for upload of large files for free) or Perforce via Azure.
The task and time management of this project was done using Jira, where I've created tasks not only for features and bug fixes, but for places that require refactoring and TODOs that are added to the project during development.
I would then prioritize the tasks bi-monthly into a 2-weeks Sprint, properly prioritizing core work and improvements like refactoring and TODO cleanups.
The Version Control was done using Git and GitHub, as the project mainly uses simple assets and code, and doesn't require large storage solutions.
โ ๏ธ In case large storage is required in the future, will consider migrating to either Azure DevOps (which operates just like GitHub but allows for upload of large files for free) or Perforce via Azure.
CREDITS
CREDITS
CREDITS

mixamo
Animation Layering

EPIC GAMES
Animation Layering

mixamo
Animation Layering

EPIC GAMES
Animation Layering
A list of all used assets and their credits can be found in the GitHub repository's README.md file.
A list of all used assets and their credits can be found in the GitHub repository's README.md file.
ยฉ Anton Vasserman 2025. All rights reserved.
ยฉ Anton Vasserman 2025.
All rights reserved.