This is a comprehensive guide to my VR setup, including descriptions of some VR concepts and phenomena.

read more

Table of Contents

PC Hardware

While much of this guide is centered around software, we need to first talk about the hardware that goes into your PC. PC Part Picker is essential in making sure that all of your choices are compatible, so I'd recommend you use it (or something similar).

Graphics Card

Since we're going for the best here, we're going to need the best graphics card. I opt for the top of the line consumer-grade card. For the past decade, that's meant NVIDIA. The 1080 Ti, 2080 Ti, 3090, etc. You can probably get away with whatever the flagship model is for a much better price/performance ratio, but that's not what I'm going for here. Keep in mind that a disturbing amount of VRAM can be relevant in VR; some benchmarks show up to 17GB being used on a Reverb G2 (two 2160x2160 displays) in Half Life: Alyx.

To figure out what the top of the line is at this moment, look at benchmarks from Gamers Nexus. They are the most scientific and methodical players in town.

Everything else

Your processor, motherboard, RAM, storage, power supply, case, and cooling system should simply be sufficient enough not to bottleneck your graphics card (you can use this tool for checking if your CPU causes a bottleneck). This goes for VR gaming just like PC gaming in general. I opt for whatever processor currently has the highest single threaded performance (again, check Gamers Nexus), whatever motherboard is reasonably priced and won't hold me back when overclocking, etc. I'll post a separate guide later on how I choose my components (TODO).

My first build from April 2019 can be found here, if you're interested.

VR Hardware

For the best VR experience, you have to use a headset that is tethered to your powerful gaming PC (PCVR). The standalone VR headsets do have some marked advantages over PCVR. But because they will always have the limitation of needing to mount to your head without breaking your neck, they will never be able to match the fidelity of a dedicated 30 pound computer sitting on your floor.

Since the best headset in a given year might not have the best controllers, getting the best experience may not mean just buying whatever one company is selling. This is where Mixed VR comes into play, since you may have to configure your headset from one company (e.g. Reverb G2 from HP) which relies on one set of tracking hardware/software (visible light/Windows Mixed Reality) to work with your controllers from another company (e.g Knuckles Controllers from Valve) that use another set of tracking hardware/software (infrared light/SteamVR).

Headset

When choosing a headset, or head-mounted display (HMD), I optimize for photorealism, then visual immersion. Defining these terms is easiest by example:

It's important to note that there are ergonomic factors that affect a given HMD's ability to achieve photorealism and visual immersion. This means that a headset that achieves photorealism and visual immersion for one person may fail to do so for another. The most important ergonomic factor is interpupillary distance (IPD), which is simply the distance between the center of the pupils of someone's eyes (the average IPD is 64mm for adult men and 62mm for adult women, with 1st and 99th percentile values at about 54mm and 72mm respectively). The IPD that an HMD was tuned to accomodate can have an impact on both photorealism (e.g. objects appearing blurry) and visual immersion (reduced FoV) if one's IPD does not fall within a couple milimeters of the tuned value. The second is face shape, which includes things like the width of one's face, the specific contours, nose length, etc. The face gasket of an HMD may be better suited for certain face shapes, negatively impacting visual immersion of others. Certain headsets offer flexibility (via adjustable IPD sliders, interchangeable face gaskets, or face gaskets with more pliability via compressable foam) as features which maximize their photorealism and visual immersion for as large a segment of the population possible.

Photorealism

Tragically, there's no objective measure for photorealism. It's a combination of many factors, some of which aren't quantifiable at all or aren't easily comparable between different HMDs. The best one can do is read reviews by trusted reviewers of VR. That said, given ergonomics play a non-trivial role, there's no substitue for trying the HMDs first-face. Here are some of the most notable factors:

Visual immersion

This almost directly corresponds to the HMD's Field of View (FoV). Humans have slightly over 210 degrees of horizontal FoV and 150 degrees of vertical FoV, although this may vary based on each person's IPD. This is a much easier bar to meet than photorealism: an HMD that is able to match our FoV will have achieved full visual immersion.

Controllers

There are a few criteria that can be used when judging controllers:

As of this writing, the Valve Knuckles controllers are without equal on nearly all of these fronts, and offer even more benefits (individual finger tracking, recharging over USB-C, allowing an open-hand without dropping the controllers). In-game when gripping objects, I've struggled with both Windows Mixed Reality (WMR) and Oculus controllers as my reflex is split between clicking the grip button and pulling the trigger button.

Tracking

Tracking technology is what's responsible for adjusting your position in virtual reality to match your movements in the physical world. Software and hardware work together to accomplish this.

There are multiple hardware sensors that are used for tracking:

A gyroscope is a device that's used to establish a device's orientation, and an accelerometer is used to determine a device's acceleration. Given a known starting point, one could theroretically trace the position over time of an object using simply precise measurements of acceleration and orientation. However, due to precision limitations of these devices, the controllers and HMD would quickly "flyaway" to infinity in a matter of seconds. Thus, an extra reference point is needed to error correct this data. TODO: improve this section, this is going off of memory and I can't remember where it's frome.

There are currently two mediums that are used for error-correction in tracking:

Although different hardware may use the same medium, their application of that medium may differ drastically:

There is plenty of good discussion comparing tracking mechanisms, but I do want to highlight one very troubling downside to a visible light approach to track both the HMD and controllers in the same setup: since too much environmental light means the HMD will not be able to accurately track the position of the controllers, but too little environmental light means that the HMD will not be able to identify landmarks in physical space, environmental lighting must be controllable in both directions to achieve acceptable tracking; this is a downside that no other method experiences.

Platform choice

Like much of the PC gaming industry, each hardware manufacturer forces use of their own software (e.g. Windows Mixed Reality Portal, SteamVR, etc) for setting up, configuring, and using their HMDs. This is unfortunate. However, Valve was kind enough to establish and push the industry to adopt their open SDK, called OpenVR. As of this writing, nearly every VR software is built on top of this SDK. This allows for the portability we enjoy today, such as being able to launch an Oculus exclusive game from SteamVR, or play a game made for Windows Mixed Reality on an HMD created by Valve.

I have found Valve's SteamVR to be the perfect balance of simplicity, customizeability, community adoption, and ongoing support to accomodate my VR setup.

Matching physical space

I find it helpful to match my virtual space with my physical space in SteamVR Home. This way, when I want to sit on my couch in physical space, I can simply find my virtual couch and walk toward it.

The first thing you should do is setup your chaperone bounds to exactly match your physical space. Chaperone bounds are essentially restrictions you self-impose in VR space to prevent you from running into physical walls when in VR. Use SteamVR's room setup to start, but for fine tune adjustments, you'll need to use Chaperone Tweak.

The next thing you'll want to do is use SteamVR Home's menus to create your physical space in VR. I used the white side of refridgerators stacked high to create the white walls of my room. As you're building, you should work at the very edge of your chaperone bounds to determine exactly where the walls and other items should go. The rest of the setup was straight forward as SteamVR Home had items for them (TV, computer, desk, etc.). You should save very often, and backup your progress regularly as well. As of this writing, the SteamVR Home files are stored in this directory C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\steamvr_environments\game\steamtours\SAVE. You can simply copy the "SAVE" directory somewhere safe and restore things by copying it back to the original directory.

Game cross-compatability

As mentioned above, all games are currently built on OpenVR. This means that, although some games may claim to be exclusive to a certain platform (like Oculus), they are technically portable to other HMDs. Sometimes this works without extra configuration, but as of this writing for Oculus-exclusive games you'll need software called Revive to accomplish it.

I also add all non-Steam games thate I've purchased from other stores or downloaded directly to Steam so that I can launch and browse my games from within SteamVR with ease.

Perfecting Icons/Artwork for non-Steam games in SteamVR

Upshot: for non-Steam games, SteamVR uses whatever image is specified as the "shortcut icon", which is by default the .exe's ico, every time an icon/artwork needs to be displayed for that game. To override this, you need to specify a tall image (specifically, 600x900px) for that icon, and then follow step "c)" below to specify a wide icon (460×215px). The tall image will be displayed in your SteamVR dashboard, and the wide image will be displayed in "Recent Apps" in SteamVR Home, the loading screen when you first launch a game, and Big Picture Mode if you use it within SteamVR. It's not possible to achieve this setup via the GUI, which I believe is why so. many. people. are not able to get it working, and most of the questions about it go unanswered.

