Welcome to this VR exploration experience. Within this virtual realm, you will encounter a series of lonely worlds, each one trapped within a mysterious non-Euclidean cage. As you navigate through this enigmatic environment, the four faces of the cage will unveil distinctly different spaces, each concealing its own secrets. Embark on this journey of discovery and unravel the mysteries that await you. The answers lie within, waiting to be explored.
Group Work
Initial Conception of the Entire Project
After our initial group meeting in week one, our team embarked on the exciting task of designing a dynamic space that would captivate players through the use of portals. We envisioned a game where players could teleport between various rooms and dimensions, tailoring their experience based on their preferences and desire for exploration. To achieve this, we aimed to create a Main Scene that served as a central hub, housing four distinct portals leading to separate individual scenes. This design approach ensured a linear progression throughout the game, allowing players to navigate through each scene in a structured and coherent manner.

Within each space, we crafted diverse storylines, environments, and main topics that stand on their own, independent and unassociated from one another. Each space presents a unique narrative and atmosphere, offering players a variety of experiences to delve into. The lack of interdependence between these elements allows players to explore each space individually, immersing themselves in distinct narratives and engaging with different themes and environments throughout their journey.

Roles and Responsobilities

Assets Management
Sounds made by BA Sound Arts Students:
MainScene:
Intro Audio: https://app.uberduck.ai/speak#mode=tts-basic&voice=speak-and-spell
Fonts: https://www.fontspace.com/collection/unity-cd67e98
Space A:
Moon Texture: https://www.solarsystemscope.com/textures/
Particle Effect: https://m.tb.cn/h.UxPcyyg?tk=oWE3dpksuPQ
Skybox: https://m.tb.cn/h.UxP2V2q?tk=C1Xndpkttse
Clouds: https://m.tb.cn/h.UC76xUL?tk=hVA7dpkEH2N
VisualizerD: https://m.tb.cn/h.UC7Ppif?tk=fbywdpP044L
Space B:
Environment: https://m.tb.cn/h.UC7SFOj?tk=d3ThdpkDMgE
Particle Effect: https://m.tb.cn/h.UDZiVmQ?tk=q8rmdpkxZWE
Potions: https://m.tb.cn/h.UDtkRUr?tk=1e2ldpkCjUT
Cat and its animation clip: https://m.tb.cn/h.UC7RZ6v?tk=jR2kdpkCl0I
Shader for the woman: https://m.tb.cn/h.UDtneX0?tk=gq8rdpkAu4g
Animaton for the woman: https://www.mixamo.com/#/?page=1&query=hello
Audio: https://freesound.org/people/CJspellsfish/sounds/669473/
https://pixabay.com/sound-effects/search/explode/
https://freesound.org/people/noirenex/sounds/159399/
https://www.hifini.com/thread-56478.htm
https://pixabay.com/sound-effects/search/liquid%20grab/
https://freesound.org/search/?q=footstep
Individual Work
Regarding the individual sections, the Main Scene, Space A and Space B will be discussed in turn, taking into account various aspects such as theoretical and technical research. I will briefly outline the reasons behind designing these scenes in the chosen manner, the storyboard, visual and audio production, prototyping, playtesting, and tuning processes will also included. Towards the end, I will conduct a critical reflection analysis
By following this structure, the design process of each scene, covering theoretical and technical research, storyboard development, visual and audio production, prototyping, playtesting, tuning, and critical reflection analysis.
MainScene
Theoretical Research
>Parallel Spacetime and Possible World<
The concept of “Possible World” serves as a formal philosophical device to explain parallel spacetime. Hugh Everett III (1957) proposed that all isolated systems evolve according to Schrödinger’s equation, resulting in a relativistic measurement that leads to the splitting, rather than the collapsing, of the universe. This means that since the universe’s creation, numerous splits have occurred, embodying the notions of “Possibility,” “Necessity,” and “Contingency.”
An example of this concept can be seen in the game “Steins; Gate,” where multiple world lines exist. The protagonist, Rintarou Okabe, can alter the course of events by sending emails to the past using the “telephone microwave” (tentative), thereby shifting to a world line with a different outcome. The telephone microwave becomes a pivotal element, enabling Rintarou Okabe to traverse through multiple parallel dimensions.
Parallel universes and dimensions are also explored in various films and anime, such as “JoJo’s Bizarre Adventure,” where Father Pucci utilizes the power of MADE IN HEAVEN to infinitely accelerate the world and create a new parallel dimension. Similarly, in “Coherence,” parallel worlds intersect after the arrival of a comet, defying the laws of normalcy.

