
All Oculus Software and VR applications must be stored in C:\ drive - eghad
https://support.oculus.com/help/oculus/1734357913462268?sr=1&query=drive&sid=0g1SHyHqRPXIZ9P2o
======
yason
Funnily enough, not just the fact that users and developers need to care about
drive letters, the drive C: itself is called drive C: because drives A: and B:
were reserved for floppy drives. And I don't think many machines have had
floppy drives in the 2000's.

Linux has had a unified directory tree since the early 90's where it
completely doesn't matter which drives host which directories. Implementing
such a tree on Windows and mapping "C:", "D:" etc. as pseudo-roots to suitable
locations to make it backwards compatible would not be an insurmountable task.
Surely not trivial, but even on Windows application programs do not write to
physical drives directly which gives the filesystem an opportunity to do any
path translations it wants to. Thus, the question becomes a matter of will:
Why hasn't Microsoft considered it important to fix their drive accesses?

What do they see as the advantage of having drives mapped to drive letters?
It's certainly not usability: Linux can produce "drive icons" for each mounted
drive. You plug in a USB stick and its icon shows up on the desktop――all this
_regardless of whether_ the USB stick is actually mounted in /mnt/$STICK or
/media/$USER/$STICK or wherever.

They could also support mounting extra drives to directories under C: so that
the user would never have to deal with other drive letters. The "C:" would
just be a historical prefix but in practice it wouldn't matter because you
could mount your second disk at C:\Program Files\ and the applications
wouldn't even know about it. I vaguely remember that WinNT kernel could
actually do this, however it's apparently well-hidden from users because I
don't see this having been set up anywhere.

~~~
cyphax
> They could also support mounting extra drives to directories under C: so
> that the user would never have to deal with other drive letters. The "C:"
> would just be a historical prefix but in practice it wouldn't matter because
> you could mount your second disk at C:\Program Files\ and the applications
> wouldn't even know about it. I vaguely remember that WinNT kernel could
> actually do this, however it's apparently well-hidden from users because I
> don't see this having been set up anywhere.

Windows can indeed do this (since Windows 2000). It's not necessarily hidden,
but the OS defaults to using drive letters for (new) partitions and most
people don't mind. In Disk Management you can assign not only drive letters
but also mount points for a partition (or both). I suppose you are left with
the C-drive to be more or less / like you mentioned. I don't know if programs
run into trouble because of hard coding of paths but that wouldn't be so much
Microsoft's fault I think. I used to mount a USB-stick this way because it
only contained a Truecrypt container, which would get its own drive letter
thru Truecrypt so I didn't care to have two drive letters for one piece of
storage. :)

