Categories
VR Design Research Labs

VR Artefact – Development

Prototypes

To be honest, I am not much of a prototype person in general. I normally tend to build the scene first and then work on them directly because it saves me a lot of time. And that was something crucial in this project. Nonetheless, I did make 1 major prototype outside the clown scene, since Jason was working on it. Actually, I am glad I did it outside that scene because it gave me a lot more visibility and space to work with.

I also did some prototyping for the skyscraper scene. Mainly in the teleportation system for when the player falls and spawns on top of the buildings. But again, this was done directly in the main scene.

I feel like my prototyping would be talking about all the mechanics I use directly in each scene since I don’t do too much experimenting by blocking out stuff beforehand. So I’ll just explain all of those in the mechanic’s section. And meanwhile, I’ll mention here what could be considered a prototype. ¯\_(ツ)_/¯

Clown Scene Doors

This idea hurt my brain in more ways than I could imagine. :,) It was so difficult to make it work properly and I swear to God a cried a tear when I stopped finding bugs every time I playtested it.

The goal was to create a three-door choice for the player. I explained it in my sketch on the previous page, but basically, I needed two doors with jumpscares and one that was correct. Every time the player lost, they’d go back to the spawn point in front of the three doors and everything would reset (animations, positions lighting, etc). And the elements for each scenario would appear based on which door was opened and the triggers the player collided with. Also when colliding with the triggers, all the other triggers would disappear, the door behind would close and a timer would set off the lights. And for the jumpscares, I used a ray cast system so that when the player looked at the mirror/clown behind, it would set a coroutine delay system that would turn the lights on and off at specific times and enable the clowns in front of the player’s face. And finally teleport them to the spawn point where there’d be a cube that on trigger enter would reset everything. You can see how much could go wrong… It was horrible to code and an absolute nightmare to make it work perfectly. But I did it so a moment of silence for my remaining brain cells.

Skyscraper teleportation and crane

Another mechanic to hunt my dreams… I wanted the player to respawn on a specific building each time they fell and hit the coloured cubes corresponding to each stage of the level. But for some reason, I couldn’t make it work. After hours of experimenting with the first-person controller’s settings and reading threads online, I finally found someone that had a solution. I had to disable the player first and then change its position. And also had to make all the cubes within the player kinematic which also solved the crane problem.

Regarding this last issue, I couldn’t make the player a child of the crane and therefore wasn’t able to take the fps to the next building. But as I mentioned in the previous paragraph, it had something to do with the cubes having to be kinematic, otherwise, it wouldn’t work. It also took me a while to figure this one out.

Designing and Building the scenes

Normal Room Scene

“This is the first scene the player encounters. A nice room where everything is seemingly normal. There is a warm Jazz track in the background and the birds sing happily. That is until the player drinks the water.”

This room was fairly straightforward. Since it was more of a transitional scene I didn’t have to focus as much on the mechanics and simply had to create a cozy-looking atmosphere. To do that, I used slightly warmer tones and replace the asset’s floor with a wooden texture. For the outside environment, I simply used a skybox image. However, this went through a couple of iterations because when I played the scene, the image looked blurry and had some weird marks. In the end, I added a couple of trees to make it more isolated but still comfortable enough that the player wouldn’t be alarmed by it.

Finally, I added a water bottle asset, attached a particle system to make it obvious to the player, and then added a teleportation script. I’ll talk more about this in the game’s mechanics section.

Weird Room Scene

“After passing out, the player is teleported to the second scene. It’s an iteration of the first room, and it marks the beginning of the horror game by setting a dark, unsettling atmosphere. Once the player walks out the door, the game starts.”

This room was simply a different iteration of the normal room. I made a few changes to the lighting and global volume, and that was pretty much it.

I decided to go with a darker blue for the overall aesthetic and to give it a mysterious, offputting look. Then, I used contrasting colours such as green and red to really give the scene an ominous horrific vibe.

The red light obviously had to be used for the door to symbolise danger, but also alert the player to its existence and give them no choice but to investigate it.

Skyscraper Scene

“The first level is acrophobia (fear of heights). An extreme mental and physical challenge where the player not only needs to find courage but also physically move in order to escape this terrible parkour-like challenge. It is set in a city with mostly skyscrapers and surrounded by a misty fog that only intensifies the vertiginous feeling.”

This scene was probably my favourite to design. Considering the fact that it happened during the day, it was much easier for me to visualise all the elements and come up with something pleasing to the eye.