Personally, the concept of parallel worlds is a favorite theory and one that I would like to incorporate into my project, if feasible. This theory suggests that even insignificant choices can lead to the divergence of world lines, giving rise to the existence of alternate versions of oneself living entirely different lives. In my project, Space A, B, C, and D represent four parallel dimensions, and the Main Scene serves as a node where players can catch a glimpse of these worlds—a feat impossible in reality.
However, contrary to the traditional notion of this theory, players will have the agency to actively choose which world they want to explore within the Main Scene, rather than passively moving through different parallel worlds. This interactive element adds a unique twist to the experience, allowing players to shape their own narrative within the project.
Technical Research
>Non-euclidean Geometry<
Following our group discussion, I delved into extensive research on designing the environment for this scene, specifically focusing on finding the most suitable and effective way to position the four portals in the MainScene. Coincidentally, during this period, I happened to be engrossed in playing non-euclidean games such as Antichamber, Superliminal, and Hyperbolica. The mesmerizing Cage Room from Antichamber particularly caught my attention, and I was eager to explore how I could bring a similar concept within Unity and VR.
https://store.steampowered.com/app/219890/Antichamber/
https://store.steampowered.com/app/1049410/_Superliminal/
https://store.steampowered.com/app/1256230/Hyperbolica/
Non-euclidean games like Antichamber feature impossible geometry where multiple objects seemingly inhabit the same physical space, but only appear when viewed from certain angles.
Upon discussing my idea with my group members, we collectively decided to center our attention on a non-Euclidean cage within the Main Scene. This extraordinary geometric structure was designed so that Space A, B, C, and D were located on the front, back, left, and right faces, respectively. Essentially, this cage serves as a teleportation device, allowing seamless transitions between these distinct spaces.
Concept of MainScene
Realising the non-euclidean geometry which seems not impossible to happen in reality, using a cage as a carrier containing four different parallel worlds.
By embracing the concept of non-Euclidean geometry, we explored the possibility of a seemingly unreal structure that could exist in reality. In our design, we utilized a cage as a carrier, encompassing four distinct parallel worlds within its confines. This imaginative approach allowed us to create an immersive experience where the boundaries of conventional geometry are transcended.
StoryBoard of MainScene


Production and Prototyping (Visual)
To begin with, I started by creating a model of the cage, excluding the front, back, left, and right faces.

Next, I experimented with two different mechanics to achieve this visually impossible effect. Firstly, I explored the use of stencil shader, which I had learned from Herman. Remarkably, this technique proved to be successful in the VR environment!
Regrettably, I encountered some difficulties while attempting to configure the shader settings. When I clicked on “equal,” all the faces faded, causing confusion and frustration. Despite my efforts to troubleshoot the issue, I couldn’t find a solution. As a result, I decided to download the original file shared by Herman in his tutorial to gain a better understanding of the shader implementation.
One night, while discussing the issue with Herman, I made an unintentional change to the mask, switching it from a quad to a plane. To my surprise, this adjustment proved to be the breakthrough I needed! The shader started functioning as intended. Here is the initial prototype showcasing the progress made
I also tried another mechanic — portal.
Following the instructions provided in the tutorial, I followed some of the steps to configure the portals and enable the player to see the worlds within them. Subsequently, I proceeded to move the four portals correspondingly with the transition of the four faces of the cube. To facilitate scene transitions, I incorporated four trigger areas positioned identically to the portals. This implementation created the illusion of “stepping into” each world, enhancing the immersive experience for the player.

And then I randomly imported 4 different scenes to test this mechanic. It worked!!!
In the end, I decided to utilize portals and incorporated the scenes we had designed. However, during testing with the headset, I encountered an unexpected issue where the player would continuously fall upon initiating movement. This problem hadn’t occurred during the initial testing phase, which added to the confusion. And then I tried to find what I can do to may be solve this.
Initially, I suspected that there might be an issue specific to the scene itself. To investigate further, I attempted to resolve the problem by dragging the entire cube as a prefab and importing it into a new scene. Unfortunately, the issue persisted, leading me to believe that the problem lay elsewhere. Rosiar mentioned experiencing a similar problem in the past due to incorrect settings within the XR origin. As a result, I deleted the existing XR origin and replaced it with another one that had worked successfully in a different scene. Despite this effort, the problem persisted.
During my troubleshooting endeavors, I discovered that although the player could utilize teleportation, they would continuously fall if they attempted to move conventionally. Realizing that this might be a viable workaround, I considered allowing the player to move solely through teleportation if the issue remained unresolved. However, I lacked the knowledge on how to implement this solution, so I sought guidance from Herman. Eventually, it became clear that the problem stemmed from numerous overlapping box and mesh colliders. Once I removed these colliders, the issue was successfully resolved!!!!!!
After experimenting with various shaders on the cage model, I eventually discovered that my personal favorite is the neon shader. Its visually striking appearance appealed to me, and I have decided to retain this shader for the final design as it complements the aesthetic I envisioned.
As this scene neared its completion, we incorporated UI that included an introductory pitch and instructional elements. These additions aimed to provide the players with a clear understanding of what to expect and guide them on what actions they can take within the experience.
After conducting playtests, I made some adjustments to the positioning of the three arrows. Initially, I had placed them in a specific arrangement to indicate to the player that two rooms were still trapped behind the back faces of the cube. However, after inviting Serra to assist with the playtest, she suggested a different approach for positioning the arrows. I took her advice into consideration and decided to pose the two arrows in the suggested manner.

>World/Level Manager
During the playtest with Rosair, I encountered an issue related to the introduction UI and intro audio. Initially, I wanna them to be active only once during the “Awake” phase, as I wanted to avoid the player encountering them again when returning to the scene after completing another scene. However, Rosiar noticed that when the player returned to the main scene, the entire scene would reload, resulting in the intro UI and audio still being here.
Additionally, I wanted to activate the “Thanks” UI when the player had visited all four spaces (triggered the respective trigger areas). To address these concerns, Rosiar taught me using the level manager.
In total, there are six scripts involved in controlling various aspects of the scene. Firstly, there is a scene transition script that handles the transition between scenes triggered by the respective areas. Then, there is a script responsible for managing the loading and activation of the intro UI and audio. Additionally, another script is in place to setActive the thanksUI when necessary. Finally, a trigger manager script helps coordinate and manage the interactions between these different scripts.
If the player triggers a scene transition trigger area, the corresponding bool of that trigger area is set to true, and as a result, the thanks UI will be activated. As for the Intro UI and audio, if any of the scene transition trigger areas are triggered, the bool associated with them is set to false. If this bool is false, it means that the player has already transitioned to another scene, and as a result, the Intro UI and audio will be destroyed.




