Untitled Unreal Project | Overview
Experimenting with the Unreal Engine
Overview
While taking a break from Unity to avoid burn out while working on my game; I’ve decided to try out learning Unreal Engine as after reading so much about it I figured it was worth the shot to get into.
As for what I’m looking to build. I want to make both a re-creation and re-iteration of Assassin’s Creed: Unity, mainly because what I’ve read is that Unreal is much more robust when it comes to movement work, and it has motion warping, letting me automatically adjust animations in real time to match target ledges or obstacles. Something which, as far as I know, is not something native in Unity.
Project Design Plan
The only things I have given myself to start with for this project have been the Third Person starter project, and a handful of animations to work into my systems. While I did try out the game animation sample, it didn’t quite have the gameplay feel I was looking for, and I would prefer to try to implement all the relevant freerun systems myself.
Freerun System
In Assassin’s Creed: Unity, there are two main states the player can be in: high and low profile. The latter handling just basic movement and eventually stealth mechanics.
Parkour footage from Assassin’s Creed: Unity
High profile unlocks freerunning, of which there are three variants: neutral, up, and down with each determining the parkour action to perform upon reaching an obstacle. I also plan to recreate this as I personally believe it was the best parkour system in the franchise (albeit with some problems I hope to fix in my iteration).
Current Freerun State
The bulk of the work done so far has been on obstactle detection with some animation work.
With the main parkour obstacle types I’ve been dealing with being vaults and mantles, as they seemed the simplest to implement from the beginning.
Three traces handle obstacle detection, appearing only during “freerun” state
So far, this is being handled with trace-based detection. An initial Forward Trace that detects if there is an obstacle ahead of the player.
If the first hits, another the second trace, Edge Trace, is used to find the closest edge to the player along the obstacle’s top face. I use this one for motion warping the animation. This will also hopefully transfer nicely into wall climbing and ledge grabs.
Lastly, the Depth Trace determines how thick an obstacle is, this last one determines what action to freerun action to take. If the obstacle is thin enough, a vault will be performed, otherwise the player will mantle on top.
Early trace blueprint logic, will clean up more later
There has also been some input work done; the freerun button has been assigned as well as the freerun up and down modifier buttons accessible only if the original freerun button is held down.
Stealth System
A stealth system would naturally follow the finished freerun system.
Current Stealth State
As of now, the only real part of this system in the project currently is the crouch mechanic. It wasn’t too hard to add either as 80% of the work is done through the existing Character Move Controller on the player’s blueprint.
The crouch will eventually build up into a cover system to coincide with enemy AI and detection, but this remains to be built upon as the freerun system is the main priority as of now.
Unity vs. Unreal
The transition between the two engines has been quite smooth so far, once I had the interface looking similiar to my Unity’s setup, it made adapting even easier as it all felt all the more natural.
Performance
While this is honestly just an issue with my system being pretty outdated at this point (Ryzen 7 3700x, 16GB 3200mhz RAM, RTX 2070 Super) it was immediately apparent how much more demanding Unreal compared to Unity with it not even being close.
I’ve mostly alleviated it with the lowered viewport settings thankfully, but it was a brutal reminder that my system is just old.
Blueprint
What has been growing on me quite quickly is Unreal’s Blueprint system. The convenience of being able to make a coding change, recompile it, and go back into testing it within less than a second feels like a godsend (obviously with its drawbacks of being less performant compared to raw C++ but that’s neither here nor there). The visual scripting element is a neat part as well, reminding me of Scratch, although I can’t imagine how messy and convoluted this could potentially get if not managed properly.
I’ve read recently that around 95% of Expedition 33’s gameplay systems were made with Blueprint, and I can only imagine just how difficult it would be to keep that all tidy and readable.
What’s Next
The main concern currently is to iron out some quirks with the current grounded freerun options, and from there continue to build out a more comprehensive freerun system.

