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.
The very first thing I tried to do was figure out a way to have fog (exponential height fog) outside but not inside, which was a lot harder than I thought it would be? I tried to implement a system using an invisible trigger box where if the character went close to the window, the fog would generate, and if you stepped away, it would go away, which actually did work; however, the fog would still generate in the loft which was kind of a waste of time for me, although I guess I did learn a lot lol.
node system for the trigger box for the fog systemsetting fog density to 0 so when the box is triggered, it would change the value to 2
The door problem
Since I had collisions done, you could no longer just walk through the walls. I wanted to figure out a way to get the player to go to different rooms in the level. At first, using what I’d learned with the fog system, I tried to implement a similar feature where if you stepped on a trigger box, you could teleport to the next room, and again, this did work! I even figured out how to add a sound effect and a nice fade animation to transition nicely; however, it just felt off. First of all, I had to set up two points to teleport into and out of the room, so I put them logically right in front of the door on both sides. However, it meant the character couldn’t be imported directly in front of the door as that would automatically trigger the second teleport feature, and I didn’t think it made sense to be teleported to the middle of the room continuity-wise. I also had to add the coordinates for each destination by hand; the whole system felt really clunky, so I just decided to find a different way.
original teleporter door with trigger box in front
node setup to get it to function
E to Interact
I decided to try to implement a press “E to interact” interaction system, which was more complex to do, but thankfully there was so much information on how to do it that I had no real issues setting it up. It was quite a lengthy process and if I’m being honest idk if I have the bandwidth to type it all up lol. A really key part of it is this line trace system which is connected to the third-person camera. Which essentially is how UE5 is able to determine where the player is looking. I also had to create an “Interact” script and add “E” to the “master list” of movement controls as part of the process of setting this system up
Interactions with line trace
and now I have a good foundation for interacting with objects for the whole game. I also set it up so the interact button only pops up when you look at an interactable object. I had slight issues the first time I tried to animate the door, it simply didn’t work but I came across another method which involved creating a pivot point and parenting the door to that point and animating it that way which worked perfectly. I also added a door frame to the wall the doors were on just to make it look a bit better and yeah everything works great.
Door with pivot point attached
nodes for door animationdoor animation timeline
I made the crosshair really quickly in Photoshop; initially, it was meant to be like a circle, but I think the E was a bit clearer. I might also add a pop-up of text that says, “Press E to interact.”
original crosshairfunctioning button popping updoor is open
Please ignore the fact the door technically opens the wrong way if you look at were the handle is placed, for some reason when I changed the pivot point to the other side to make it more technically accurate it messed up the animation speed and I couldn’t figure out why and didn’t want to spend a huge amount of time trying to fix something that was more of an aesthetic issue soooo I decided to leave it alone.
I also did a bit of a clean-up for the lighting trying to make things look a bit prettier (the lens flare might be doing a bit too much but I like it) removing weird light points shadows, etc but this is mainly personal aesthetic stuff I might talk about in another post.
Another slight change I made was to how Eve moves around the room. She was running by default but I felt that didn’t make sense. (Who just casually runs around their home?) so now she walks around the space instead.
setting up the walk animation blend spaceupdating the animation graph to the new blend space
The next set was the loft. This is where the majority of the game will take place. As I pondered on how long it would take me to build the set, something that felt like a divine intervention occurred, and I came across a YouTube video that showed how to carry over scenes exactly how they look in Blender to UE5 using a feature called “Universal Scene Description.”. and I had also come across a creator that built blender scenes for Sims players, and I immediately felt a sense of clarity. Before I paid the £4 for the building, I tested out the method with a free set in an older project I had, and it worked perfectly, so I thought everything would be fine, but when I went to do the real thing, I encountered a HOST of issues.
test scene
Loft used in the game
Although everything looked fine in Blender once I carried it over to Unreal, the scene itself was technically there, but there were no textures. I looked high and low for a solution but no one seemed to have one 🙁
Error message about the materials
Now I eventually did figure out how to get the textures back after hunting around in the material nodes for Unreal and figured out it was because “UseBaseColorTexture” was turned off in the materials for each item. So I had to painstakingly go through and turn it on for EVERY SINGLE ITEM IN THE SCENE. which just felt like a waste of time for such a large scene so I explored other methods of importing the scene.
UE5 Materials tab
I was advised to try the plug in “better FBX exporter” by the CG supervisor of the company I work for, and he sent me the add-on and made a quick tutorial on how to use it. It did work… kind of.. like it’s definitely good to know, but for some reason, it imported the walls really strangely. A section of the roof was missing and the walls went see-through when you went into gameplay mode. I tried to just rebuild the walls but building in UE5 is honestly hell IMO so I tried one more thing. which was exporting the file as a GLB file and that worked perfectly!
scene imported with the better FBX addon
FINALLY SUCCESSFUL IMPORT
I still had some work to do. I began by fixing the windows in the scene and making the material work like glass. I then started adding lights into the scene and building a city landscape outside for continuity and immersion.
creating new glass material
cityscape outside the loftadding lights to the loft
And then of course, additional things like cutting holes in the walls were doors are supposed to go and setting up collisions for all the objects so the characters can’t just walk through the couch or walls. A tedious but necessary task.
setting up collisions for the main shell of the loft
I worked out that I’ll only need 2 sets (the city and Nathan’s loft) and thankfully was able to find cheap assets to work with!
The City
I feel like I should probably come up with a name for the city lol. But anyway I really just wanted a vibey industrial cyberpunk vibe, loads of purple, neon, holo billboards etc. I followed a tutorial initially to get me going
I began by creating the base for the hologram billboards. As part of my vision, I wanted to have an ad that was specifically showcasing the Eve dolls, so I got to work on that. I shot the footage for the ad in Sims 4 It was the easiest and quickest way I could do it. I also found some additional gifs from giphy of existing media that I felt matched the vibe.
Sims created and captured in the sims 4
Everything was then added into Adobe After Effects, where I did some extra work on the colours and made them transparent to get them ready for importing into UE5. I had to import them out as image sequences rather than videos.
After Effects timeline showcasing Eve doll adAfter Effects timeline showcasing gif from the film Cool World
I then began actually constructing the city scene. I ran into some trouble right off the bat trying to get the assets working in my project but I figured out that I needed to migrate the assets from the project file that came into my project. I also kept getting frequent crashes, but I figured out I just needed to change the graphics API UE5 was using to DirectX.
Building up the city was actually quite easy and a little therapeutic, lol. I added a camera and added assets to suit the camera angle I wanted. I added lighting, fog, and of course, my holograms to the scene after converting them to sprite assets.
shot of the city in the UE5 viewportshot of the city through set up camera actor with first lighting ideashot of the city through set up camera actor with second lighting ideashot of unlit city scene
I created a little storyboard to give me a bit of guidelines for creating the opening cutscene
for the game, I tried to keep things as simple as possible because it occurred to me that I am not the best animator and I don’t have access to an extensive library of free 3d animations that work with my characters, and I just don’t want to spend a lot of time trying to figure out extra character animations. So I thought more about camera placement and how to convey the scene with as little as possible. Sometimes less is more, lol.
I’ve been using a program called Drama Queen to write my script, and there have been numerous iterations of even just the intro.
snippet of the intro sequence script
I’ve been getting thoughts and input from other people based on what I’ve told them the project is about and trying to work all my ideas into the writing.
Feedback on Whatsapp from a friend
I will say I’ve struggled a bit with writing about the actual abuse. As someone who is lucky enough to have never been in an extremely violent abusive relationship, I didn’t want to feel like I was exploiting or making light of a subject matter that is so serious. Especially in light of recent events like the video of Diddy beating up his ex-girlfriend Cassie Ventura at a hotel and people making jokes and memes of women like Tina Turner or Whitney Houston who have suffered abuse by their partners. On the flip side I also don’t want anything to feel gratuitous like a lot of r*pe revenge films will have very long extremely graphic portrayals of sexual assault that always feel a bit unnecessary and shot in questionable ways…. I think the fact that nothing extremely graphic abuse-wise will actually be displayed helps with that.
A lot of the experiences Eve goes through are heavily inspired by real-life stories from women who have experienced abuse and had the courage to tell their stories to the public. The aforementioned Diddy and Cassie video is one of them as Cassie also mentioned a similar situation when she filed a civil suit against Diddy a couple months back.
I’m also thinking of the ethical implications of utilising AI text-to-speech for voice acting as I just don’t think text alone can deliver what is needed and due to time and budget constraints and me constantly going back and forth on the writing I just don’t think it’s feasible for me to find and direct 2 voice actors 🙁
These are some notes that I put down during my initial “conception” stage, trying to think about things like what to call the main character, how I’d like to open the game, and world-building, where I wanted the main parts of the game to be, etc. Just a little brainstorming here and there. This is where I decided on Eve being the name of the character as a reference to Adam and Eve (the original woman).
Notebook notes 1
Notebook note 2
what is my core notes
Utilizing the tips that I learned from this LinkedIn game design course I decided to do a little more thinking about how I would like the game to play and what kind of game mechanics I could add. The biggest thing I got from the course was essentially building your game around its “core”. It really made me think, about the core of my game. I settled on the word empathy. The goal of this experience, I guess, is to get people to understand the feelings of being trapped, afraid, and not having agency. Even though Eve is technically not a real person, they should still have empathy for the situation he is in and women who experience abuse in general. Maybe even think about what makes us human in the first place. In any case, once the core was established I began to think about how to create the feelings I wanted through potential gameplay mechanics.
There was also the idea of the core loop which is like a series of actions to keep the players engaged in the game. This was a bit trickier for me to think about and to be fair in the course they did give examples of games that didn’t technically have a core loop or just had one general one so for example Minecraft = creativity. Writing a core statement out was also super helpful for me mentally as it really made me think about how to actually express this goal.
core loops notes
core statement notes
I also remembered a game I really love that is also a huge source of inspiration for the updated gameplay mechanics. It takes the trope of the captured princess and hero who saves her and rather than playing the hero, as per usual we are actually put in the princess’s shoes. It’s deeply harrowing.