Project Slash
A three minute video about the project 🎥
Play Project Slash (Windows)
How to install & play
- Download the ZIP file using the button above.
- Right-click the file and choose “Extract All…”.
- Open the extracted folder and run SwordAndRun.exe.
- If Windows shows a warning, click “More info” → “Run anyway”.

Task: Open-world RPG prototype
Project Slash is an open-world project, I created in Unreal Engine 5. First and foremost it is an educational project meant to teach me the ins and outs of the engine.
The task was to create a small open world with a playable character and enemies, which the player can fight. I learned several lessons about game development and Unreal Engine during the creation process. Some of which I will share here.
Painting the landscape
Initially I sculpted and painted my world using the landscaping tool built into the engine, but quickly ran into the issue of the landscape textures having identical patterns all throughout my world. This issue is called tiling and I solved it using macro variations.
Macro variations, to my understanding, randomizes certain aspects of the texture in every painted instance. The image showcases an example of this. The same texture is painted on the landscape but it varies in some areas, making it look more natural.


Creating boundaries using Blueprints
I wanted to create a natural wall of rocky mountainous areas around my world. I started stacking different meshes of rocks and boulders on top of each other and resizing them to make the mountain. I quickly learned, that this was not a viable approach due to the amount of meshes that would load in my world.
Luckily you can create your mountain with a ton of meshes, turn it into one blueprint and utilize that instead, which is exactly what I ended up doing.
Making the character move
For a character model I used Echo from Epic Games free showcase project called Valley of the Ancients. Echo comes with animations and sound effects.
I learned to call the Enhanced Input System, it’s Input Actions and Input Mapping Contexts in C++ to make my character move along a desired axis with a given input and stop moving when releasing that input.
For specific C++ follow this link


Animating the character
As previously stated, Echo comes with animations and sound effects when imported. To animate her locomotion I learned about Animation Blueprints and State Machines.
This way I was able to animate her movement and jumping states.
Equipping and using weapons
To create functional weapons, I had to learn several core systems in Unreal Engine.
I imported the weapon mesh, added an overlap sphere, and set up events for when the player enters or leaves it. Using the Enhanced Input System, I then attached the mesh to a socket on the player’s skeleton so it could be equipped correctly. Finally, I implemented box traces to detect whether the weapon was hitting enemies during attacks.


Enemies appear…
With the weapon class in place, it was time to make an enemy I could fight.
To be able to hit it I learned about interfaces and how they can help execute what happens when the weapon hits something.
For patrolling and movement I used animations from Mixamo and created an array of patrol targets randomly cycled through via Target Points in Unreal Engine 5.
Combat
For both the player and enemies, I used animation montages to drive their attack animations.
On the player side, this was combined with the Enhanced Input System to trigger one of six random attacks when LMB is pressed. During this process I learned to use enums and C++ states to track when an entity was attacking. I also explored Root Motion, added root bones in Blender, and adjusted animations to support proper movement.
Finally, I integrated MetaSounds, Animation Notifies, and weapon trails to enhance the feel of combat.


Pickups
I wanted breakable pots and urns that could drop treasures, enemies that released souls as experience, and health potions the player could pick up to restore health.
For the pots and urns, I learned to use Unreal Engine’s Chaos Destruction System and created geometry collections so they could fracture on impact.
I also used TSubClassOf to control which treasures designers could assign. Lastly, I modeled a health potion in Blender and enabled overlap events so the player could pick it up in-game.
The HUD
With everything else in place it was time to make a HUD that displayed information such as amount of treasure, souls, stamina and health to the player.
For this I learned about Widget Blueprints and HUDs. Here I imported an existing HUD and connected the widget to a PickupInterface that updates the Health, Gold and Souls when picking up items. Additionally I created a HitInterface that updates when the player or an enemy is hit and subtracts health.


LockOn
As a final challenge, I built a LockOn system from scratch.
I created a detection sphere around the player that tracked enemies entering or leaving its range, adding or removing them from an array accordingly. When at least one enemy was in the array, the player could press Q to lock on.
I used a widget for the visual indicator, C++ to control the camera, and animations to make the arrows pulse subtly. I also added target cycling, allowing the player to press Q repeatedly to switch between nearby enemies.