Finally worked!!! Thankssss Rosiar :/

Production and Prototyping (Audio) and Playtest
After collaborating and exchanging ideas with sound arts students, we have divided the audio design into two parts: ambiences and intro audio. This approach allows us to focus on creating immersive soundscapes for the different environments and establishing a captivating introductory audio experience.
Regarding the ambience, we have introduced a feature that enables players to hear the distinctive ambient sounds associated with each portal as they approach it. This design choice was made to empower players in making informed decisions about which space they would like to explore, taking into account their visual and auditory preferences for each environment.
To achieve this, it is necessary to track the relative position of the player in relation to the cage. Furthermore, we will attach the four ambient sounds of each space to four separate audio sources. When the player reaches one of the specific positions relative to the cube, the corresponding audio source will be activated, playing the respective ambient sound. This dynamic audio setup enhances the immersive experience by synchronizing the player’s position with the appropriate audio feedback, adding another layer of realism and engagement to the exploration process.


Upon receiving the ambient sounds from our groupmates, I proceeded with testing. While the player’s location was successfully tracked, I encountered an issue where the audio clips were not playing. Initially, I used a different method for playing the audio clip. In the tracker function, I had implemented a logic that triggered the playing of the corresponding audio clip, such as AudioSourceM.PlayOneShot(FrontM), when Front was set to true. This logic was executed within the update function if the distance was less than 7. Although the code logic appeared to be correct, I was unable to determine the cause of the issue. Seeking assistance from Herman, we identified that the problem stemmed from the fact that the tracking process occurred within the void update function, which caused the audio clips to play only for the first frame of each clip.
For the intro audio, I implemented a mechanism where the audio would start playing when the player approached the intro UI. To achieve this, we set up a trigger area. However, during testing, I observed that if the player returned to the Main Scene, they would be positioned at the same initial starting point. Consequently, if they moved forward again, the trigger area would be activated, resulting in the intro audio playing once more. To address this, I introduced a boolean variable to ensure that the audio would only play once, preventing it from repeating if the player re-entered the trigger area.


In terms of the intro audio, becasue they did not made this before the deadline, I using Umverduck.AI to generate this audio clip. Really like the voice of this AI (Hank carr). Here is the link:
https://app.uberduck.ai/speak#mode=tts-basic&voice=speak-and-spell
Space A — Audio Visuals
Theoretical and Technical Research of Space A
> The Moon (Environment Design) <

The moon holds an undeniable place in our collective consciousness as one of the most familiar celestial bodies, second only to Earth. Its prominence in the night sky makes it easily noticeable—a grand and imposing presence. Personally, the moon carries significant meaning for me. Its cyclical nature, transitioning through phases of fullness and waning, mirrors the constant ebb and flow of meetings and partings in my life.
Given the opportunity, I would relish the chance to visit Hyde Park alone at night, seeking solace away from the bustling city lights. There is something profoundly captivating about immersing myself in the darkness, enveloped in a sea of emotions. During those moments, the moon becomes my sole companion, silently observing as I experience fleeting and perhaps insignificant emotions that hold little value to others. It is as if the moon alone truly understands, as beautifully expressed in Tahereh Mafi’s poem:
“The moon is a loyal companion. It never leaves. It’s always there, watching, steadfast, knowing us in our light and dark moments, changing forever just as we do. Every day it’s a different version of itself. Sometimes weak and wan, sometimes strong and full of light. The moon understands what it means to be human.
Uncertain. Alone. Cratered by imperfections.”
In the design of this scene’s environment, we collectively decided to create an atmosphere dominated by the presence of the moon. Through shared ideas and discussions, we envisioned a captivating landscape where a curved path guides the player’s journey towards the moon. Despite the moon appearing within reach, even when the player reaches the end of the path, it remains distant and unattainable. This intentional design choice aims to evoke a sense of mystery, wonder, and the realization that some things may forever remain beyond our grasp.
> Music Visualisation (technical)<

When I learned that I would be collaborating with sound arts students, I was eager to explore the possibilities of creating audio visuals in Unity and VR. One concept that intrigued me was music visualization, a feature commonly found in electronic music visualizers and media player software. Music visualization generates dynamic and animated imagery that is synchronized with the music being played, creating a captivating visual representation of the audio. This process allows the invisible sound waves to take on tangible shapes, providing a unique and immersive experience. Applying this concept in VR adds an extra layer of realism, allowing users to truly immerse themselves in the visual and auditory world of music.

After making the decision to pursue audio visualization in Unity, I began my research to find similar cases and gain a deeper understanding of the underlying logic before formally designing the scene. Fraser, one of my groupmates, recommended an exceptional Tokyo VFX artist named Keijiro Takahashi, who had created several impressive audiovisual projects in Unity3D. I downloaded one of his shared works from Github and dedicated myself to comprehending the principles behind how audio waves were transformed into dynamic moving graphics. By studying and analyzing his work, I aimed to gain insights and practical knowledge that would guide me in implementing audio visualization effectively in my own project.
https://github.com/keijiro/LaspVfx
To be honest and unfortunately, the works I found from Keijiro Takahashi were mostly focused on coding, which was quite advanced for my current level of understanding. Although I had a strong desire to grasp the logic behind designing such beautiful audiovisuals, I realized that I needed to start with more basic projects that I could comprehend. That’s when I came across Peer Play, a YouTube channel that offered helpful tutorials. I selected a tutorial that seemed more advanced but visually appealing. However, despite my efforts, the project didn’t work as expected. I was aware that there might be some small errors in one of my scripts, and even after redoing it, the issue persisted. It was a frustrating experience for me at that time.
After regaining my energy and before diving into the formal design process in Unity, we had a group discussion with Eleanor, Alicjia, and Esther, who were responsible for the audio aspects of the visualizers. The purpose of this meeting was to align on the environment design and the type of visualizers we wanted to incorporate. While conducting my research, I came across various types and shapes of visualizers, which left me uncertain about which ones would best suit our project while maintaining a consistent aesthetic. However, Eleanor suggested that since the moon played a dominant role in the environment, we could opt for circular visualizers to mirror its shape. This idea resonated with all of us, and we agreed that there would be three visualizers placed along the curved path. Players would have the opportunity to walk and explore each of them, adding to the immersive experience of the scene.