[https://en.wikipedia.org/wiki/NTFS_volume_mount_point](https://en.wikipedia.org/wiki/NTFS_volume_mount_point)

~~~
Rafert
As usual the problem is with badly behaving software. E.g. I have a bunch of
software storing its crap in C:\Users\JohnDoe\Documents\ while I've changed
the location of that folder to D:\JohnDoe\Documents.

~~~
freeone3000
That's what happens when a folder accesses the actual path when you've changed
the CSIDL ID (relocating documents). If you've done it as an NTFS reparse
point, there wouldn't be any such C:\Users\JohnDoe\Documents, and trying to
navigate there would put you in D:\\.

------
stordoff
Probably not a deal breaker for most, but it seems a little weird that they
didn't plan for this. Surely a relatively small SSD for OS + large HDD for
games etc. isn't that unusual for Oculus' target market?

~~~
imaginenore
Isn't is the opposite? SSD for OS, programs and games, HDD for stuff like
photos, videos, movies?

Once I moved the games to SSD, load times improved tremendously.

~~~
emmelaich
With
[http://www.traynier.com/software/steammover](http://www.traynier.com/software/steammover)
you can physically move stuff to D: selectively, but leave them logically on
C:.

Of course it's just a gui on junction points, so you don't _need_ it but it's
free and easy to use.

[edit: not only for Steam, so should work for Oculus as well.]

~~~
daurnimator
You haven't need this sort of trick for ~3 years. Steam now supports multiple
drives/steam folders

~~~
emmelaich
Thanks, didn't know that.

Can you move games after installation?

~~~
snuxoll
Not out of the box through the UI. You would have to cut/paste the game
folders around, but Steam will automatically detect the move next time you
restart the client.

------
ryandrake
Wow... The Sea Drive. Brings back memories of those weird systems I had to use
in the dark, distant past, where programs had to inexplicably be aware of what
physical device a file was on in order to access it.

------
static_noise
This is what happens when your devs get the machines they want and not the
machines their customers have.

~~~
chipperyman573
Although, to be real, if you're running an Oculus, you have something similar
to the machine the devs want.

That said, SSD boot drive isn't super uncommon.

~~~
hyperion2010
Unless you explicitly got a drive to put games on because you got sick of
installing and uninstalling them all the time because you thought it wasn't
1995 any more.

------
FLGMwt
Odd that the twitchy front page of /r/Oculus made it's way on the front page
here, but I'll echo the ever-present Oculus founder's response that addressing
this is pretty high on their roadmap. Sauce:
[https://www.reddit.com/r/oculus/comments/4bd31n/oculus_softw...](https://www.reddit.com/r/oculus/comments/4bd31n/oculus_software_and_vr_applications_must_be/d18dw80)

~~~
hiddencost
Palmer said that fixing it was nontrivial. I wonder if that's "nontrivial
because all software needs to be tested carefully even though it's just adding
a configurable path" or "nontrivial for reason that are deep into OS
fundamentals"?

~~~
joeld42
My guess would be that once you allow something other than C:, you're opening
things up to running games off of all kinds of weird devices like external USB
drives, flash sticks, weird legacy hardware, network drives. This makes the
problem of streaming assets a lot more challenging. Some techniques, like
mmap'ing resources in, might require a NTFS formatted drive.

Limiting you to running off the system drive sidesteps a lot of those
problems, and lets you make certain assumptions (e.g. it's probably NTFS and
reasonably fast).

Also, drives that are not C: tend to disappear and reappear relatively
frequently. Having a launcher have to check and handle it semi-gracefully is
not simple. If you make people keep things on C:, they are more likely to
stick around.

~~~
ygra
> e.g. it's probably NTFS

It has to be since Vista.

------
PhasmaFelis
What I really love is that it has to go in "Program Files (x86)" specifically,
even though the Rift requires 64-bit Windows.

~~~
asveikau
A lot of times this happens because the installer itself is 32 bit even if the
payload contains amd64 binaries. (Similar situation occurred back in the Win16
-> Win32 transition.)

------
Bjartr
Not that big a deal, it's easy to use junction points / symlinks across
drives.

~~~
PhasmaFelis
Rule #1 of interface design: "Easy for me does not mean easy for the user."

You or I can immediately see the need for a symlink and implement it. The
average gamer has probably never heard of such a thing, and it might take
several hours of increasing frustration to discover that Oculus won't install
on their game drive, look for solutions, learn what a symlink is, and figure
out how to make one.

And even without that, if you fucked up but it's easy for the customer to fix,
you still fucked up. That's not an excuse.

~~~
Bjartr
Oh, I certainly it's a UX travesty from that standpoint. I was more commenting
from the perspective of why it's not quite as bad as the title makes it out to
be.

------
mappu
_> This is near the very top of our roadmap ... we are still in the process of
rolling out our support pages, don't take anything as final yet._

~~~
hyperion2010
The fact that this is hard to implement is a sad, sad, reminder of how shitty
backwards comparability can be. How, over the past 30 years has someone at MS
not taken the time to write a real abstraction for the file system? When I
first switched to linux 10 years ago I though 'Oh cool, you can mount stuff
wherever you want, why would you do that?!' Now it saddens me to realize that
the vast majority of computer users have never actually learned to use a file
system despite the fact that they are one of the most useful information
management tools ever invented, probably second only to the card catalog.

------
shmerl
Yeah, so much for their Linux support.

~~~
mappu
This is really AMD and NVIDIA's fault, not Oculus'. Hitting 90fps is hard
enough without taking a sizable performance hit from the linux graphics stack.

Valve pulled a similar move a while back where they prevented people on OS X
from playing games they had paid for (Portal), because the combination of
macbook IGP and OS X's OpenGL implementation dropped framerates to unplayable
levels. The game ran fine on Windows on the same hardware.

~~~
shmerl
May be they can use Vulkan now.

~~~
mappu
Vulkan's lower-level access certainly allows performance concerns to become
the domain of the engine rather than the driver. Games standardizing on a few
big engines seems to be doing more for linux than when operating systems
standardize on a few big APIs (which is necessary but not sufficient).

Coupled with other recent news (the AMDGPU effort, 900-series firmware for
kernel 4.6, ..) i'm cautiously optimistic about the future for 3D on linux -
but mostly i'm cautiously optimistic at the cross-vendor adoption of Vulkan.
Today a lot of enablement comes via vendor-specific tech (LiquidVR/GameWorks),
and Vulkan has kept the scope open for extensions just like OpenGL did. I hope
the industry has learned to avoid fragmentation after some of the horror
stories from early DirectX[1].

\--

1\. "The pixel shaders of Shader Model 1.0 were extremely specific to NVIDIA's
hardware. There was no attempt made whatsoever at abstracting NVIDIA's
hardware; SM 1.0 was just whatever the GeForce 3 did." \--
[http://programmers.stackexchange.com/a/88055](http://programmers.stackexchange.com/a/88055)

~~~
pjmlp
> I hope the industry has learned to avoid fragmentation after some of the
> horror stories from early DirectX[1].

They learned it so well, that except for urban legends OpenGL isn't used at
all in game consoles and if it wasn't for Apple's adoption of OpenGL ES for
iOS gaming, it would have been ignored as well.

And now it has been shown the door on Apple platforms.

~~~
shmerl
Except Apple's platforms will die out as high end gaming targets. As VR
developers already said multiple times. Apple doesn't care about it
apparently.

~~~
pjmlp
The only VR guys that said that are Valve, which is just a studio in a sea of
AAA studios.

How well are they selling those Steam machines?

What about that OpenGL and Vulkan support on the PS4, Wii and XBox?

The games industry cares about delivering game experiences and selling IP, not
FOSS APIs.

~~~
shmerl
_> The only VR guys that said that are Valve_

No one argued with that because what they said is true. Apple are simply out
of the VR picture. At least for now.

 _> How well are they selling those Steam machines?_

Good enough I suppose, given that soon after Steam Machines were released,
Sony and MS rushed to announce that they plan to update their hardware more
frequently. Competition works. It doesn't mean it won't get even better.

 _> The games industry cares_

You keep talking about it as if it's some single mind. It's not.

 _> What about that OpenGL and Vulkan support on the PS4, Wii and XBox?_

You can forget about OpenGL. I expect Sony to add Vulkan supprot first, and
then MS add it under pressure a few years later.

~~~
pjmlp
> No one argued with that because what they said is true. Apple are simply out
> of the VR picture. At least for now.

Until they release their own VRKit.

> Good enough I suppose, given that soon after Steam Machines were released,
> Sony and MS rushed to announce that they plan to update their hardware more
> frequently. Competition works. It doesn't mean it won't get even better.

So what are those dangerous the numbers of Steam Machines running SteamOS
sales?

Sony and MS have little to fear from those sales on a global scale, specially
since most Steam Machines were actually being sold with Windows.

> You keep talking about it as if it's some single mind. It's not.

I was an IGDA member, attended a couple GDCE bot at London and Cologne, was
part of the regular meetings of a game developments degree, had the
opportunity to visit a well known AAA studios, including SCEE.

Didn't stay as my position in regards to private life is not what the industry
expects from the majority of developers.

What is you experience on the industry?

> You can forget about OpenGL. I expect Sony to add Vulkan supprot first, and
> then MS add it under pressure a few years later.

Sony will only add Vulkan on their Android phones, because Google added it.

They will never replace LibGCM with Vulkan, when their API and existing tools
can do so much more.

~~~
shmerl
_> Until they release their own VRKit._

Possible. Let them.

 _> So what are those dangerous the numbers of Steam Machines running SteamOS
sales?_

No idea, but MS and Sony's fear is telling. They are scared that their
comfortable grip on the market will be busted. And that's good. Without
competition they would have kept their 7 year hardware refresh cycle.
Monopolists don't like change and move forward only under the pressure of
competition. In result, consoles hardware will be more up to date, and games
won't be held back by it like they often were until now. Thanks to Steam
Machines.

 _> had the opportunity to visit a well known AAA studios_

You mean controlled by legacy publishers and old media? Those are bad
examples. It's not where innovation happens.

 _> What is you experience on the industry?_

I'm interested in innovative studios, not in the old media controlled ones.
For instance Cloud Imperium are working on adding Vulkan support to CryEngine
at present. That's interesting.

 _> Sony will only add Vulkan on their Android phones, because Google added
it._

Sony will only benefit by adding Vulkan on their PS#, and in the processing
giving MS a kick in the rear. Wait and see.

------
FLGMwt
FWIW, this looks like it might only apply to games purchased through Oculus
Home, the Steam equivalent for the Oculus Rift (or perhaps the UPlay
equivalent). Games/experiences that aren't distributed via Oculus Home
(SteamVR, Steam games w/ Oculus support, independently distributed games)
appear to not be beholden to this limitation.

~~~
eghad
For the DK2 maybe, but for CV1 this limitation is probably imposed by firmware
(something that would be widely known if not for the NDA). Wouldn't surprised
if this happens to be the result of whatever DRM they're employing.

It's an annoyance for users that use SSDs or multiple partitions; I know I can
use a symlink (I doubt all Oculus users will though), but the fact that this
was overlooked is a little absurd. Fingers crossed for a day one fix, or at
least an actual explanation.

------
altitudinous
Minimum viable product.

------
valine
Well that's weird. Must have something to do with the Windows registry. Maybe
someone who knows more can elaborate.

~~~
brudgers

      C:\program files(x86)\
    

is where 32 bit programs go on Windows. Just like fstab goes in \etc on Linux.
Generally, putting program files elsewhere winds up being a user managed pain
in the ass at best and breaking dependencies at worst...by which I mean that
eventually a user winds up with some program that won't run from K:\my
programs\, if you don't believe me, well here's an example.

~~~
nightski
Sorry but this is just not true. Steam, Origin, UPlay, and just about every
other gaming marketplace allows you to install the gaming library anywhere you
went. Heck steam allows you to straight up and move the steam folder anywhere,
delete everything but the games and the steam.exe and it will repair itself.

~~~
kirrent
Steam only added the ability to store games elsewhere relatively recently. It
was a long sought after feature that took ages to implement. I doubt it was
really easy and just a case of no-one caring.

~~~
nightski
By recently you mean in the last 5-10 years. It has been around for ages.

Is it easy? Probably not but that is irrelevant because the competition
already does it.

~~~
kirrent
Yeah, I had a look back and it's been around longer than I thought. I was so
used to symlinking I didn't realise the feature has existed since 2011 or
2012.

------
keyle
Seems fair enough for a fairly new software.

~~~
fungos
Don't think so. It looks more like some really bad choices mostly like bad
dependencies or hard-coded things or something else. But to me this reflects
the product quality and most importantly a big yellow warning on software
quality.

~~~
brudgers
To me, closely following the standards for Windows means less code and in
particular less code that introduces edge cases for the sake of edge cases.

~~~
brazzledazzle
Is "installing only to C:\" an actual Windows standard? I'm fairly certain
Windows doesn't have a problem installing software to different drives.

~~~
brudgers
Per the article Occulus installs to

    
    
      C:\program files(x86)\
    

and that is the standard location for 32 bit (x86) program installation on
Windows 64 bit systems. Many, but not all programs [obviously] can be
installed at non-standard locations.

See _Installer and Logo Certification Requirement_ 2.4 here:
[https://msdn.microsoft.com/en-
us/library/windows/desktop/aa3...](https://msdn.microsoft.com/en-
us/library/windows/desktop/aa372825\(v=vs.85\).aspx)

~~~
imron
It's not standard - at least not per any official MS documentation. There are
specific API calls you are supposed to make to query the program files
directory, which will be different depending on whether you are a 32bit or
64bit program, and where the user/administrator has configured the program
files folder to be.

This is also like windows programming 101, so I'm honestly a bit shocked to
see oculus dropping the ball on this.

~~~
cnvogel
Specifically [https://msdn.microsoft.com/en-
us/library/windows/desktop/bb7...](https://msdn.microsoft.com/en-
us/library/windows/desktop/bb762188\(v=vs.85\).aspx)

[https://code.msdn.microsoft.com/windowsapps/CppShellKnownFol...](https://code.msdn.microsoft.com/windowsapps/CppShellKnownFolders-7df114ad)

hr = SHGetKnownFolderPath(FOLDERID_ProgramFiles, 0, NULL, &pszPath);

------
chetanahuja
Party like it's 1999 !!

------
nzoschke
I haven't had a C:\ drive in a decade.

~~~
ocdtrekkie
Obviously "I'm proud I'm not a Windows user" comments are kinda irrelevant for
an article about a device that currently only works on Windows, am I right?

