Τρίτη 7 Μαρτίου 2017

VR Puzzler game

Creating an app (and writing about it!)

Truth be told I never did pay any attention documenting any of the project's I've done all those years. BIG mistake! All it took was a lesson from Udacity to make me realize how wrong I was. Posting just final versions (and many times not even THAT!) is almost the same as you never having done that project.

Enough said, here goes nothing!

 

VR PUZZLER GAME


Puzzler is a mobile VR game application targeted to non or small-vr experienced people as a doorway to the VR world.



-DESIGNING-

 

Purpose

The purpose of this game is to have fun with it while enjoying a nice VR immersive experience. To showcase what a VR can do to those not familiar with it in order to make them more interested in VR.

Persona (typical user)

Name : Lindsay
Occupation : Collage Student
VR Experience : Very little
Description : Lindsay is a true technology enthusiast. She loves to dig into things more that an average person her age. She really loves discovering new gadgets and showing them to her friends. She hates it when things don't work the way they should.

Game mechanics

This game is basically a "Simon says" clone. Once you start you are shown with a flashing pattern of five different orbs. The user must then click the orbs following the same pattern to win the game or make a mistake and see the pattern played again to re-try.

Main concept

Nothing is wrong with my screen but it's alway fun to take a pen and draw your thoughts on a piece of paper.


Nothing too complicated here, but I do enjoy a moody dungeon as it does give an adventure feel to the game.

Setting up the scale

I decided to take that project "by the book" so first of all I measured the eye-level height.
After carefully measuring the height of my eyes from the floor level I ended up with 1.71cm (5f 7.5in. 


Then I recreated a virtual space to compare it with my real space to see if these two match. When you have 15 years experience as a fireplace 3D designer, you learn to measure everything. Old habits never die


And the here is the VR Object I created to match my office door :


I had to compare two factors :
  • The VR gate should appear a bit larger than my real-life door
  • The eye height should look the same
While the scale was close enough to pass, it want 100% there. I did some minor tweaks to improve it (I scaled everything a bit up and raised the eye level to 1.80). I tried it once more on the device and this time it felt better :

- Hello? Anybody home?

I decided to do some beta testing about this matter just to make sure. But I wanted to be able to present something more that a VR door in the middle of nothing. I decided to design most of the dungeon before running some tests with others.


-CREATION-

 

Scene Creation

I was provided with some models from Udacity that made up this construction :


The fastest and more precise way to work with situations like this, is to duplicate the appropriate meshes, put them in a empty gameobject and mirror them by inverting the scale on the appropriate axis :


I used a similar technique for the orbs as well. I wanted them placed as a pentagon so here is how you can have this done :
  1.  Place an empty game object on the middle of the pentagon
  2.  Place an orb into it (reset the orbs position)
  3.  Raise the orb on the Y axis by the radius offset
  4.  Duplicate this "Empty-->Orb" hierarchy 4 times for the other orbs
  5.  360 degrees / 5 orbs = 72 degrees rotation for each rig
  6.  Enjoy!

Alpha test

I deployed my scene to my Android device and spend some time looking at every object. Hmmm, I missed something there, two objects where slightly overlapping causing triangle flashing. Also the stoned floor was gone! It was placed very close to the mountain background mesh and although it showed well on the preview it was not shown at all on the Android device. I fixed this by giving an offset to both the camera and the dungeon from the world floor tand also brought the orbs even closer to the camera to give the 3D effect a more profound impact. Redeploying once more revealed that it worked like a charm now.

Lighting it up!

So here we are with a puzzle game and a dungeon. What better lighting solution other that torches? These will definitely make the user feel like Indiana Jones (without the whip I guess)




-USER TESTING 1-

 

My cats usually get simulation sickness so I decided to use humans this time. My wife and 2 kids came to the rescue and I noted down all they had to say. The questions I decided to ask where these :
  • How do you feel your size in this area?
  • How would you describe the mood?
  • Do you feel comfortable in there?
  • Do you see all the objects of the room?

 

 Results 

All gave satisfying answers to the last three questions but 2 out of 3 felt that they were slightly big for the scene and just a bit too short. I fixed it and tried with them again. Everyone enjoyed it this time. I made a note that although they liked the dungeon they did ask for a more moody approach if possible.

-CREATION (CONT'D)-

 

Sketch UI

We got a simple app so let's make a simple UI Right? Here is the rough concept if the UI design for initial UI as well as for the "game won" UI :



This was an easy UI to create.


I placed the camera and the UI out of the dungeon to test out sizes and background transparencies by deploying on the device 2-3 times. It always looks different on the preview window and from inside your VR googles.


I beta tested this with my kids and it worked fine. Clear and proper instructions.

Final touches

One thing we can all agree upon is the fact that there is always room for improvement right? Here is what I did to polish this project

  • Added a small script to the torches to make them give out a flickering light
  • Added the Shuriken particle system to create REAL flames! (taken from Unity). My fellow beta tester did mention they'd like it more moody, remember?


-OPTIMIZING-

 

It's not secret that a VR app is as good as it's performance is. I managed to avoid motion sickness (something a bad made VR app gives to it's users) by having out 3 different people testing the app and all agreeing the room feels great but the latest gizmos I added called for some optimizations to the Realtime GI (chunk reductions, different lightmap scaling, time settings etc.) Finally I used a small script I created recently that does just that. Benchmarks a scene. After some tweaking not only did I manage to get my frame rate back to what it was (33.749546), but I managed to go a bit above it. Here is the result file my benchmark script produced for my chosen settings :

Scene    : mainScene2
Platform : Android

SIMPLE-2
Time to load = 0.7203668
Min FPS : 34.978554 Max FPS : 35.86087
Total F : 176
Average : 35.31088


-USER TESTING 2-

 

It was tricky to pull this off but I really wanted to make a video that shows the user as well as what the user does see on the VR googles. I recorded what the phone was showing and had to do the math for video time remapping to make it in sync with my video footage. Here is my favorite beta tester trying out the final version :




(CONTAINS CC ENGLISH SUBTITLES]
[Also contains my weird humor!]
Fun fact : All the other VR apps she ever tried, do not make use of the button on the device. They use Gaze

 

-FINAL RESULT-

 

This is how the game flow goes from start to finish :
  1. First you are shown with the instructions. Press START
  2. You watch the pattern of the flashing orbs
  3. You repeat the pattern by clicking on the orbs
  4. Once this is done you are taken out of the dungeon, infront of a UI
  5. You select if you want another game or not



-CONLCLUSION-

 

This was a good practice for me. Although I have studied Reatime GI for months, it's quirks, it's optimizations and it's potential I was able to push some more.  There always is room for more.


This was my first attempt to document a project creation. As I write these lines, the realization of how important documentation is, hits me hard.

Interesting fact : while looking for a Markdown editor I've run into a quote saying that we should document everything we work on. Now I begin to realize why...


-Update May 2019-
It seems that I still don't document my pro and personal project much but I guess there is a good reason for it. I've been SO busy those last years that I simply couldn't afford to document.
Note to self: Take another look into project documentation. Little by little I do post things about some of my projects.


Antonis "Synthercat" Savvidis
CGI / VR Illusionist



Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου