Nibre / MotherVR

This Mod brings current generation VR support to the game Alien: Isolation
https://twitter.com/nibre_
936 stars 56 forks source link

Linux support? #99

Open alex9099 opened 6 years ago

alex9099 commented 6 years ago

Hi,

So Alien Isolation is ported to linux by Feral, would it be possible to port this mod also to linux? There is SteamVR linux and OpenHMD, both supporting Oculus Rift (no pos tracking :( ) and HTC Vive (With pos tracking on SteamVR)

frostworx commented 5 years ago

now with the steam client beta allowing you (since yesterday) to install the windows version of a game which has a linux port there's a chance we can get it to work using steamplay. haven't tried it yet.

JoshWobbles commented 5 years ago

I don't think Steam VR is Linux compatible

frostworx commented 5 years ago

of course it is!

frostworx commented 5 years ago

just a few titles which work excellent on my linux machine (with a htc vive): beatsaber, indeath, skyrim vr, fallout 4 vr, google earth vr, fruit ninja vr, eleven table tennis, redout. (I have more than 100 vr titles on steam, and most of those I tested work just fine on linux ootb)

frostworx commented 5 years ago

nope, game doesn'T launch when the patched dll is "enabled". haven't debugged this.

Patola commented 4 years ago

Trying it on proton too, it loads the DLL then unloads it for some reason. Used dxgi as native,builtin (other modes were attempted, with no changes to the gameplay and no new options). The initial is for applying to whatever directory it is in, used without too.

Launch parameters: PROTON_LOG=1 %command% -steamvr. Of course, SteamVR is called beforehand. This is what happens: the game doesn't start, and this is what steam-214490.log shows:

111543.883:00f0:00f4:trace:loaddll:load_so_dll Loaded L"C:\\windows\\system32\\dxgi.dll" at 0x7cb00000: builtin
111543.885:00f0:00f4:trace:loaddll:load_so_dll Loaded L"C:\\windows\\system32\\winex11.drv" at 0x7c8c0000: builtin
111543.919:00f0:00f4:trace:seh:raise_exception code=c0000005 flags=0 addr=0x10001e1e ip=10001e1e tid=00f4
111543.919:00f0:00f4:trace:seh:raise_exception  info[0]=00000000
111543.919:00f0:00f4:trace:seh:raise_exception  info[1]=00000008
111543.919:00f0:00f4:trace:seh:raise_exception  eax=00000000 ebx=0032fd24 ecx=0032e204 edx=00000000 esi=00000001 edi=00000001
111543.919:00f0:00f4:trace:seh:raise_exception  ebp=0032e734 esp=0032e5e8 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010246
111543.919:00f0:00f4:trace:seh:call_stack_handlers calling handler at 0x1002a7f0 code=c0000005 flags=0
111543.920:00f0:00f4:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\api-ms-win-core-fibers-l1-1-1.dll" : builtin
111543.920:00f0:00f4:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\api-ms-win-core-localization-l1-2-1.dll" : builtin
111543.920:00f0:00f4:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\api-ms-win-core-synch-l1-2-0.dll" : builtin
111543.920:00f0:00f4:trace:seh:call_stack_handlers handler at 0x1002a7f0 returned 1
111543.920:00f0:00f4:trace:seh:call_stack_handlers calling handler at 0x7bcf2ea0 code=c0000005 flags=0
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind code=c0000005 flags=2
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind eax=00000000 ebx=0032e590 ecx=c0000005 edx=0032e834 esi=0032e2c4 edi=0032e834
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind ebp=0032e1a8 esp=0032e1a0 eip=7bcf2d2e cs=0023 ds=002b fs=0063 gs=006b flags=00000206
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind calling handler at 0x7bcce7b0 code=c0000005 flags=2
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind handler at 0x7bcce7b0 returned 1
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind calling handler at 0x1002a7f0 code=c0000005 flags=2
111543.920:00f0:00f4:trace:seh:__regs_RtlUnwind handler at 0x1002a7f0 returned 1
111543.920:00f0:00f4:err:module:LdrInitializeThunk "dxgi.dll" failed to initialize, aborting
111543.920:00f0:00f4:err:module:LdrInitializeThunk Initializing dlls for L"Z:\\jogos2\\steam\\steamapps\\common\\Alien Isolation\\AI.exe" failed, status c0000005

If I set the dxgi library in any other mode (like the default builtin,native), it behaves like that when launching the game: First we get a window saying "Alien: Isolation will launch into an environment in your VR HMD as well as on your desktop. Performance may not be acceptable in this mode. To launch this game only on your desktop please exit SteamVR before launching the game." Then in the game nothing is different, and it does not even appear in the HMD. There are no new entries under Options.

frostworx commented 4 years ago

doesn't help you, but nice to see someone else interested in it as well. unfortunately it looks like that all similar VR mods still don't work with dxvk/proton yet. in case this project is really abandoned lets hope we get the sourcecode one day

Bluscream commented 4 years ago

why not use a VM or dual-boot for gaming?

frostworx commented 4 years ago

nothing is worth a windows installation

alex9099 commented 4 years ago

why not use a VM or dual-boot for gaming?

not everyone wants to use windows ;) Dual booting or a VM would be just... well, nvm, i don't really need linux support, so don't bother, and well, then we got nothing for linux, cause "it works on windows, so why the f do it for linux" (who says linux says macos, same drill)

Bluscream commented 4 years ago

Yeah, true. If you chose to not game, just don't game :P

Patola commented 4 years ago

@Bluscream basically because Linux offers much more freedom, and you're not locked to a system that tells you how your property should behave -- so you actually own your computer, instead of having to beg to a company like Microsoft. Also, Microsoft's EULA is not acceptable at all, and I refuse to sign it.

Can I understand how MotherVR works so I can try and tinker with stuff to achieve success? Wine (the windows compatibility layer -- not emulator -- that runs on Linux has the following concepts: "builtins" and "native" libraries: Builtin means: Provided by Wine. Native means: Not provided by Wine (eg installed by an application or copied from a Windows installation).

Having said that, wine also has its own dxgi.dll which resides in its c:\windows\system32 (the 64-bit version) and c:\windows\syswow64 (the 32-bits version). This API translates DirectX calls to vulkan and passes them to the native linux vulkan driver.

As I understand MotherVR works, it loads its "local" dxgi.dll which intercepts directx calls to insert things in the middle, but where are these directx calls actually called? Are they implemented inside MotherVR's dxgi.dll or are they then passed to c:\windows\syswow64\dxgi.dll ? I have noticed that MotherVR's dxgi.dll is 32-bits, is that as intended?

doragasu commented 2 years ago

We would for sure get Linux support if sources were made public, as requested in #53. And I would also like to have it.

frostworx commented 2 years ago

still hoping as well

Patola commented 2 years ago

Me too. I tried every way I could think of to get wine/proton to load the DLL, but failed. Having the sources publicly available (even with a non-free license) would help clearing up things a lot.