Again, I used assets from sketchfab for the building used for the obstacle course and all its elements. On the other hand, I used a unity asset of New York I found for the background buildings. Then I added a fair amount of fog to give a more vertiginous sensation to the player. I made it blue for the exact same reason I mentioned above. It gives this sort of fear of the unknown kind of feeling to it.

This scene is not as dark or overly sensory as the other levels, because the focus is not making it look scary. If someone has acrophobia, they don’t need to be exposed to heights at night to be absolutely petrified of it. Furthermore, I liked the fact that it gave the player a false sense of security by thinking “Oh… it doesn’t look that bad…”. Obviously, it gets much worse quickly and that slow but steady progression is also what makes the game more intriguing.

Clown Scene – Night

“Once the player tries to grab the balloon, they officially start level 2, Colrouphbia (fear of clowns). A terrifying experience set in the same abandoned amusement park, and it shatters the player’s trust by surprising them constantly with jumpscares and horrifying soundtracks. Probably the most relatable scary scene, as it mimics the sort of feeling we get when watching horror movies. The goal is to get to the end. And as simple as that sounds, it is definitely not an easy task.”

Even though it wasn’t my responsibility to do it, I still helped design and retouch the clown scene. Overall, Jason did a very good job at adjusting the lighting. However, I did make a couple of changes. First of all, I adjusted the terrain a bit by making the hills a bit lower. Then, I replaced the lamps with something more cohesive and modern and adjusted some of the lighting for the main interactions and assets. Afterwards, I added the models Jason got from Taobao. This was a whole process… I had to use Unreal engine to open the files and export each one + all the textures and then add them to the main scene. Finally, I took care of the final stage by adding the 3 doors and all the mechanics involved.

We ended up with a very dark scene, which was definitely great because there was a lot of empty space. But the player can’t tell…

The lighting was again a matter of contrast between the colours green and red to unsettle the player throughout the level. Moreover, the models for this scene were crucial to creating an abandoned park scenario and Tabao was definitely a saviour because it gave us a very complete package of assets for dirt cheap.

And even though I would like to make some major changes to this scene I feel like was very effective, overall.

Clown Scene – Day

“When the player finishes level 1, they are teleported to this intermediate scene. It’s quite simplified and sort of bizarre. It doesn’t seem real, even within the nightmare scenario. It’s weird and it looks like the player can see the building blocks of the game as if it were a dream. It throws them off for a second and nothing prepares them for what comes next.”

There isn’t much to say about this scene. It is a very brief transitional scene. I simply changed the skybox and removed all the lights. Jason took care of the asset changes and created the scene.

Overall it just had to look somewhat normal and not scary to give the player a false sense of safety and a somewhat confused feeling.

Hallway Scene

“Finally, level 3 is Claustrophobia (fear of enclosed spaces). Taking place in a never-ending corridor, the player is not only challenged with puzzles but also emotionally pressured by the time constraint and a growing but steady realisation that the walls are closing in. It is necessary to find all the solutions to the challenges in order to get out. Otherwise, the player is stuck in a perpetual cycle of death. Once they open the correct door, they find a water bottle and are suddenly reminded of how it all started. But they have no other option. They must drink it.”

For the last level, I used a very fitting corridor model from sketchfab. It fits the aesthetics perfectly, and with the appropriate lighting and some global volume effects, it was looking sharp. I did have a problem later on related to the walls moving and animating that. The mesh was all fused so naturally thought “I’ll fix that in blender”. Oh boy, was I wrong… The mesh was a mess! it was so bad that each time I tried to separate it and import it, it had holes everywhere and was ruined. So the solution was to shrink the entire corridor instead which worked fine but wasn’t ideal. Nonetheless, it worked.

For the stars and the map, I used Illustrator to create the shapes and the sprite images. The reaming models were also from sketchfab.

Main Menu Scene

The main menu scene was very straightforward. Jason create the main menu panel with all the elements necessary, and I just added a black box around the play to create a neutral dark environment. This way the user doesn’t know what to expect but is still unsettled and intrigued by it. And to create contrast, I made the letters white and red, once again to communicate danger. Then I simply disabled the walking mechanic and poof, the main menu is done.

Update: later on I also added the title in bright red letters to mimic those bright lamp signs that make that annoying buzzing sound. This way, it stood out.

Credits Scene

