Avoiding Discomfort in VR

One of the nastiest things VR can cause is nausea, discomfort and even simulated food poisoning (more on that later from personal opinion). What I want to discuss is what I learned and what to do and avoid so that you the developer don’t cause nausea to yourself or your players.

  1. Avoid fast jerky movements that are not player initiated. This causes the inner ear data and eye data to go out of whack, which then in turn causes nausea. Unfortunately fast jerky movements are present in driving games, especially when you jerk the steering wheel, crash, run over rough terrain. I have tried different people on this and found that even the most hardcore track junkies succumb to the nausea.
  2. Keep your frame rates up. Nothing breaks presence faster than constant dipping of frame rates or extended dips of frame rates. People can easily see judder and frame rate drops because it causes a “glitch in the matrix” type of effect. When something so immersive suddenly behaves odd it reminds the user that they are just in a VR environment. Dipping below frame rate every few seconds is fine as long as it is not too often or long enough. Use diagnostic tools to detect these dips because as a developer we tend to tune these out or become so used to them. Trust the tools!
  3. In contrast to fast jerky movements, slow undulating movements will cause just as much nausea. The perfect analogy would be the swaying of a medium sized boat on a relatively active water. People who don’t usually get seasick are just as susceptible to this as those who are. This all goes back to the liquid in your ear not matching visual cues.
  4. Involuntary movement in a tight environment. An example of this would be putting a player on a dolly in a narrow corridor with lots of detail and objects and start slowly moving them down the hallway. If not done right the user can feel like they are being whisked away at an unnatural pace, which can cause a floating feeling(something you really want to avoid in these grounded gravity environments). This type of movement is not as bad in low detail environments or paired with a type of blur. Big open environments are not as susceptible to this.
  5. How I got myself virtual food poisoning. So I was working on VR and for some reason I was getting low frame rates all day. It only slightly bothered me because of the tolerance I have built. But that day we also decided to go get burritos from a taco truck. The burrito was not the best but it was not the cause of my food poisoning cause 3 other people had the same one. The thing that took me over the edge was when I resumed VR development the burrito smell of meat and raw tomatoes stuck to my hand which I used to hold the HMD up to my head (its faster than strapping it in everytime). So within 30 minutes of doing that I started developing a massive headache which I tried to combat with pain killers to no avail. One hour later I had my wife pick me up from work as I was in no shape to drive myself home. My body immediately shut down when I got in the car and I slept for the 40 minute ride home. Upon getting home I crawled into bed for another 2 hours and to my astonishment I woke up feeling perfectly fine. This has never happened to me before for any food poisoning as the effect lingers for the whole day for me. So yeah, I chalk that up to my body being tricked that it was being poisoned and did some reactive measures to protect me.

VR Locomotion methods

VR usually has the issue of the real world space not matching to the Virtual Space. This can be easily mitigated with different locomotion techniques and even experience design techniques. Let’s look over what these are

  1. Teleportation
    1. This is pretty straight forward teleport-where-the-user-wants-to-go. This is not a means to replace any room scale tracking but as a means to reach places where physically walking to it is not possible due to room contraints
    2. Teleportation can reduce immersion and can mute the wonders of moving around in a room. But it is a crucial and very intuitive mode of transportation for most people.
    3. Be sure to use proper transition effects like fading or other full screen effects.
    4. Avoid disorienting the user by rotating their view or teleporting them too far
  2. Cockpit
    1. Cockpits are basically seated experiences in moving vehicles. That vehicle can be a plane, car, boat, or a mech.
    2. This works best in a seated environment due to many of our real world cockpits require sitting down. But this can be adapted to a room scale experience where the user can walk around. Think mini-command center for the player
    3. Motion sickness should be pretty low here due to the static references that surround the user
    4. Moving platforms are also considered cockpits but be careful or the movement speed or jerkiness as platforms tend to have less static items in view
  3. Constrained movement
    1. Your whole world is one room at a time where space is constrained based on your useable space or minimum space requirements
    2. This is useful for hidden object games, puzzle games, or murder mystery games. Training scenarios for more serious games would most likely use this. Imagine doing surgery in a room with all your tools and virtual assistants
    3. This should provide the most intimate and 1 to 1 experience as to the user they can freely walk in their space and not have to think about alternative ways of moving further than their available space
  4. Change of perspective
    1. Think of this as moving around normally in first person view and if you wanted to move great distances you switch it to a god view where you are suddenly 50 feet tall, then moving across the land using your new found size.

VR user tendencies in demo situations