Concept of Space A
Following the path to immerse yourself into the audiospace and exploreing differnet audio visuals.
Storyboard of Space A

Production and Prototyping (Visual)
In this part, the enivronment design and visuallizer A,B,C,D will be included in turn.
>Environment Design of Space A
In terms of the design in Unity, I firstly set up the environment.

Additionally, I used the texture of the moon from the Solar Texture. On week 10, we learned the Earth atmosphere shader from Herman. I really like that and did not care whether the moon have such surface atmospheric layer or not. So I just added it. Additionally, I employed the shader for the curved path, which we also learned in class, to further enhance the overall visual experience.

Furthermore, I downloaded the starry skybox and clouds. In order to realize the starry effect I made the particle effect and set this as a child of main camera.
https://m.tb.cn/h.UwDzBUG?tk=v9LHdLq5Q2T
https://m.tb.cn/h.Uw25fp2?tk=DRC7dLqgdgt
>Visualizer A
I successfully created the first visualizer in this scene, which consists of two circles, an inner and an outer one, with 40 evenly distributed points. These points are connected by lines of varying lengths that respond to the music being played.
Throughout the process, I gradually grasped the underlying logic behind audio visualization. The crucial first step involves utilizing Unity’s audio sampling method to convert sound waves within the 20Hz to 20kHz range into numerical values. Then, using scripts, these values are used to generate different visual effects and movements. This method forms the basis for all four of my visualizers.
Here is the link of the tutorial:
>Visualizer B and C
I created two additional visualizers following the tutorial by Peer Play. Similar to Visualizer A, these two visualizers employ the same underlying logic but utilize different scripts in the final step to generate their unique shapes.
What I find particularly captivating about these visualizers is that they not only utilize the changing audio samples to control their shapes and movements, but also leverage those numerical values to adjust the intensity of each material. This feature greatly enhances the overall visual impact and serves as one of the main reasons why I wanted to incorporate these visualizers in this scene.
>Visualizer D
The inclusion of this visualizer in our scene was actually a fortuitous discovery. Originally, our plan was to have only three visuals in this scene. However, one day Eleanor stumbled upon it in the Unity Assets Store. She downloaded it and shared it with me, asking if we could incorporate it into our project.
This particular visualizer resembled a music player interface, allowing players to select the music they wanted to play and view the corresponding visuals. During testing, I added the “XR UI Input Module” to the Event System, enabling successful interaction with the buttons on the canvas using VR controllers. Although this visualizer didn’t conform to the circular or rounded shape like the others, given the relatively limited interaction in this scene, we ultimately decided to include it as part of the experience.
https://assetstore.unity.com/packages/tools/audio/rhythm-visualizator-pro-88041
Deciding where to place the additional visualizer posed a challenge for us. With three visuals already present on the curved path, it seemed awkward and out of place to add another one there. Initially, I attempted to position it to the right of the path’s starting point, allowing players to interact with it before proceeding along the path. However, during playtesting, every player simply ignored it and continued straight onto the curved road.
Upon receiving feedback from Serra, I decided to try placing the visualizer on the straight road instead. I made the necessary adjustments to its position, and to my delight, it blended in seamlessly and looked great in its new location! This change allowed us to maintain a coherent flow within the scene while still incorporating the additional visualizer for player interaction.
Production and Prototyping (Audio) and Playtest and Final Outcome

Once the technical aspects were completed, we shifted our focus to managing and designing the audio. Our goal was to create an immersive experience where players could witness the visual movements of each audio but only hear the ambient sound upon entering the scene. As they walked along the path and approached each visualizer, the corresponding audio would become audible.
To achieve the desired effect of only hearing the sound when in proximity to an object, I made adjustments to the audio settings in the inspector. This technique was inspired by a mechanic taught by Herman during the previous semester, and it proved effective in enhancing the overall audio experience for players.
Unity Mechanics 4 scenes sample (28/10/2022))File

During one of our group meetings, my teammates collaborated to mix all the audio elements for this scene. We needed various components, including the ambience for the moon, audio clips for visualizers A, B, and C, as well as music for visualizer D. Alicjia did an excellent job mixing the ambience for the moon, capturing its emotional essence perfectly. As for visualizer D, my groupmates provided me with a list of music options, and after careful consideration, I selected six tracks that best suited the visuals and the overall atmosphere of the scene.
When it came to the audio for Visualizers A, B, and C, my groupmates requested that I experiment with different audio samples to observe how they influenced the color and shape of each visualizer. We played various audio clips and sought my opinion on their compatibility with the visuals. Based on the feedback, we made necessary adjustments to ensure the audio and visuals were well synchronized. During testing in Unity, Visualizers B and C exhibited successful movement in response to the audio. However, Visualizer A presented a challenge due to its unique audio sampling method, resulting in minimal movement when low-pitched sounds were used. Despite adjusting the range of values, the desired effect was not achieved. Consequently, we decided to switch to a high-pitched audio sample, which produced more pronounced movement and better alignment with the visual representation.

