Udacity VR Developer Course: Puzzler Project


I am currently enrolled in Udacity’s VR developer course. My first project, named Puzzler VR, was about learning how to create a VR game using Unity for Android devices. I have only utilized the Oculus Rift and Vive headset + Unreal Engine to create VR experiences, so this was new to me and I was ready to jump in!

The goal of the the project was to design a puzzle experience that would allow the user to  be able to walk through a space, play a Simon Says like game (choose the correct order of spheres in sequence), and restart the game. Most of the code and models were prepared for the students, which were handy foundations to begin building the game.


Firstly, the class taught the designer to imagine a user and draw out some options of what they would like to see in her game. I came up with a few ideas here:


I imagined my user as someone who would enjoy puzzle games and who would have a basic understanding of VR apps for mobile app. I also imagined a few alternatives to the “dungeon” environment, including a spooky cabin in the woods and a circus themed puzzle.

Initially, I found Unity quite easy to use. I was able to build the dungeon environment with the models Udacity provided, even including some mountainous terrain as backdrop. Also included are the beginnings of a user interface to allow the player to start the game, seen in the screengrab below:


Also important were lighting and some assets to give the user a more realistic idea of the their environment:



When I uploaded the beginnings of my game (just the dungeon environment I built), I found the scale to be WAY off on my mobile device in comparison to the preview on my PC screen. My boyfriend, who is about 6 inches taller than I am, even felt that the door was way too large. The one aspect he really enjoyed playing the game were the sound effects (added at a later point- I tested to game on him quite frequently!) Here he is testing out the game:



Once I finally got the project to the correct scale (after a few iterations), I could begin implementing the game mechanics.


Firstly, it was important to ensure all user interfaces correctly worked when clicked. This included a start button at the beginning of the game, the Simon Says game play itself, and the restart button. Again, most code was provided for us, however, I was able to learn Unity’s interface through the course when implementing it with my  game objects. Here is the setup for my game logic script:


Lastly, the class taught us how to utilize sound in our game to add another aspect to our environment and provide a better user experience. From the image below, you can see that each sphere has audioclips associated with it so that when the user chooses correctly or incorrectly, the sphere will play the sound accordingly.


And that was it! I was ready to test out my game. See the video below for the final run through of my basic Simon Says “Puzzler” game. I purposefully (maybe…) guessed the first sequence incorrectly to show how the game restarts and the spheres let you try again until you succeed and move to the restart user interface.

View the video below for the final gameplay:


Cheers, hope you enjoyed the video! I am excited about moving forward with Unity for not only mobile devices, but for my Oculus rift as well (hopefully keeping the frame-rate within a reasonable amount :D) This first project was extremely helpful in introducing me to Unity and creating a playable VR game on a mobile device.

Learning Unreal Blueprints for VR II


The second project for Udacity’s Unreal program was called “Hide in Seek”. Building upon the foundations taught in “Kitchen CleanUp”, the game required more complex blueprint coding. The premise was to initiate the game, hide an object around the apartment, and have the user utilize locomotion to move from point A to point B to “destroy” the object. Each destroyed object would gain the player a point. I decided I would create a can and a trash bin (both designed in 3dsMax) for the game so the user would effectively be “recycling cans” to gain points. Again, my job was to:

  1.  Create a player pawn with a controller that had the ability to interact with the can (using blueprint interfaces)
  2.  Spawn a can at a different location every time the user found and recycled the previous can (randomly spawned at target points, as used previously in KCU)
  3.  Create a recycling bin that would read if a plate was in it and destroy it (and once destroyed, a new can would need to be spawned)
  4. Develop a timer and score system that the player could see, a method to start and end the game (event dispatchers) and a start menu (interface widgets)
  5. Lastly, but most importantly, create a locomotion method that would move the user around the apartment. Here is the method I used- a line trace to draw a cylinder to identify a location where the player could move:


Here’s a preview (another grainy GIF rather than video):


Main menu created in Photoshop + Illustrator:


Can UV texture created in Photoshop + Illustrator:


Low-poly can:


Low-poly recycling bin (a basic blue texture was later added in Unreal):


Learning Unreal Blueprints for VR

I enrolled in Udacity’s Learn Unreal VR Program to gain a better understanding of Unreal Engine and to learn blueprint coding. I have used my VR headset for gaming and 3D modeling purposes, but never to develop any sort of interface or user interaction. As these are growing interests of mine, this course was a perfect fit to gain new skill sets in these areas.

The course’s primary focus was not to teach you how to model or bring assets into Unreal, but rather on how to create an experience for the user. For example, I learned how to set up a player pawn and user controls, set up blueprints for assets to make them interactive to the user, and how to begin creating interfaces for timers, scores, etc.

The first project was a to create a game called “Kitchen Cleanup”. The game involved the user picking up randomly spawned plates and cleaning them in the sink. My job was to:

  1.  Create a player pawn with a controller that had the ability to interact with plates (using blueprint interfaces)
  2.  Spawn plates every few seconds that could be interacted with (randomly spawned at target points)
  3.  Create a sink that would read if a plate was in it (AKA overlapping it’s collision box) and “clean it” (destroy the actor after a 2 second delay)
  4. Develop a timer and score system that the player could see, a method to start and end the game (event dispatchers) and a start menu (interface widgets)

The course ultimately gave me the skills I needed to develop the game. Here’s a preview (sorry, WordPress only accepts my grainy GIF rather than video):


Other than the actual mechanics of the game, I threw together the main menu logo in Illustrator:KitchenCleanUp.png

I also added a particle emitter to depict “bubbles” near the sink (a texture created in photoshop). Overall, the game was a blast to make. I will make a second post regarding the second project once it’s been reviewed by Udacity.


Printing a Mount for the Oculus Rift

To start with:


Secondly, this is what happens when you leave a print running and go to work:


So maybe that doesn’t happen all the time, but I sure did waste a lot of wood filament. I was in the process of printing a wall mount for my Rift and touch controllers. I originally downloaded both models from Thingiverse, but I made some modifications to the mount for the HMD (scaled it along the X axis, added a curved surface since I’m constantly scared of UV light screwing up my lens):


During the middle of the second try (this time with ABS), the extruder clogged. Lucky for me, I’ve dealt with that issue before (see my post about extruder clogs…) and was able to quickly disassemble the extruder, declog it, and reassemble. Hey, it only took a few hours rather than a few days! For my third try, I decided to just go with Prusa’s standard PLA:


And the final products, mounted to the wall in all their glory:


Yay for useful prints!

More VR Stuff, this Time with the Rift

I am fortunate enough to have a wonderful brother just as interested (if not more so) in emerging tech, specifically with virtual reality. He already owns a Vive, but decided to order an Oculus Rift a few months back. Due to some fluke, Oculus sent him two Rift Touches by accident, one of which he lent to me. I’ve been having tons of fun with it, but more importantly, I’m learning how it can be useful in existing fields. This is particularly due to the fact that I work at an architecture firm that is currently conducting research in how VR can be used with architectural visualization. This isn’t exactly a brand new topic, but I’m really excited to be personally involved in the research, both at home and at my workplace.

In terms of architectural visualization, I think the biggest, most exciting software for me right now is TwinMotion for VR. I learned about TwinMotion from one of Fabrice Bourrelly’s Unreal Archiectural Visualization webinars (check them out here when you get the chance). I am currently learning Unreal Engine as I am really interested in building my own VR environments from the ground up (textures, animations, lighting, the whole deal). Of course, this takes time and energy, which most of us don’t have much to spare. TwinMotion is a more “plug and play” software for VR, with built in material, lighting, and animation presets. Essentially, all you have to do is bring in a model (whether it be a Revit, Rhino, Cinema 3D model, among others) and add in whatever you like. Another pro: the software is compatible with most VR headsets. The software is still in its early stages, but I’m looking forward to seeing what they’ll have in store for us. Check them out here.

