Enola Blog
- Roland Thomas

- May 3, 2024
- 5 min read
It's decided that the game will be made in Unreal Engine. I have a number of assets I think we can use for the project, namely City Sample Crowds & Buildings. Marked down other potential assets I own that could be used on the project.
28/02/24
Setup a storage project, the main one & Git, and started downloading the City Sample assets. Found that the assets sizes are massive. Decided to continue for now.
As my home computer is low on free storage I attempted to download an run everything on my portable HDD. After multiple attempts to download and apply the assets to the project, I finally did it, and then I picked a few buildings from the samples to migrate to the Enola Project.
After this, the project size was so massive, it was a genuinely struggle just to push to Git. I eventually gave up on the city buildings, as even the few migrated ones was enough to make the project size too big, and that size was nearly doubled again due to the git repository's data. There wasn't even any content yet in the game just the building assets, and the project was already massive.
Due to this I abandoned City Sample Buildings. Sending this to git would bloat my team members' hardware as well, so it wasn't worth all the issues just for some building assets. I decided to find new building assets that could be used.
I setup City Sample Crowds in another project, then migrated them to the Enola project. It works, and would now spawn in randomised MetaHuman civilian NPCs! They just needed animations setup in the Animation Blueprint and they are good to go!
I also setup the player character controls and the core GameMode and PlayerCharacter class blueprints.
13/02/24
Did research on Level Design. Determined that the best layout for the prototype level would have a Hub-and-Spoke layout, with a central area that Enola would come back to, and quests and events would be placed in locations accessible (or visible) from this central main location.
Also a bit of an organisation issue, because it's not clear whether I'm doing the level design for the project or if another team member is doing it.
27/02/24
The City Crowds (Civilians) work, but the blueprint uses a lot of soft references to assets that need to be loaded in when the MassSpawner spawns them at the start of the game. I thought this would just need to load once, and then the game could instantiate as many models as needed, but when spawning any number civilians, it would still take very long to start, even crashing the engine on team members' systems if the Crowds Blueprint hadn't been opened in a tab in-editor, thus loading the assets into memory.
Due to this I decided to remove the City Sample Crowds asset from the project. Doing this actually saved up a lot of space on the project as well, since it's a fairly large asset. Instead I decided to replace the MetaHuman models from the Crowds asset, with Mixamo models. This meant I would have create a blueprint for each different model, with separate animations, animation blueprints, and so on, but this way the size of the project is a lot more manageable, and team members have no problem starting the project now.
After a group meeting it was also decided that another team member would handle the Level Design, and I would implement the Quest System and LOD optimisation for other assets that were in the game, such as the playable character's model, which is a MetaHuman - Initially the hair would look terrible when the camera was only slightly further away from normal. This would show quite clearly in the cinematics, so I fixed it, and various other LOD issues across the project.
I got a start on creating a quest system, system from scratch, and planned out how the elements of it would relate and communicate with each other.
My design for the quest system architecture is as follows:
A Quest can have multiple Stages
a Stage is an array of Tasks
Each Task has any number of associated Task Items.
Starting from the bottom-up, a Task Item is an object in the game world that is related to a task. Behaviour can be implemented to determine when a Task Item is marked complete or not.
A Task is a mission or objective that the player has to do to progress a Quest. If a Player has a Quest to 'Save the Town', for example, the Tasks in that quest could be to 'Put out Fires', as well as to 'Rescue Trapped Villagers'. The fires to be put out and the villagers that need saving would be marked as Task Items in this scenario.
A Quest Stage is a group of Tasks for a Quest. The purpose of a Quest Stage is to allow Tasks to be initiated in steps, if desired. When a Quest starts, a message is sent to all the Tasks in it's first Stage, to activate their associated Task Items. If they are all completed or resolved, and there are additional Stages in the Quest, then the Tasks in that stage will be told to activate, and so on.
A Quest, Task, and Task Item all have titles and description fields within that can be set and accessed by UI (HUD or Quest Menus).
Quests information is setup in a Data Table, which the game will read and generate all quests from.
I have begun development on the quest system, but it's not fully implemented yet.
10/04/24
Completed the Quest system. Created Placeholder cones to act as the Mother and Son of the first quest, and it all appears to be working for now. There are definitely improvements I can make to this system implementation, but its more than enough for the needs of this project as it stands. I want this system to be able to handle most use cases, because it could come in handy for future projects as well. After this project is over, I'll look to complete it in blueprints, then translate the functionality to C++ to be made into a Plugin that can be easily used in different Unreal Projects.
20/04/24
Added in The NPCs that will be talked to for the prototype (Mother, Refuse Collector, Street Artist). I couldnt find any models for the son so a man was used and shrunk down.
I hooked up each NPC with the Quest System, and created the Quests, Tasks and Task Item information needed for each quest. I then hooked up the characters to work with my team mate's Dialogue system and linked the UI to the ongoing quest information.
I discovered a few new bugs, such as Quests not properly being marked as complete after all tasks are completed, but I will fix them later as I complete the Quest system in future. As Enola is a prototype with a linear quest structure, the bug wasn't a problem for the game.
Lastly I made some final tweaks to the game before recording the playthrough video for submission.
Comments