During the playtest, I encountered another issue where the visualizers would only move when the player entered their respective ranges. This meant that if the player was not within range, they would not see any movement, which could be confusing. To address this, Herman suggested adding particle effects to each visualizer as a visual indicator for the player to explore. I created unique particle effects for each visualizer, considering their styles, shapes, and audio characteristics. Finally, when implemented, the particle effects enhanced the overall visual experience and provided a clear indication to the player that there was something to discover. I am delighted with the final outcome, and I feel satisfied with the result. Here is the final outcome of the scene, showcasing the visualizers with their accompanying particle effects.

Space B — The Lab

Technical and Theoretical Research
Before beginning my research for this scene, I had a strong desire to incorporate as much interaction as possible, as Space A prioritizes the overall experience. With this in mind, I decided to explore the design of a small interactive VR game within the scene.
To gather inspiration, I started browsing through various VR games on itch.io. Among the plethora of fantastic games and ideas, one game called “Wild Chemist” from the VR Jam 2022 caught my attention.
While playing “Wild Chemist,” I was particularly fascinated by a mechanic that I referred to as “the mixer.” This mechanic allowed players to combine two different potions in a mixer, resulting in a new mixed potion. Inspired by this interaction, I wanted to explore the possibility of incorporating a similar mechanic into this scene.
By integrating the concept of potion mixing into the scene, players would have the opportunity to engage in a unique and interactive experience, enhancing the overall immersion and enjoyment of the VR environment.
https://b4lthasar.itch.io/wild-chemist
Another source of inspiration came from a watering mechanic I experienced in the new demon scene created by Unity for Unity XR 2.3. This showcase featured numerous incredible interactions that provided valuable learning opportunities. The watering mechanic, in particular, sparked some ideas that I could incorporate into this scene.
After players obtain the mixed potion through the “mixer” interaction mentioned earlier, they would be prompted to locate the corresponding pot and pour the potion into it, triggering various animations and effects. This concept adds an additional layer of engagement and interactivity, allowing players to actively participate in the scene and witness the results of their actions.
After thorough group discussions and considering the main mechanic of the mixer, we collectively decided on the environment design: a laboratory-like room. To add a connection to SpaceA, Fraser suggested incorporating a space theme, allowing players to gaze out of a window and catch a glimpse of SceneA’s environment, specifically the moon.
The inclusion of a window provides an additional visual treat, allowing players to witness the moon in SceneA. This connection to the broader SpaceA experience enhances the sense of continuity and exploration, reinforcing the cohesive narrative.

In one of our group discussion about the design section of this scene, we finally decided doing 4 fomulars, had 4 pots and 4 different animations respectively. Here are the instruction steps:
1 – Select a formula from the board.
2 – Plug two potions into the mixer to get your spceial mix.
3 – Take the mix to the correct pot in the lab.
4 – Pour the mix into the pot to see the magic.
5 – Find the correct card from the table to complete the magic formula.
Concept of Space B
Welcome to the magic lab! In this lab, you need to follow the formulas on the board to see the magic and complete the task.
Storyboard of SpaceB

Production and Prototyping and Playtest (Visual)
>Environment Design
The environemmtn of this scene should be psychedelic and cold silence, I finally decided using this environment that is in line with all my expectations.

https://m.tb.cn/h.UDFO6hN?tk=K35adLwIT5T
Next, I incorporated a meeting table and a board into the scene. To maintain a minimalist aesthetic, I opted to use glass materials for both objects. Additionally, I enhanced the ambiance of the scene by introducing a starry particle effect outside, creating a captivating visual backdrop.

https://m.tb.cn/h.UDXZPZM?tk=B2QgdLwvasc
>Mixer Mechanic
This is the main mechanic of this scene so I chose to do this at first.

At first, I modeled the mixer in Blender. And then added two types of potions in this scene — needed mixed potions and result potions.
https://m.tb.cn/h.Uxam8JQ?tk=o1DWdp0o1xX

After implementing the reset button, I proceeded to work on the mixer mechanic. The initial approach involved utilizing Herman’s puzzle mechanic to plug two potions into the mixer. However, I encountered a problem where the potions would be successfully plugged in, but with incorrect transforms. To address this issue, a slight modification was made. Instead of having two separate scripts (Mixeright and Mixerleft) attached to the right and left sockets, a revised approach was adopted.
After adding “puzzlepices.rotation = this.transform.rotation, it worked.
Multi_PuzzleSlot_Mechanic (Unity Package)File
After asking Herman, some changes happened on those two scripts. Those two could share the same scripts. So did some adjustments.


The nest step was to tauhgt this mixer the fomular that which two potions plugged in an then setActive corresponding mixer.

The logic of doing this is assign a different value to each colour tube, then add those two values after plugging, and if the results equals the same value as one of the result potions, set it active.


And finally was using the mixer manager to recognize the the result score and setActive corresponding result potion.
public class MixerManager : MonoBehaviour
{
// public int AmountofPotion;
public int Leftscore, Rightscore, result;
public int AmountofPo;
public bool SameMixA;
public bool SameMixB;
public bool SameMixC;
public bool SameMixD;
public ResultPotion RP;
public GameObject PotionA;
public GameObject PotionB;
public GameObject PotionC;
public GameObject PotionD;
public ParticleSystem ParticleA;
public ParticleSystem ParticleB;
public ParticleSystem ParticleC;
public ParticleSystem ParticleD;
public ParticleSystem ParticleZ;
public AudioClip PA;
public AudioClip PB;
public AudioClip PC;
public AudioClip PD;
public AudioClip PE;
public AudioSource AudioSource;
public bool Reset;
public int Timer;
void Start()
{
PotionA.SetActive(false);
PotionB.SetActive(false);
PotionC.SetActive(false);
PotionD.SetActive(false);
}
void Update()
{
result = Leftscore + Rightscore;
//TRUE
if (AmountofPo >= 2)
{
if (result == 3)
{
if (SameMixA == true) // PotA TBlack + TRed
{
//explode?
}
if (SameMixA == false)
{
ParticleA.Play();
AudioSource.PlayOneShot(PA);
PotionA.SetActive(true);
SameMixA = true;
}
}
else if (result == 5) //potB TBlack + TPink
{
if (SameMixB == true)
{
//explode?
}
if (SameMixB == false)
{
ParticleB.Play();
AudioSource.PlayOneShot(PB);
PotionB.SetActive(true);
SameMixB = true;
}
}
else if (result == 9) //potC TPink + TGreen
{
if (SameMixC == true)
{
//explode?
}
if (SameMixC == false)
{
ParticleC.Play();
AudioSource.PlayOneShot(PC);
PotionC.SetActive(true);
SameMixC = true;
}
}
else if (result == 110) //PotD TBlue + TOrange
{
if (SameMixD == true)
{
//explode?
}
if (SameMixD == false)
{
ParticleD.Play();
AudioSource.PlayOneShot(PD);
PotionD.SetActive(true);
SameMixD = true;
}
}
else
{
ParticleZ.Play();
AudioSource.PlayOneShot(PE);
//SameMixZ = True;
}
}
if (Reset == true)
{
Timer++;
if (Timer > 60)
{
Reset = false;
Timer = 0;
print("Reseted");
}
}
}
public void ResetButton()
{
Reset = true;
result = 0;
Leftscore = 0;
Rightscore = 0;
AmountofPo = 0;
}
}
Additionally, 5 explode particle effects to each result each were added (result A, B, C, D and wrong result).

However, during the playtest, it was noted that the two potions should have returned to their original positions after activating the corresponding potions. Unfortunately, if a player completes the first formula and wishes to perform the second mixture after obtaining the second set of potions, the positions of those two potions do not reset automatically. To address this issue, Herman suggested implementing a reset button. When the player interacts with this button, the positions of those potions will be set back to their original positions.
public MixerManager MM;
public AudioClip Reset1;
public AudioClip Reset2;
public AudioSource AudioSourceR;
private Renderer renderer;
private MaterialPropertyBlock propertyBlock;
private Color originalEmissionColor;
void Start()
{
AudioSourceR = GetComponent<AudioSource>();
renderer = GetComponent<Renderer>();
propertyBlock = new MaterialPropertyBlock();
originalEmissionColor = renderer.sharedMaterial.GetColor("_EmissionColor");
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Player2")
{
MM.ResetButton();
PlayRandomAudio();
Color randomColor = new Color(Random.value, Random.value, Random.value); //// Generate a random color
propertyBlock.SetColor("_EmissionColor", randomColor); // Set the random emission color in the MaterialPropertyBlock
renderer.SetPropertyBlock(propertyBlock); // Apply the updated MaterialPropertyBlock to the renderer
}
}
private void OnTriggerExit(Collider other)
{
if (other.tag == "Player2")
{
// Restore the original emission color
propertyBlock.SetColor("_EmissionColor", originalEmissionColor);
// Apply the updated MaterialPropertyBlock to the renderer
renderer.SetPropertyBlock(propertyBlock);
}
}
private void PlayRandomAudio()
{
float randomValue = Random.value;
if (randomValue < 0.5f)
{
AudioSourceR.clip = Reset1;
}
else
{
AudioSourceR.clip = Reset2;
}
AudioSourceR.Play();
}
Despite efforts to address the issue, there were persistent problems with the positions of each potion after pressing the reset button. These problems are difficult to explain, just showing the video provided below. Initially, I attempted to resolve this by adjusting the transforms of the original positions to 0,0,0 and removing any unused colliders. Unfortunately, these did not fully resolve the problem. As a final solution, I introduced a row of spare potions. If a potion gets displaced or bounces out of place, there is always an additional spare potion available for immediate use.
Personally, I really really like this mixer and happy with the final result :))))
>Animaitons for 4 Pots
When finishing part of Mixer, I started designing those four animations on each pot. There are Cloud, Flower, Woman and Cat.
There are four trigger areas set on those four pots, and set those resulted potions to different tags. For example, If the tag=”potionAA”, setActive this object and play the animation.

Also tried to add the shader to those 4 objects to control the opacity value and then animated them to achieve the fade-in and fade-out effects. This was my first time writing the shader graph myself.
However, I had some problems when animating the Cloud. It aimed that when the potion tagged “PotionAA” triggered the area, all of the lights shut down and then could start moving, raining at the end. At first, I have no idea how to let the whole light intensity turn into 0 and trued back to its original intensity value when the animation finished. So I tried several different ways. At first, I animated all 16 lights in this scene but when tested don’t know why just one light changed the intensity. So I tried to get components of all of those lights.


All of those lines comment in green were different functions I tried but did not work. So finally have no idea what to do and asked Herman for help. He suggested that I cloud made all of the lights in an empty GameObject and just SetActive true and false. Never thought this before, but suddenly realize!!!
>Card Slot, fomulars and instructions
After mixing potions and pure them into the corresponding pot and seeing the magic, the player needed to go back to the board to pick the most similar card and completed the formula.
In terms of the cards, Each formula will have a correct and confusing option. Those images are all from Canva. After downloading, I imported all of them in PS to remove the background.


