Today marked the first day I revisited Enliven VR since the Launchpad program submission. The main reason was I wanted to upgrade to the latest Unity 2017.1.1 version, but I had been hesitating for a while, in fear of things breaking. I also wanted to downgrade Oculus Utilities SDK from 1.16.0-beta down to 1.15.0 stable build.
Why these changes? In Unity 2017.1.0, apk is signed using Schema V2, while currently Oculus store submission only accept apps signed in Schema v1. That was the main reason why I had to create keystore manually to get it signed in Unity, then to resign the build using jarsigner. In 2017.1.1, we don’t have to deal with jarsigner anymore, and looked like I can reuse the existing keystore.
For the utilities downgrade, I have been having issues with camera, especially with objects that very close by. Sometimes I feel like the world move a bit, which definitely not comfortable. I want to check if using the latest stable build can address this issue. Oh, also it doesn’t help to see this information below on the release note for the beta version… This note was not there when I started using this utilities in mid July! >.<
As I mentioned previously, I was participating at Seattle VR Hackathon last weekend using my laptop, and we used the latest Unity there. I figure I might as well update Unity on this working machine, and thankfully the upgrade was seamless. Downgrading Oculus Utilities was a bit problematic though. I started by deleting the OVR folder while Unity was open. Somehow, there were other components here and there that caused the utilities to keep being reloaded even after deletion. After many many attempts of deleting several different folders, I use the handy dandy google search, and stumble over this article. The main thing I learned for there was.. do this deletion when Unity was closed! I followed that instruction, reopened the project, and Unity stopped trying to reload the OVR files, yay! There were a bit more remnant left, so I kept closing, deleting those components that got left behind. Once things were clean, I imported Oculus Utilities 1.15.0 and everything loaded properly. I built the latest scene and it was successful. Now we are ready for more testing and building.
This week is the final week for Oculus Launchpad program. For those who has gone through game jam and hackathons, you know what this means… the most productive time!
On Monday, I stayed at PAX until it ended. I took one day on Tuesday to recover from PAX Dev and PAX.
Unfortunately I did not have much time to demo my latest build there, since there were too many things going on. I did sat in the AFK room for about an hour, to observe how they run things there. I noticed the room was very quiet. There were people going in and out, but most of them sat down and either take a break, or talked to each other in very soft voice. It was a peaceful place. There were several tables inside with chairs around them. On each tables, there were several children and adults coloring books, crayons and color pencils. There were also flyers about the organizers (TakeThis.org), information about mental health and where to seek help. They even provide professional helps for those who need it during the event.
I flipped through several coloring books, and spent a lot of time going through one book called “Color Me Calm” by Lacy Mucklow. This book was designed for adults who needed to relax, and I took a lot of notes while I was in the room, which I listed below:
Images used to evoke more relaxing responses in people:
mandalas – for concentration, meditation & calming
sanskrit word for circle or round, even container for secret space
in book: circular, repeatable geometric pattern, round or curvy in nature, not jagged
nature aspects and patterns – inspirational calming
wooded scenes – quiet scenes of forest area evoke calm feeling
geometric pattern – regular, symmetrical pattern can be meditative
math basis, symmetrical design = balanced, evoke order, calmness and focus
asymmetrical patterns also convey the sense of balance because of exponential and logical pattern they create
water themes – envisioning steady or rhythmic flows and picturesque scenery can be soothing
water scenes are relaxing for many people, especially photographs and artwork of beaches, ocean
music with ocean waves in the background has a calming effect. Some says it reminds them of heartbeat sounds
environments of still water such as lakes, ponds, etc give soothing effect similar to white noise
water scenes are often associated with vacation, relaxation and fun times
With all these information, I will have to change the other rooms design for Enliven VR.
Back to project. For the final submission, I tried to cram as many polish as I could. Changes for this week:
Per feedback I got from a couple Oculus Launchpad participant and some friends, I decided to remove the keyboard. Most people expected to be able to change the background music by interacting with the keyboard. It was also hard to see from below, and felt unnatural.
Added butterfly behavior and modify existing wing material. Previously, when user gazed at animated creatures, my script enabled and disabled their animation property in Unity, which caused them to animate or freeze in the middle of their movement. It did not feel satisfying, and one feedback I got even expressed concern about ‘harming’ the butterflies. So this week I created a new script that made the butterfly hovering around when we gaze at them. The starting positioned seemed a bit jittery, but once it moved, it looked natural. I also set the butterfly to always animate, so they either float or hovering this time. For the wing material, it was originally very transparent, with a bit black outlines. Based on optimization documents I read, transparency really affects performance, and it is generally better to have less transparent areas. So I updated the butterfly texture to reduce the transparency and made it more colorful as well. As a result, they are easier to spot this time.
Added pets behavior. Similar to the butterfly, previously each pet started with disabled animation, and as user gaze at them, they started to move. I used the generic animator controller too, so their movements were not the greatest. Those who tested my app could tell that although the red panda was very energetic, the kitten only blinked and the husky pup walked in place unnaturally. This week I spent some time to create custom animator controller for each animal. Each pet now has four to five different animation cycles, and as user gaze at it, the pet movement changed randomly. The cat starts at idle, then it can meow, jumped a bit, or do a high jump. The pup starts at idle (sitting on its butt), then laying down, scratching its head, or sleeping. The red panda also has different movement per gaze, instead of one giant set of movements like before. These behavior will need to be tweaked more in the future to give even more personality and natural feeling.
Updated terrain geometry. Previously, I have had no luck in building Gear VR application when using Unity terrain tool. My builds tend to not running on the phone during testing. I have tried smaller terrain, with like 10 x 10 and still facing the same issue. The terrain geometry also cannot be scaled using transform properties. So in the previous builds, I just use a quad as a terrain and colored it green. This time around, I created a bumpy 10×10 planes in 3ds Max, brought the mesh to Unity, applied material and it worked like a charm. No issue in building, no performance issue during run time, and it looked a lot better than the flat quad.
Added temporary art for pillows and blanket. One of my tester was confused about the bed, since it is round, and not a standard rectangle-shaped bed. For a clear visual, I added pillows and blanket, but since time was limited, I did not have much time to implement any textures. Originally I wanted to create a Turkish comforter and bedding set, after my conversation with a fellow Launchpadder with Turkish background who mentioned about the dying tradition of handmade comforter. This will definitely be implemented in the future.
Fixed spotting and weird shadows on light-baking. After I started playing around with light baking in Unity, some assets, like the gazebo floor, pet tower, and the new added blanket had mold-like spotting or hatched lines. I was not sure what causing it and had been ignoring it for a while. Near the end of the week, one of my client started getting his hands wet lighting for his game as well, and he saw similar issue. He asked me about it, and I told him some lighting setting I have tried, like turning off shadows, etc. Also, out of curiosity, I looked up this behavior on google, and found out that it was caused by overlapping UV in the model. I updated the blanket model, fixed its UV overlap, re-baked the lighting again and voila, the spots were gone! I shared my finding with my client, and proceed in updating the rest of problematic geometry. My environment looked a lot cleaner afterward.
Due to the natural disaster happening in Florida and Texas, Oculus Launchpad submission got extended from Sunday night to Tuesday at noon. As much as I tried to get much done, on Saturday I started to feel sore throat, and by Sunday it proceed to sinus infection. My husband had been down with flu since the end of PAX, and I was miraculously unaffected. However, the bug in the air finally hit me. So on Saturday, I finished writing the proposal, budget list. I spent half a day on Sunday to set up a wordpress site for Enliven VR main page, but I couldn’t get any style to work to my liking, so I scrapped it and just built it from scratch, using handy dandy notepad++ and my outdated knowledge of HTML and CSS. I spent Sunday night building the latest version of the app, and as previously having issue with jarsigner.
After taking some medicines this morning, I proceed to rebuild the app, resigned, and after a couple failed attempts, I noticed typo on the application path during jarsigning session. Once I use the correct path, it worked! Again, based on my experience from game jam and hackathon, when you have a working build very close to submission, might as well submit it before proceeding into making a broken build in the next few minutes. I did the submission for both builds and documentations, and that’s it for this week.
Time to fight the PAX pox now. Next weekend will be the anticipated Seattle VR Hackathon, so I will try my best to rest before then. I might also take a bit of break from Enliven VR development to get a clear vision and reconsider design changes. So, see you in a week or two~
Every year Penny Arcade Expo (PAX) has always been a big industry event here in Seattle, so I know I would not have much time to work on developing Enliven VR much.
On Sunday night, after I posted the previous blog, I started to learn the submission process to put the latest build onto Oculus Store. I printed and read all the documentations from the website, watched and took notes from Nathan’s video, created a built, created storekey, signed it once, then got stuck on the jarsigning process. I kept getting nothing but errors. Every time I got an error, Google was my best friend and helped in finding answers. I recreated the build several times, tried several different storekey, and jarsign just wouldn’t budge. I went to bed feeling frustrated.
On Monday morning, I went back to Google, looked for more information, and started noticing pattern of people who had issue when their filename had weird symbol like numbers or signs. Also some people mentioned that we should shortened the path name. So I created a new folder on my d:/ drive, put my new build there with really simple name. For the keystore, I use really simple password, again, no number or symbol. Then voila, jarsigner worked!!! I was so happy. Gabor reviewed the app really quickly too, probably because I posted it around lunch time. Thank you Gabor, hope you had time to eat lunch.
People in the discord channel, Lauren, Tyrus, and another Scott helped me on the whole process. For those who need help, hop on discord
I spent Tuesday and Wednesday at PAX Dev. There were not many VR talk this year, unlike last year. The VR vibes last year was all about “give it a try, dev! Don’t worry about failure, nobody knows what’s going on.” This year, it’s more like “okay, we made mistakes, here what we learned.”
Currently I am at PAX. My mission is to try as many VR experiences I can try. It can be challenging since the lines are really long! Bethesda is showing Fallout VR, Doom VR, Skyrim VR, and earlier I noticed the line was already 3.5 hours wait. There are a few indie VR games in smaller booth.
My other mission is to find some people who are willing to try my app. I had one lady volunteered this morning. She said she were a bit prone to motion sickness, and she did not have any discomfort using my app, which was great for me. There is also a special room here called AFK room where people can find safe space when they feel overwhelmed in the convention. I dropped by there earlier, talked to one of the organizer to see if I can demo my app there. He said to drop by tomorrow and have organizers try it first. We’ll see what happen then.