“It all ends in this room. Where it all started. It all looks like it is back to normal but not quite. This final iteration of the first two rooms introduces elements that were seen throughout the game. The city outside, a picture of a clown, the playing cards from the hallway, and even a TV. It makes the player question whether everything they went through was real. Maybe it wasn’t a dream? Or is it still a dream? It’s up to you to decide.”

And last but not least, came the credits scene. And another iteration of the first “Normal Room”. Only this time, it needed to have elements from all the levels to make the player question whether it had all been real or not. The first two elements were easy to come up with. Cards spread around the room and a picture of a clown. But I didn’t know what to do for the skyscraper scene. Add a crane? Nope, don’t make sense… And then It hit me. What if when the player looks outside, they see the same city as the skyscraper scene? Chef’s kiss. It worked out perfectly! Then all that was left was for Jason to add the TV and make the credits video e Voila, the last scene was finally complete. Also, there is a little surprise for the player as well muahaha.

Game mechanics

This section is really difficult to summarise because there were so many scripts but a lot of them used similar/the same mechanics so I’ll do my best to summarise all of them and explain where they were included. I think in the past I was a bit confused by what game mechanics are but I think now I understand it a little better. I understand now that I am not to mention every script individually but instead, the mechanics that are within them and that govern the game and the player’s options.

  • Walking mechanic – all scenes except MM

This mechanic was automatically included in all levels. However, it was deactivated in the Main Menu because it wasn’t necessary.

  • Parent mechanic – NR, L1, L2N, L3, CS

The parent mechanic was mainly used for any interactable with the scenes, for example, the bottles, playing cards, pieces of paper or the key. However, it was also applied to the crane’s cart which became the parent of the fps when both collided.

  • Grab object mechanic – NR, L1, L2N, CS

This mechanic goes along with the parent mechanic for all interactables in this game. It allows the player to hold any objects that have the interactable script.

  • Pop Menu mechanic – all scenes except MM

This mechanic was activated by the Y button in the left-hand controller, and it can change the flow of the game completely by taking the player to other levels or the main menu.

  • Pass out mechanic – L1 and L3

This mechanic firstly was activated in the normal room with the water bottle. And then twice (if the player dies) in Level 3, by either getting trapped between the walls or once again drinking from the water bottle that marks the end of the game.

  • Level progression/ regression mechanic – all scenes

This progressive mechanic was activated at the end of each level, and it allows for a continuous progression from challenge to challenge. The only exception is the Main Menu, where the mechanic is activated right at the beginning of the scene. The second exception is the pop-up menu where this mechanic can be applied and the only one that has a regressive mechanic by allowing the player to, for example, go from level 3 back to level 1.

  • Reload level mechanic – L1,2D and 3

This mechanic is true for all the scenes that are included in the pop-up menu, meaning if the player chooses to level 2 while in level 2, they will reset the level and start right at the begging which in this case would mean the clown scene (day version).

  • Activate animation on collision mechanic – WR, L1, L2N, L3, CS

It is a very generalised way of including any collision interactions that resulted in animations. These include anything from the doors to the crane, the clowns moving, the carousel speeding up or the hallway shrinking. They were all tag-based conditions that resulted in the activation of the necessary bools to trigger animations.

  • Activate lights on collision mechanic – L2N

This mechanic was only used for the clown scene (night version) to activate deactivate/activate the lights on collision with a trigger. It was used for the glitch light in the path and the room with the 3 doors. Much like the previous mechanic it worked by using the “Player” tag and then turning on or off the desired lights.

  • Activate/Interrupt sound on collision mechanic – all scenes except MM

Much like the previous two mechanics, this tag-based logic worked for all the sounds that were not activated at the begging of the scenes and needed to be played or interrupted at specific times. For example, riding the crane cart, playing the sounds when clowns showed up or stopping all sounds when the player opened the door in level 3.

  • Activate object on collision mechanic – L1, 2N and CS

Same logic as the previous three mechanics, but instead activated objects. For example the clowns in the clown scene (night)and Credits scene or the window cleaning platform in level 1.

  • Teleport mechanic – L1, 2N and 3

The teleportation mechanic was crucial for all levels. But this is especially true for the skyscraper scene, where the player would benefit from having spawn points instead of restarting the entire level. It was also used for the clown scene(night) to take the player back to the spawn point in front of the final stage. And finally, it added a sort of “cheating mechanic” to the last level by allowing the player to move from one end of the corridor to the other in a blink of an eye, at least for the players who notice it anyway.

  • Activate gravity mechanic – L1

Only employed in the last bit of the first level, this was a tag-based collision that activated the gravity component of the wooden planks, which made them fall in the correct timing and let the player land in the precise spot to move to level 2.

  • Climbing mechanic – L1

This mechanic was used solely for the ladder climbing stage in level 1. It was extremely complex to code and it required me to remove major scripts from the fps in that scene for it to work. In the end, I think it was very successful and never gave me any big headaches. It was simply a strenuous process.

  • Raycast mechanic – L2N

Finally, there was the Raycast mechanic, used only in the last stage of the clown scene(night). It was activated by a tag-based collision and it allowed the player to activate objects(clowns) by looking at specific elements in the room.

MM – main menu

NR – normal room

WR – weird room

L1 – Level 1

L2N – Level 2 night

L2D – Level 2 day

L3 – Level 3

CS – credits scene

Gameplay

Playtests and feedback

First Playtest – Miranda

Miranda was officially the first outside person to try out our game. At the time we only had the hallway scene and the skyscraper scene for her to play around with. She really enjoyed the experience and suggested that we add birds flying or people screaming at the skyscraper level.

Good thing she tested it because there was in fact a problem with the wooden planks in the first level. But overall, very helpful playtest.

Second Playtest – Serra

This playtest was hilarious! It was the first time we got a reaction from someone to the clown jumpscares and to the entire game in one go. Moreover, we received very useful feedback from Serra.

She was the first person to get motion sickness from our game. We were not expecting it but she said it had probably been the lights from the hallway level. This was very important for us, because one of my main focuses throughout the entire process of making this game, was to create something interactive and playful, while not sacrificing movement and action too much, and still providing a comfortable experience for the player. I took it into consideration a tweaked the lighting in that scene.

There was something else that I noticed during this playtest. When it the time to climb the ladder from level 1 came, she couldn’t reach it, due to her height (hahaha). But I was very intrigued by this because she could jump to reach it, which added a layer of realism to the game. So decided to keep it! The same thing when riding the crane cart, sometimes I had to lower my head to get in. But it makes sense! In real life, we have different heights and sizes and therefore experience the physical world differently.

Third Playtest – Myself

This isn’t really a fourth or first playtest. I can’t really count the number of times I had to play each level to make sure it was working or to fix any bugs. But during each playtest I’d always find something to be tweaked or an unexpected bug. This was especially true for the last section of the Clown Scene. As I wasn’t teleporting the player to different scenes each time they chose a door, resetting all the positions, lights and animations was an absolute nightmare and there were always some things not working correctly.

Sometimes, when the clowns appeared right in front of my face, they would glitch with the lights. At first, I thought it would be cool to leave it like that and embrace the glitch. But I was too afraid to incorporate it into the project due to unforeseeable outcomes. Maybe after I’m done submitting this project, I’ll play around with that…

But this is all to say that this process was truly complex and I think it’s also got something to do with the way I code. Compared to the last project, I feel like I am way more concise and organised in my coding. However, there is still a lot for me to learn.

Forth Playtest – Abhay

Abhay was the playtester for our presentation (Thank you!). He was very enthusiastic and was able to grab the crowd’s attention. Unfortunately, he knew about some of the jumpscares so he saw them coming sometimes. But still, very successful overall. Also, he couldn’t reach the ladder either hahahahahha.

And I noticed one small problem. Because this stage has to haunt me until I submit this project… In the 3 doors stage, when he went to the correct room, it didn’t activate the lights or something was off but he couldn’t see the image I put there. I don’t know if he was just looking at the wall or if there was a bug but I’ll have to look at it. It’s weird because it worked for me fine…

The Sound

Sadly I shouldn’t have to write about this section as much as I’m going to but I have no choice since I ended up having to create/find online most of the sounds. I know it wasn’t my job and I wouldn’t have been penalised for it, but I take pride in the work that I do, and I knew the sound was a crucial part of our game. So I took matters into my own hands and created something I could use for the game.

I used various sources such as YouTube and Zappslat. And software such as Adobe Audition and Bandlab.

I created things like the voices and beats for the hallway scene and edited the creaking sounds as well. I also did the clown voice saying “bye-bye”. And I edited the background track and the doll’s pitch as well. Everything else was either from the very few sounds the Sound Art students gave me or mostly from YouTube and Zapslat.

As for each scene, I mainly just created Audio Sources and also added Audio reverb zones to make the audio more realistic and coherent to the environment. Finally, I occasionally used an audio mixer to make some clips a bit louder.

https://www.zapsplat.com/

https://www.bandlab.com/feed/trending

