No Man's Sky

1.0 2.0 4.0

Entering atmosphere in No Mans Sky
Entering atmosphere in No Mans Sky

Primary Buffer Panel

Ah yes, No Man's Sky really changed a lot over the years. What it still doesn’t do is supporting joysticks. Or head tracking. We’re very used to this by now though and manage.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

This remaps a virtual joystick from Opentrack to the axis of a gamepad used for look-around in NMS.

SDL_GAMECONTROLLERCONFIG=“000022e86f70656e747261636b206800,opentrack-to-nms,rightx:a3,righty:a4,platform:Linux,crc:e822,”

Head tracking

NMS does support a gamepad but it also reads/maps all gamepads to a single device. It makes no difference between multiple gamepads!

This leaves me with a very limited amount of possible buttons on the HOTAS after mapping that to one virtual gamepad using MoltenGamepad (I usually split that one up into multiple gamepads for braindead games).

So for additional buttons I used AntiMicroX to map the rest as keyboard presses.

Doing so I noticed that NMS does “look-around” on the right stick and this is where Opentrack comes into the play. It offers a joystick output (using evdev) and that is also just… a gamepad! Needs some remapping though to get pitch and jaw to the proper axis for NMS. This is done via SDL env (basically what Steam does under the hood but boy their GUI for that sucks):

SDL_GAMECONTROLLERCONFIG=“000022e86f70656e747261636b206800,opentrack-to-nms,rightx:a3,righty:a4,platform:Linux,crc:e822,”

And there you have it. NMS with my trusty old X52 Pro and a DIY headtracker for 5 bucks πŸ€“

Demo

Watch this video on YouTube PeerTube BekoPharm

PS: I’m aware that the recording quality sucks. This was very spontaneous with a webcam sitting on my chair. I basically just finished my happy dance that this started working properly and decided to smash that recording button. PC was not even in gamemode.