Early Level Design and Concepts (Jan)

Looking back at the first concept world designs a lot of the elements in them made it to the final project. Time restraints prevented us from implementing the second midground layer in the underwater scene and the beach party scene’s 360 video evolved into animations, but many of the artifacts and spawned objects made the final cut.


Creating A Proximity and Spawning System (Mid Jan- Mid Feb)

The proximity and spawning system was the first major mechanic I focused on and was also the second hardest. The goal was to check if the multiple artifact objects (the puzzle pieces) were in close proximity and to spawn a collection object/memory object (the completed puzzle) if they happened to form a specific collection. 

The image above shows the first successful implementation of the proximity and spawning system which created a collection from the can/beer, lighter, and wood artifacts that spawned a bonfire memory object. Other than the general woodpile, assets shown, and picnic table, the world displayed, the Beach Daytime World changed drastically by final build. 

The proximity implementation evolved from calculating the distance of objects to using sphere triggers and colliders.

The images above show the final implementation of the proximity system. All the required artifacts to make each Beach Daytime Collection are in proximity of each other and a collections page, that can be opened by pressing the Y Button, displays the combinations. In the bottom
image the grouped artifacts are seen in the bottom left and the spawned collection

objects/memory objects are to the right. The spawned objects include: The guitar, cooler,stereo, bonfire with rack, and a group of turtle eggs hatching outside of the image.


Implementing a 3D Inventory System: A Pail Full of Bugs (Mid Jan - Early March)

Creating a pail that could contain things took a lot of work between Nik during earlydevelopment stages and I during later ones. The pail is the second major mechanic and it wasthe most difficult. It took three-weeks for it to be able to contain anything using compoundcolliders and even then the artifacts when collected would fall out and collide weirdly with eachother and the side of the pail. Any small movement could jar it, break it, and make the artifactscollect jump spastically.

The final pail implementation was a complete overhaul that is more complicated but works fairly smoothly. The first implementation did not have a handle so I added it handle and pail body connected by a hinge in the final version. The hinge made the pail look great, but it took a
longtime and many tests to figure out the proper settings to prevent it from breaking and jumping around when the player drops it, grabs it, and moves it. Although it currently is not optimal, it is doing its jobs and more development time could show an improvement. The image
above shows the pail breaking when it entered a portal, this was solved by making it kinematic on the frame it enters. Still, it is a good example of what most of the pail glitches look like, even during the first implementation.

Finally, to solve the jumping and colliding artifacts issue I created a 3D inventory system that lets the player use their right thumb stick to cycle through the objects they collected. I wanted to preserve the feel of carrying around a bucket and actually using it to collect the artifacts, so the 3D pail inventory system was born.


Creating Portals: Three Scenes in One (Feb)

The approach to spawn the portals is similar to how the collection/memory objects are spawned.Instead of through proximity, the pail inventory recognizes when a group of artifacts that can fulfill a particular world’s collection is collected, so it will spawn the portal to that world. The images above show the exposed Artifact Collection’s script in the inspector keeping track of possible collections based on the artifacts collected. 

The portals themselves are based off of Brackey’s Smooth Portals tutorial. At first the textures did not work in VR, so I had to alter the custom shader to work with VR Single Pass Instancing. It did work, although slightly offset with a low resolution, but for some reason it stopped working late March and is currently not working at all in the final build. Without connecting to the Oculus it appears to be fine.


360 Animated Underwater BG Skybox (Mid March)

One of the assets I was really excited to learn how to do was an underwater 360 background scene in Blender. I found some amazing tutorials, but unfortunately when it came to rendering, I realized that the time it would take to render the volumetrics into a 360 PANORAMIC video would take days without a render farm. At the moment, Blender can only render equirectangular panorama using the Cycles Renderer. I could not afford to use my computer solely for rendering, so I decided to wait until I had time. Sadly, I have been unable to put the video
together for the final build. Overall, it was a good learning experience and I definitely want to fully create an underwater blender scene in the future.

The still renders above took about 8 min each and they are not even Panoramic. I also realizedthat my final render passes were not high enough to render out the volumetrics and lightingeffects. It was interesting to see that the viewport render retained most of the effects.


Animating Spawned Collection Objects/Memories (Late March)

My decision to animate some of the sea life (the turtles and fish) that made up several of the spawned collection/memory objects was largely unplanned. After a long stretch of implementing other assets in a rather formulaic fashion, I needed a break, so I decided to try to liven up the
different worlds by adding animations. At first, I tried animating using Unity’s timeline, but I quickly realized how time consuming it was to make the animation smooth. I ended up creating the animations using Follow Path in Blender and animated the path’s spline handles to create variations in the animation. In order to export the animation, I had to bake the action by tracking the fish and turtles motion visually, as the transform values don’t change when you use Follow Path.

The strangled/caught fish, strangled/caught turtle and turtle hatching animations. The turtle hatching animation is more complex than the others, it consists of three different path animations that have their position (angled out from the turtle eggs), path version, and animation
speed randomized using a custom script.


Adding a User Interface: Main Menu, Collection Page, and Controller Prompts (Early April)

The Main Menu was surprisingly easy to implement using the XR Toolkit. After adding Nik’s Title it really came together (even if it is simple). I had initially planned on adding a toggle to turn on tutorial prompts with popup controller graphics, but I did not have the time, so I added a clean Oculus controller scheme I made in illustrator to the Main Menu. Still, I made individual vector graphics for each button on the controller, therefore the assets are in place to create tutorial prompts in the future. The Main Menu can be toggled open and closed by pressing the X Button, and pressing start will resume the experience. As an extra effect, I froze the player’s movement (except head and controller) whenever the menu is open.

The collection page can be opened by pressing the Y Button. It was significantly more complicated to set up compared to the menu, because it slowly fills out as collections are found and created. The main purpose of the page is to give the player an idea of how many collections
exist and how many artifacts need to be combined to make each collection. Unfulfilled collections are represented by blank squares while complete collections show the artifacts that were combined. The 2D artifact graphics were illustrated by Nik.

These pail inventory tutorial graphics were my first and only implementation of a prompt system.Unlike a 2D inventory system, a 3D system is usually less clear and common, so I felt there was a need for instruction. I did not have time to implement more prompts in the final build, so this is also a good example of what future prompt implementation may look like. The arrows turn pink depending on which way the player cycles through the inventory. The controller reminds the player what thumb stick to use. The graphics only show up when the pail is grabbed.

Using Format