Over the past months of working exclusively on VR, I’ve performed many demos using prototypes and other demos from the internet. I’ve observed the following behavior (this is by no means scientific just some personal observations)

  1. Users want to do things the fastest way possible. For example, locomotion is a big thing, if your VR system supports room tracking people will generally walk towards their objective. But if given an alternative means of getting there (like pointing to teleport) then they will almost exclusively use teleporting. I suspect because it requires the least amount of work and is the fastest way to do it.
  2. It is harder to explain to a user what the experience and controls are once they have an HMD on. I suggest explaining at least partly what to expect in the demo to make it easier for them to jump into the experience. Obviously some experiences are better left to be naturally explored. Anything with complexity that you can only demo for 5 minutes requires the user to be briefed before hand.
  3. Users during demos are very receptive to verbal commands, use this to your advantage as they are a captive audience :)
  4. People like creative tools the most in all the demos I have shown. Because these demos tend to let the people explore more without structure and without pressure to do the “right” thing. I also think this taps into their inner child where they can happily express themselves and be amazed at what they make.
  5. If you have an option for a person to pick up an object, be sure you let them have the option to throw the object. That seems to be the majority of things people do when they pick up objects.

Developing great and bad VR experiences

Ever since January I’ve been doing VR as my full time job, transforming from a enthusiast hobbyist to a bonafide VR developer. I’ve made many interactive experiences across multitude of devices and platforms. None of them have excited me more than VR, as this is a very new territory compared to smartphones, the web and video games. So with this new territory comes a lot of unknowns and un-established tropes. I hope to post many of these thoughts and notes on what makes a good and bad VR experience.

VR Notes!

  1. Use fade to black transitions when teleporting the player. This consistently got good feedback from everyone experiencing it
  2. Fast movement causes the most nausea, so anything that quickly moves the player is a no-go, especially if it is not them initiating the movement.
  3. Teleporting them too far from their original position can cause disorientation if they don’t have a frame of reference of where they went
  4. Traditional heads up displays in games where information is static and follows the camera is not very effective in VR. It becomes an eye strain trying to read information at the very edges of the screen
  5. Represent available actions as their real world counterparts would do. Especially if the player has a controller that enables them to reach and manipulate objects naturally. This eases the burden of figuring out how things should work.
  6. Stop thinking of old school ways of interacting in VR! Shed the keyboard and mouse and think more about how to make interactions more natural and rooted in reality. Once we have more established interactions and tropes, we have to rely more on the real world counter parts of interactions

That’s it for now, I’ll post more thoughts and notes in VR developement in the coming weeks and months!

Hello VR!

Just wanted to let everyone know that I am now tackling VR as my full time job over at HTC, you know the guys who are making the HTC Vive. I’m now a prototype developer over there cooking up some really awesome prototypes that will help define the VR going forward.

With that in mind I am now going to change the focus of my blog from just indie game development to VR development with an emphasis on games. I’ll still be tackling indie game development as I still am finishing up work on Habitat and I have many things to talk about there.

So expect some interesting VR thoughts and best practices to be posted here as well as some personal projects I am working on.

What have you been up to Elbert?

Well I have been very busy! First of all I am getting married on June 28th, that would be 4 days from when I write this post. It’s been a year and a half since I proposed to my lovely fiance and now that day I promised is arriving :)

On the game side of things I’ve been working very hard on Habitat (www.jointthe509th.com) as the Development Director. I’ve been working on it full time since April 2nd, the day I got laid-off at Microsoft, which coincidentally was also the day we launched our successful Kickstarter campaign where we raised $64,154 (https://www.kickstarter.com/projects/4gency/habitat-a-thousand-generations-in-orbit)

It’s been very rewarding working with a small team of 5 people + contractors as every decision and action I take has a direct and very measurable impact on the game. Also being the development director means I get to decide on most engineering challenges as well game design decisions. I’m more of a hybrid developer/designer which makes the game development process as I can resolve issues in more ingenious ways than if I was a pure designer or developer.

Anyways, expect more updates from me once things calm down a bit, with the Early Access version being demoed to the press right now,the impending announcement when it will be available to steam,  and me getting married it’s been busy!

See y’all in my post in a week or two

Announcing Habitat

I keep telling everyone that I am always working on a project and it might take some projects some time before I can announce them, especially when I am partnering with 4gency an awesome company run by Charles Cox. Now we have officially announced Habitat (www.jointhe509th.com). Habitat is a space themed RTS set high in Orbit around a super futuristic yet devastated earth. Your mission is to build your habitat using salvaged space junk and get out of Earth. However it won’t be easy as living with that much debris around you is dangerous not to mention other people who want your stuff.

Check out the sick trailer we have for the game.


Sustaining the indie drive

So there has been a lot of silence over the last few months over here in my blog. I will come out and say it that I am busy with my work at Microsoft trying to ship Ryse: Son of Rome and helping out with the Xbox One. Thankfully we are close to the finish line and everyone at work including me is very excited to get our baby out the door. Obviously the work has just begun when shipping a game/console these days. Everything has a service attached to it and work goes on 6 months pass launch.

So how is this related to being an indie? Well, I am not a full time indie at the moment and that has taken a little bit of a backseat as I concentrate on getting my main work done. But hear this, I have not given up or stopped at all in being an indie. I always am working on a project. This time around I am working with other talented folks that I know and trust and we are baking something truly spectacular. We are no where near ready to talk about what we are working on but trust me that this is something special :)

