since Eve is names after the original woman Eve from the bible I decided to use an apple as like the icon for the game as reference to this.
I downloaded an apple model from sketchfab and modified the materials to make it more chrome and emissive with a custom texture made using the nodes which I then animated to really make that futuristic y2k vibes.
I can’t animate to save my life(I guess everyone starts from somewhere) but I learned a lot about working with different pipelines and techniques. Luckily I was easily able to retarget the default third-person mannequin in UE5 to my daz3d so that took care of most of what I needed especially at first but I definitely needed to get creative when it came to cutscenes. I used the ever-iconic mixamo for the ending murder and death animations but I also came across a site called actorcore that had some free animations too.
I exported the Daz3D character facial morphs that allow for quick facial expressions into UE5 to attempt to add some more life to the animations since none of them had any face movement to them.
I did come across this incredible free animation pack for conversations in Daz; however, they were made for the older versions of the character models (Genesis 8). I had found a converter that converted poses from Genesis 8 to 9 (my characters) but it only worked on poses and not animations,, so unfortunately I had to take to animating my own little animations for blinking and talking as I had no other real option.
Keyframing animations in Daz
Learning how retargeting works was great, as it was a super easy way to get animations to work on my character. Especially once I figured out how to change the bones/poses of my character in the UE5 retargeter.
Retargeting actor-core animation on Eve using my animation in a cutscene
I also figured out animation montages in UE5 which allows you to use animations in blueprints and I also learned you could update skeletal mesh animations through blueprints as well which again was super helpful with needing to trigger an animation change due to an action.
This was the most complex gameplay mechanic I implemented into my game but the process taught me so much about working with the UE5 blueprints (namely, parenting, and functions, binding, widget animations) I almost wish I started with it first.
Quests System
I decided to build this because I wanted a way to keep track of all the triggers in the scene so I could create a way to transition to the next level in the game. I began by creating 2 parent classes to hold the “objectives” of a quest and then the “quests.” themselves. and, of course, a widget to design it’s appearance, keeping things very simple. It took a lot of time and I needed to tweak a lot of stuff to suit my needs but this tutorial series helped me a LOT genuinely one of the best tutorials I’ve encountered in my life.
I then wanted to implement a way to load the next level if a player had completed all the quests.
I initially tried to use a counting system that added 1 to a variable each time a memory was triggered, then I compared that value to the number of triggers available, telling the engine to load the next level if the variable was equal to said number. However, this didn’t work very well; sometimes there would be multiple numbers added to the counter. To combat this, I added a “destroy actor” node to the trigger boxes so they would be deleted after being triggered,, but that caused the system to stop working altogether so I tried something else.
After strengthening my knowledge of how to use the “cast” system in UE5 my new strategy was to attempt to access the “incomplete” variable in my quest system, which keeps track of whether a quest has been completed or not.
I then checked that value against a branch (which is the UE5 version of an IF statement) and if result was true go to the next level. This worked well at first. When I was just testing it with one quest but when It came to adding all four it just didn’t work and I’m still stumped at what is going wrong.
insanely chaotic BP but there is a method to the madness.
The good news is using this system I was able to create notifications and a sound effect appear anytime a quest had been completed.
For the most controllable and easily modifiable system for my live cutscenes, I called the audio for the dialogue and the subtitles separately within the blueprint for each cutscene (memory) trigger.
I created a data table to hold all the dialogue and “timestamps” I did this all by hand but I think next time if I use a system like this, I would put the text and timestamps in a CSV file and import that into Unreal to make it a bit less tedious.
Data table
I created a widget (which is a graphic) to design how I wanted the subtitles to look when added to the screen. And threw it together in an actor blueprint. This system was perfect for what I needed and I found it super easy to modify it with all the different dialogue options.
Blueprints
I also changed the text from white to a light purple to represent Eve, and to make it more readable, I added a black shadow to the text so it stood out a bit more in the background.