And then I started writing fomulars and instructions. I also chose to made them in Canva, removing backgorund in PS and then imported them to Unity.
Regarding to fomulars, this is the first version I used which only had 4 fomulars on it. After playtest, Alicjia mentioned that this version was unable to clearly emphasized which pot player should go to after getting the mixed potion.

Additionally, after the playtest, Herman also pointed out that those formulas would have been more helpful and distinctly if they had an example. So I did some adjustments — added the example and changed the “Pot” indication on each arrow.

Regarding the card slot, I also used Herman’s puzzle mechanic but with a little edit. Only the right card can be plugged in. And when recognized the right card, the material of this slot changed to green.
When it came to providing instructions, I aimed to maintain conciseness while avoiding verbosity. However, conveying the necessary information to players in just a few words proved challenging. In the initial version before the playtest, I struggled to articulate the instructions effectively. It was during the playtest that Serra suggested creating a step-by-step list, such as 1.xxxxx, 2.xxxxxx, 3.xxxxx, to clarify the actions required. After refining this approach, the instructions became much clearer, albeit slightly lengthier. Nevertheless, the improved clarity brought me satisfaction, and I am finally content with the outcome.



Following the playtest, adjustments were made to the arrangement of items on the tables (as shown in the accompanying graph). Initially, the order of these items was the reset button, the mixer, potions, and cards, from left to right. However, this order did not align with the players’ intended sequence of actions. Furthermore, the presence of the mixer caused confusion and obscured subsequent instructions. As a result, the positions of these four items were rearranged based on the players’ intended operations.

>Watering Mechanic
Another mechanic where, when the player pours the resulting potion into the pot, a water particle effect will be triggered. I learned how to implement this feature by observing the new demon scene created by Unity for Unity XR 2.3.
Adding the On Tilt inspector on result potions. Set the threshold value and refernce the spout up target position. Finally added the On Begin and On End play and stop function.

Finally it worked!!!!!!! 🙂 So excited!
>Scene Transition Portal
I have implemented a portal in the scene that allows the player to return to the mainScene whenever they feel they have completed all the necessary tasks. They are free to use this portal at any time they wish, giving them the flexibility to come back whenever they desire.
>UI
When nearly completed all of the mechanics, I started paying attention on the UI.

Furthermore, I have included signs for each pot as an additional enhancement. Initially, I had placed small signs at the corner of each pot. However, during the playtest, Margarida suggested using more eye-catching signs, as it was difficult to distinguish the pots from a distance. I had not noticed this issue before, so I am grateful to Margarida for pointing it out. Thank you, Margarida.

Moreover, during the playtest, Margarida also helped me identify another significant problem that had gone unnoticed. Sometimes, when I grabbed the potion, it would instantaneously change position as if by magic. I had never given it much thought and attributed it to my own movement while holding the potion. However, Margarida expressed her concern, mentioning that this issue had troubled her during her previous VR game project as well. To address this problem, Margarida kindly shared a script with me and advised me to attach it to all interactive objects. I am extremely grateful for her assistance. Many thanks!!!!!


Production and Prototyping and Playtest (Audio)
I mixed nearly all of the audio in this scene myself.
There is the same date with final presentation of this project and the final submission of sound arts. Despite my understanding of their busy schedules, this rpoject is also one of their project collebrated with me and Abhay. Although I understand them and made a request for the audios of this scene two weeks before their deadline and attached each needed audio with the corresponding video, and also set the deadline was two day before the submission. Unfortunately, they continued to prioritize other tasks and neglected their responsibilities towards this project and still ended up pushing each other around and shrugged each other off. At the end, only Fraser mixed the ambience, cat animation sound and one of the exploded audio at the end. So I edited most of the audio in this scene myself and really enjoyed this process.
Here is a sound list of SpaceB:
The ambience
Audio for those 5 explode particle effects
Audio for each animation with adding animation event

Upon grabbing a tube, a corresponding audio will play to indicate its color. For instance, when the player grabs the red tube, an audio clip saying “red” will be played. The motivation behind this design choice stems from a report I came across regarding dogs’ limited color perception, known as dichromatic vision. Dogs possess only two types of cones and can only distinguish between blue and yellow. Considering this, I realized that players with color blindness might have difficulty recognizing the colors of each potion. To address this, I implemented audio cues, so when a player grabs a potion, it will audibly announce its color.

The mechanic I used for this, also for other grab-playAudio object in this scene also learnet from the the new demon scene that Unity made for Unity XR 2.3. Add the “On Velocity” inspector and reference the audio.

Audio for each card grab
Audio for the slot when the correct card snap into it will say “correct”
To add variety and engagement, I have implemented two distinct audio clips for the “reset” button when it is triggered. When the player interacts with the reset button, both audio clips will play randomly, creating a unique and dynamic auditory experience.

Audio when player grab the result potion and audio when pure this potion. Also learned this from unity demon scene.