Detail and steps

One thing that has bothered me more than anything else about SteamVR: the game icons/artwork in SteamVR only work as they should for Steam native games. If you have a lot of non-Steam games like me, at best you have icons that are either too tall or too wide and get stretched, blurred, or cropped to fill the various places Steam displays your games (example), or at worst you have dozens of gray boxes with no icons that you have to tap through to figure out what games they are (example).

a) Getting the images

This is a bonus section, which you can skip this if you already have images or know where to get them. Most likely, you should just use SteamgridDB to find images that are approximately the right aspect ratio you need and proceed to b), but if you're a perfectionist like me and want to exploit my many hours reading through Steam's game developer docs and writing a script to scrape Steam's site to figure this out, you should do the following (Note: your game has to be sold on Steam for this to work) Figure out your game's app ID on Steam (it's the number in the URL, e.g. https://store.steampowered.com/app/620980/Beat_Saber/). Visit these links below, replacing your app ID with Beat Saber's:

(note: you can add "_2x" before the jpg to get double the resolution on that last one). Now save these images, and set them in all the right places in desktop Steam (this part isn't tricky and can be done via the GUI). Basically, every time you know there should be an image somewhere, right click on the empty space and you'll see "Set custom background" or "Set custom logo" or in the case of the collections view: "set custom artwork". I'll type out all the places and how to set the images in the comments if someone's confused.

b) Setting the "tall" icon

This can be any number of ways, but the fastest is to right click on your game in the left sidebar, click properties, then click "choose icon" and select your 600x900px image. This image will be displayed in all "tall" views, most notably when you are using the SteamVR dashboard. Sidenote: SteamVR really shouldn't be the image from here, and should specify another location for the 600x900px image, but this is what we have to do to work around how things are being handled.

c) Setting the "wide" icon

This was the hardest part to figure out. Right click on your game in the left sidebar, hover over "Manage" and then click "Add Desktop Shortcut". Go to your desktop and right click on the shortcut you created, and then click on the "Details" tab and copy the number you see in the URL. Now go to the directory where Steam is installed (likely "Program Files") and go to userdata, the folder that's just a number (which is your Steam user ID, btw), "config", and then "grid". You'll see a lot of the images you set earlier in step a). Now take your 460×215 image and put it in this directory and name it the number you pulled from that URL at the beginning of step c). Side note: you may notice that this app ID you pulled is different than the app ID in the other images for this same game. Why? No idea, probably so that Valve could enjoy watching me spin my wheels for 4 hours trying to figure out how to get this to work.

Now all you should have to do is quit Steam, re-open it, and launch SteamVR. Enjoy your now beautiful SteamVR library!

Some improvements are needed

i) it seems like there are slightly different wide icon dimensions displayed in SteamVR and I've only figured out how to specify one of them. If your 460×215 image looks stretched where you see it most, use a different image with another aspect ratio that's a better fit until someone can figure out how to get both working simultaneously.

j) I have not figured out how to get the little tiny icons in desktop Steam to stay squares with this setup. But it's probably possible. Again, someone else hopefully can figure this part out. If them being rectangles bothers you, you can turn them off entirely in "Settings" > "Library" and uncheck "Show game icons in the left column".

k) There is a known issue with the native Steam VR's Google Earth grid icons that I have not been able to override. I've opened a Github issue.

MixedVR Manager

Like many people, I just want to get to SteamVR and start playing as quickly as possible. But there is often a lot of configuration that needs to be done every time a VR session is started or stopped, especially for those using devices from different ecosystems (known as Mixed VR, term I coined and created a subreddit for in November 2020).

MixedVR Manager performs all of this setup for you, automatically and in the background. With MixedVR Manager, all you need to do is launch SteamVR on your PC (which can be as easy as turning on an Index/Vive controller). MixedVR Manager handles everything else.

The official page for MixedVR Manager right now is my Github: https://github.com/monstermac77/vr