On to a more lighthearted, fun topic- Games and Apps with the VR! So I love messing around with my headset, and there are some really fun games and things to do while in virtual reality. Of course, my favorite moment was when both my boyfriend and brother played AFFECTED – The Manor, a horror game. I was a wimp, while both of them were very brave facing ghosts and goblins and scary things (though the bf did scream like a girl a couple times). Truly a terrifying experience. Another cool App I discovered was Medium, a sculpting app. Imagine 3DSMax or Mudbox, but rather than staring at a monitor and sculpting with a keyboard and mouse, you create models within VR. Your canvas is the virtual world within the headset, and your sculpting tools are your hands (well, the touch handset you hold… but you get the point).

I will try to post a time lapse video at some point of me using Medium, but for now I can share a few screen grabs of my latest creation- a silly octopus. The app was a little finicky with layers and resolution (Medium actually began to crash after I added too many suckers, but I should have expected that… I was modeling a large model in VR…) and my head hurt after a couple hours of being in the headset, but overall really fun. I can see artists using Medium to create large virtual environments with crazy creations.



My first Vive Experience

I’ve been super excited for the release of the Vive ever since I saw this video of artist Alex Briskham creating 3D art with the Vive: https://www.youtube.com/watch?v=EYY-DZ14i9E. As an artist and architect, I am interested in how VR technology will play a role in the representation of 3D spaces. Currently, most architecture firms utilize renders, plans, and sections to convey both interior and exteriors of buildings. In undergrad, I would try to create animations and “walkthroughs” of 3D models I created. This is all well and good, but imagine literally walking in 3D digital representation of the space! VR allows users to really experience a space as they would in real life. That’s incredible.

My brother decided to purchase a Vive and was kind enough to lend it to my boyfriend Sasha and I for a few hours. We hooked it up to my rig (the Vive headset screen runs at a cool 90Hz refresh rate and a resolution of 3024×1680 and therefore needs some serious computing power) and set up the motion tracking cameras which detect the sensors in both the headset and controllers. When I first put it on, I was completely baffled at how realistic it felt. The visuals, along with the completely accurate controllers, really helped sell it as virtual reality. My favorite part was sitting atop Vesper mountain and playing with a robot dog whereas Sasha really enjoyed playing as an archer in the game Bowslinger (when you release the arrow, the controllers quiver as a bow would- crazy stuff).

Anyways, I thought I would share some images of mine and Sasha’s first experience with the Vive. Check ’em out!


3D Printing or bust

First blog post- woohoo! I thought it would be useful to make a blog about my interests, specifically 3D printing and tech. It will definitely be nice to have everything written down in one place (you know, rather than on sticky notes floating around my desk). Some background information on me: I’m a recent graduate of UVA’s School of Architecture, currently working in DC as an Architectural Designer for Jacobs Engineering and the State Department. My hobbies include 3D printing and digital modeling (obviously) as well as gaming, drawing, cross-stitching, backpacking and hiking, binge watching Battlestar Galactica on Netflix, among many other things.

I hope to achieve a couple of things from this blog. Firstly, I want to learn more about the maker movement. By collecting information regarding fabrication, digital modeling, 3D printing, tech, etc. and compiling it here, I’ll have a solid record of everything I’ve learned. Secondly, this blog will be the impetus to become more involved in digital fabrication. With a busy schedule, it’s hard to devote time to a hobby. However, the urge to write blog posts will hopefully keep me active in my 3d printing/tech pursuits.

My plans for this year are to purchase a 3D printer and to create printable objects. I also need to brush up on my grasshopper (a plugin for Rhinoceros software) skills to continue designing parametric models. Hopefully I’ll be able to achieve some of these goals and write about them along the way!