Hearing the ambience from Main Scene when getting closer to the portal.
When player getting closer to the window, the music <好きだよ。~100回の後悔~ (English Ver.) – Che’Nelle> will play. I alwayse listen to this song when worked on this porject.
Final Outcome
Critical Reflection
In this VR collebrative exploration project, “The Parallel Cage,” our team embarked on a journey to create a captivating experience that transported players to different dimensions within a mysterious non-Euclidean cage. Through individual contributions to the Main Scene, Space A, Space B, we aimed to immerse players in distinct worlds with unique narratives, visuals, and audio elements. In this critical reflection, I will assess each scene’s strengths, areas for improvement, and potential avenues for further development. By analysing what was done well, what could have been improved, and what could be achieved with more time with gaining valuable insights into our project’s successes and areas of growth.
In Main Scene, I successfully created an immersive environment based on the theory of possible world with attention to detail. The visual production, including the design of the cage and the implementation of stencil shader and portals, effectively conveyed the desired atmosphere. The use of lighting and audio added depth and realism to the scene, enhancing the overall experience. The playtest feedback also indicated that players felt engaged and captivated by the non-Euclidean Cage.
In Scene A, while the visual and audio elements successfully created an immersive environment, there was room for improvement in terms of storytelling and interactions. Specifically, this scene lacked a cohesive and well-defined narrative that could engage players on a deeper level. While the visuals and ambience captured the essence of the parallel dimensions, there was a missed opportunity to incorporate a compelling storyline that would captivate players and provide a sense of purpose and progression within the space. By introducing a more defined narrative arc, character development, or interactive elements that advance the story, the Main Scene could have been elevated to a more impactful and memorable experience. This would have allowed players to emotionally connect with the world and feel a greater sense of engagement and curiosity as they explored those four parallel dimensions. Additionally, more emphasis could have been placed on interactive elements within the scene, providing players with opportunities to engage with the environment and enhance their exploration.
Given more time, one potential improvement for Space A would be to develop a captivating storyline that adds depth and intrigue to the parallel dimension. This storyline could revolve around a central character or group of characters facing a unique challenge or conflict within the parallel world. By introducing a narrative arc, players would become more invested in this project and motivated to explore and uncover the secrets hidden within this scene. Additionally, incorporating interactive elements such as interactive objects, dialogue choices, or decision-making moments could further enhance the storytelling experience. With a well-crafted storyline and interactive elements, Space A would not only provide a visually and aurally immersive experience but also engage players on an emotional and intellectual level, making their exploration of the parallel dimension even more compelling and memorable.
One significant achievement in Space B (the Lab) was my genuine excitement and satisfaction with the final results. This scene became my favourite within the project, and I am genuinely pleased with the outcome. Within this scene, I took the opportunity to explore various interactive elements, and I particularly enjoyed the mixer mechanic. Throughout the creation of this scene, expanding my understanding of interactive experiences in VR compared with what I learned in the last semester. However, it is important to acknowledge that I still relied on downloaded modelling objects for various elements in the scene, including the environment, potions, and particle effects. If given more time, I am willing to made all the elements in the scene myself, including the environment, shaders, and particle effects. By taking the initiative to create these assets, I would have the opportunity to exercise my modelling and VR environment design skills, further develop my artistic style, and ensure a cohesive visual aesthetic throughout the whole projects.
At the end, I have to say that I am genuinely pleased and exited with the final outcome of this project. As my sophomore year of college comes to a close, I found that I learned really a lot about VR and Unity during my time studying with Herman (Many thanksss to Herman). I still remembered this time last year I did not even know how to attach the reference. Through engaging in several interactions and mechanics within this project, I have had the opportunity to explore and uncover my passions in Unity and preferred style within the realm of VR. I found great satisfaction in designing these interactive systems and utilizing games as a tool for narrative storytelling, like writting things on the book. Thus, I would like to pay more attention on VR Game Design in my future. The process of working on this project has not only allowed me to grow a lot lot but has also sparked ideas and inspiration for my forthcoming final major project. Recently, totally attracted by the game <<Glitchhikers: The Space Between>> , I feel a strong resonance with this game, as it perfectly matches my style. Although I haven’t had the opportunity to finish playing it yet, it has already sparked inspiration within my FMP.
Epilogue
Space B 其中的Pot C的動畫 “the Woman” 是為了紀念我最好的朋友.
她是我的發小,我們幾乎陪伴了彼此的整個學生時代。在同一所小學,不同的初中,因為都想要留學就又在同一所高中念書。因為真的認識太久了,我們很瞭解彼此,也經常交換心事。我深知這段友誼的寶貴和來之不易,非常珍視它。最後因為志向不同,她去了紐約,我來了英國。然而距離和時差並沒有讓彼此變得疏遠,我們還是像以前一樣,有空的時候聊天,分享彼此的生活。
然而事情就發生現在去年的這個時候,那段時間她變得不太愛和我聯繫,每次打電話也是找各種理由草草結束。我隱約察覺到不對勁,但是那段時間和現在一樣也是學期末,自己太忙也就沒放在心上。況且我們那個暑假約好了在美國見面,就想等放假了去找她了再當面問問清楚。
可是我根本沒有等來和她見面。一天早晨我接到了媽媽的電話,她自殺了。
我明白這是她的選擇,可能真的有什麼事情令她痛苦不已,真的沒有辦法再繼續走下去了,以至於她選擇主動放棄自己的人生。我明白我要理解她,尊重她的選擇,可是我真的沒有辦法說服自己接受這個現實。我恨自己,當初已經察覺出她不對勁,為什麼不多花點時間陪陪她,是不是她就願意跟我講一講那些令她痛苦的事情,哪怕只是和我哭一場。或許是不是自己當初再哪怕多一點點的關心,最後也就不會有這個結果。那段時間自己每天都特別特別懊悔自責,覺得是因為自己的原因造成了這個結果,我甚至最後沒有去參加她的葬禮,不知道怎麼面對叔叔阿姨,以至於最後為了逃避這種想法開始整日酗酒。等父母發現我不對勁的時候,我已經患上了抑鬱症和焦慮症。
經過醫生的治療和開導,我慢慢好起來了。也不會總陷入那些無意義的想法漩渦。最後,我去探望了叔叔阿姨。他們說謝謝我陪伴了她,度過了這麼多的快樂時光。
我也會帶著這段回憶,連同她的那一份,好好地走完自己的一生。
“How are you these days, I miss you.”