INTO THE DREAMSCAPE 1: DEV JOURNAL
DEVELOPING A SIMPLE PROTOTYPE IN UNREAL ENGINE 5
Hello adventurers!
Dreamcast 2050 is a small project we developed with Alejandro Rosado to explore spatial virtual interactions. The prototype was developed over the course of few weeks.
As a personal goal, in order to get more familiar with UE5 and Blueprints while applying some software design architecture concepts, just to see how they can be applied in the development process. Having previous experience in Unity and C#, getting used in the engine was faster than I thought. Despite the quirks, and difference conveniences, knowledge is transmittable between engines.
To keep things short, I will describe how most things were implemented briefly and focus on the Hidden Objects System. which I got much love. Since this is a prototype, most parts of code are ehck and would need further implementation.
Project Description
The user receives a custom-designed dreamcatcher controller. The narrator introduces the setting and prompts the user to use the controller to reveal some hidden objects. As the user uncovers the objects, text descriptions appear on the screen, gradually revealing details about the world. Once all objects in the initial sequence are found, the narrator asks the user to make a choice between two objects: a teddy bear (save path), symbolizing prolonged dreaming , or an alarm clock (destroy path), representing the return to wakefulness.
The process of finding objects, uncovering the story, and making a choice is repeated one or two more times, depending on the consistency of the user’s decisions. The user must choose the same path—either “save” or “destroy”—twice to reach an ending. There are six possible narrative paths that lead to one of two outcomes: the preservation of the dream world or its destruction.
Let’s dive into the process.
1. When the experience begins (OnBeginPlay):
2. Hidden Object System
Hidden objects were managed using a Spawner which was acting as a Hidden Object manager:
4. Choices And Narrative Branching
Story progression was driven by user choices, influenced by interactions with Choice Objects. These objects were implemented as a parent class with a string ID field, inherited by two child objects: Teddy Bear: assigned the ID “save” and Alarm Clock assigned the ID “destroy.”
The ID determined the narrative branch. A consistent choice of “save” incremented a saveScore variable by 1 while the opposite was done for a ‘destroyScore’ variable leading to different narrative paths. (<- bad architecture, i think)
5. Revealer, Description Text & Audio Manager
Resources
xx
Blueprints
xx