Logo
White Room

White Room


 
White Room is surreal experience where you and a virtual companion attempt to escape from a vast and complex three dimensional maze. Be forewarned, there’s more than one puzzle to be solved.
 
The game was developed for a one week challenge in 2014 and was made for the Oculus DK2. I worked on the coding of the game.  Voice acting was done by Nicholas Adams. Script writing and 3D modeling was done by Roman Moskvichev and Joshua Salvador. All of us took part in game design.
 

C#

The main programming language I used to code the game.

Unity3D

The engine used.

Oculus Rift DK2

Worked with the Rift and Unity’s Integration.

Git

Used Git with Bitbucket for version control.

Visual Studio

The IDE used with Unity.

Blender

Used for creating the model used in generating the maze.

Illustrator

Used for pseudo code and problem solving.

Microsoft Excel

Used to manage all tasks for me and other members.

Xbox Controller

Integrated as the primary form of input.

 
 
 

3D Maze Generation

2016-02-19_204055

 
The most complicated problem I ran into with White Room was the generation of the maze itself. Not only did we only have a week but I barely had any experience in procedural generation. I had an idea of what kind I maze I wanted to make but wasn’t exactly sure how I would go about making it. I wanted to test out mesh generation but I simply didn’t have enough time to take the risk of learning it. Instead I decided to build the maze using some kind of pre-made mesh. A cube made the most sense but it was so generic that it was hard to make paths just using it. I spent most of my time in Blender playing around with shapes and the one that made the most interesting results was this Tetris-like L piece.
 
MazeProgression

 
Using this piece I made an algorithm that would spawn another piece and randomly rotate it at set points (the orange ones in the figure above). I gradually increased the amount of pieces and I managed to make a 3D maze that looked even better than what I imagined.




Procedural Details

Screenshot_20_08_2015_23_18_31

 
The maze looked cool but I wanted to add some more detail as well to add more variation and make the world feel more immersive. To do so I sketched out and tested possible spawning positions for details and came up with certain points near the edges.  Other than paintings I avoided spawning objects near the center as I wanted there to be a clear path. A pillar right in the center of the path not only clutters the path but looks bad in general. After that I messed with randomization and spawning parameters to get a nice balance of performance and detail within the world.



 
 

Images

Screenshot_20_08_2015_22_10_304

Screenshot_20_08_2015_22_10_11

Screenshot_20_08_2015_22_11_24

  • Remnith
  • Hyper Psychic Gauntlets