Final Crit – Presentations and Feedback

The presentation was a resounding success. From the commitment from everyone to dress up to the final projects, everything was really inspiring and made me feel proud of our class!

Furthermore, the feedback was very positive and extremely useful as well. We got so many different opinions, but in the end, we felt very satisfied with all the responses. Thank you to everyone!

I hope all the other groups were equally satisfied. Everyone should be proud of what they did (background clapping).

(Also, good luck trying to understand my notes…)

Changes after presentation

I made a few changes to the game after the presentation. Thankfully minor ones, because the feedback was mostly positive and because I didn’t have a lot of time to change everything. But I”l list all the things a tweaked:

  • Add a particle system to the final water bottle;
  • Added a carpet on top of the floor in the Hallway Scene. this way the player can get the illusion that the walls are moving by looking at the carpet, instead of shrinking which was much less noticeable;
  • I made the creaking sound of the walls progressively louder to add a 3D effect and make the shrinking more obvious to the player;
  • CHANGE DOOL TO GHOST AND PUT IT ON THE SWING!!!!!!

I didn’t change everything though. Serramentioned changing the lights for some of the scenes and the aesthetic for the skyscraper model as well. But I think it’s too much for the time I have to finish all the projects, and honestly, I am pretty happy with the aesthetics. Changing the entire look of the skyscraper scene would be too much.

Final Work Distribution Table – who did what

SceneLayoutCoding
– Main MenuJason and MargaridaMargarida
– Normal RoomMargarida and JasonMargarida
– Weird RoomMargaridaMargarida
– Skyscraper SceneMargaridaMargarida
– Clown Scene (night)Jason and MargaridaJason and Margarida
– Hallway SceneMargaridaMargarida
– Credits SceneJason and MargaridaMargarida
– Clown Scene (day)Jason and MargaridaMargarida
– Adding SoundMargaridaMargarida

Sources

Youtube

As always, YouTube is a crucial source for building our projects. It’s basically our second teacher when we don’t have class. There are tons of tutorials that helped us through the making of this game. However, this is not to say that all of them worked and there are always issues and bugs along the way. But it is part of the process to mess up as well. But overall, it was the most important source that we used to make this game.

https://youtu.be/qKDzZd0sjxQ

ChatGPT

It’s funny how normal it feels to use chatGPT nowadays. As always, it helps me turn my thoughts and mechanics in my head into code. Once again, it doesn’t do all the work for me. But when I don’t know how to write something specific in C#, it’s a great source that gives me the appropriate code for specific actions within a mechanic. Way better than having to find the solutions in online threads or on youtube.

Moodle – Herman

Once again, Herman, thank you for all the tutorials and help you gave us throughout this module! The videos, files and were extremely useful and effective! The feedback was also very important and helped us make some crucial changes in our game before and after the presentation. Thank you so much for your dedication!

Working as a group – thoughts

I don’t want to mention this too much in my critical appraisal but I still want to express my opinion in regards to this collaboration and my overall experience.

At first, I thought everyone was excited and committed to making something great! It felt awesome to know that I was surrounded by people with such diverse knowledge and willingness to work hard. We had meetings, and even almost had one of the sound art students involved in the 3D process…

But then it all shifted very quickly. I gave them a sound list and videos, I organise all the meetings, and they started bailing on me. It was so frustrating!

The thing is, I love group projects because we not only get to share and distribute work equally but we also expose ourselves to other types of knowledge and people that we will find in professional scenarios as well. However, when a group doesn’t do anything, it makes it hard not only to do work properly but it’s almost impossible to be on good terms with them afterwards. It’s not about the grades or the project. It’s the attitude and extreme lack of respect for us as individuals. At least try!

Some of them did send us some sound to work with, but they posted them weeks ago and it wasn’t even for the main scenes… A few days before the presentation, they sent me a couple of audio clips as well, but again not enough to cover the entire project.

And as if it wasn’t bad enough already, after the presentation some wanted me to desperately add their sounds to the game as if they suddenly woke up to reality. Besides having other submissions(which I told them one week before the presentation), I also had a lot to do in this one week. There is no way that I’ll be replacing all the sound clips now… It’s simply too much… And one of them even complained… Only of them showed up to the presentation… Honestly, I could write a critical appraisal just on this subject but I think this gets the message across perfectly.

Overall, I found this project way more stressful than it had to be since I had to take over almost everything. I need a break.

Leave a Reply

Your email address will not be published. Required fields are marked *