So what can we learn from my experience? Well let me enumerate:

  1. Once you catch the indiepreneur (indie + entrepreneur) itch, its gameover, you have that itch for life. However it is not always advantageous to be a full time indie all the time. Bills, commitments, time, life-work-balance, these all are considerations when you decide if you want to work for someone or work for yourself.
  2. All kinds of opportunities arise when you become an indie and some of these opportunities are through employment. My current work as a Technical Producer at Microsoft was born from being such a prolific indie game developer and I am now using those skills I have from being an indie and applying it within Microsoft.
  3. Like I said earlier, you have to time and align your resources well with events in your life. When I went full time indie, I had a bit of cash in the bank that allowed me to do it. But right now I have a wedding to save up for, and bills to pay down so being an Employee is more advantageous.
  4. Being an indie comes from within, it is an internal desire to build something cool and important to you. Sometimes that drive gets satisfied for a while because of past success, and a different kind of drive takes over. That of learning what is established out there and working in a different kind of environment. This becomes a rhythm where you go in-and-out of phase between being an employee and an indie. The good part is the skills learned in both are applicable to each other so there is no skill or talent loss.

So just think about being an indie as a life time endeavor and weigh your choices that affect now and what affects the future. That way you can have a clear and better map of how you should be shaping your career going forward.

Thanks for reading!

Download numbers and Piracy

It’s been a while since I have updated my indie progress, the biggest reason is that I have been busy with my day job and I have taken a smaller role in developing indie games at the moment. I’ve been exploring other hobbies in life like running, bouldering, and biking. Unfortunately that squeezes out some of the game development time from me. But as all good things, I won’t be far from doing another “burst” of game development with some projects coming up the pipeline for me. Last thing I wanted to do is get burnt out trying to chase after a financially successful indie project.

Anyways, I digress as I want to use this post to show the numbers trend for my games the last two and a half years. As one would expect the graph I have down below has the characteristics of long tailing.

This is for all Windows Phone games:



I also have number of installs of Impossible Shoota on Android. This is a spiritual successor to the WP version and is built on Unity. People have almost no interest in Impossible Shoota for Android. I have around 513 active installs on Android. I have to revisit my strategy there sometime. However, these numbers are just from the Android store, and we all know the APK’s get pirated rather quickly on Android Marketplace. So let me present you with a whole different perspective. graph

This information is from my telemetry data using the lumos plugin in Unity. Impossible Shoota Mobile is the APK I uploaded on the Google store and it shows that I have 8733 unique users but the service only reporting 513 active installs. I’m no big numbers guy but that is a big gap between what Google is reporting and what is actually out there. This just reinforces the insane amount of piracy going on out there. Another thing to note is that the game is completely free without any monetization vehicle attached to it.

You might wonder what the Impossible Shoota row is, that is the web version of Impossible Shoota. I uploaded it onto Kongregate and it only has 516 plays, not even users. So how in the world did I end up with 29 thousand unique users? The answer is China, according to my telemetry my game is hosted on flash.7k7k.comsxiao.4399.com, and img.3366img.com . I did not upload my game on these portals and they appeared there within an hour of my posting my game up on Kongregate.

How about Armored Drive on iOS? It has done better than Impossible Shoota on Android for sure with far less piracy. The numbers on Apple’s side is a lot closer to the one reported by game telemetry. Plus this game is monetized through ads and in-game currency which has provided some chump change to us.


So what is the moral of the story? For me WP is still the king of my indie revenue, and probably will stay there unless I bust out some super successful iOS/Android game. Releasing on Kongregate and Android will guarantee your game will be mostly pirated, which for me is not a big deal because the game I released there was completely free and had no monetization vehicle in it.

2 million downloads!


It’s been a long road but I have officially hit 2 million downloads on Windows Phone across 15 games earlier this week. It’s a great feeling and accomplishment, but there is a lot more work to be done on other platforms and making it to be as successful there.


Hopefully I learned a lot from my successes and failures in the Windows Phone Marketplace and will be able to translate it to other platforms in the near future. But just as a word of advice to everyone out there, not because you are popular on 1 platform means that it will translate to the same success on other platforms. There are just too many different variables that come into play that determines the success of games.

I may not be pumping out as much games as I used to but fear not as I am still as passionate as ever, albeit a little bit busy because of cool stuff at work :)