X-Wing & TIE Fighter (XWVM)

2.0 4.0

An imperial Star Destroyer infront of the Death Star
An imperial Star Destroyer infront of the Death Star

Primary Buffer Panel

I’m fortunate to be allowed to play the closed alpha of the XWVM project, that allows me to re-experience the classic X-Wing and TIE Fighter games with a modern engine (and a HD assets pack replacing most of the original models). XWVM is not an official product from Lucasfilm Ltd. or Disney. It is not endorsed or authorized by either. It is a fan recreation of the game engine used to play X-Wing and TIE Fighter for the sake of accessibility and requires the original game assets to work.

xvwm-xwing-simpit-homecockpit.jpg
xvwm-xwing-simpit-homecockpit.jpg

While it doesn’t feature any API for ship telemetry (yet?) I can still make use of my Primary Buffer Panel by duplicating the targeting monitor to my MFD, since this one can, unlike the original games, be used very well for actual targeting.

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.

The engine works without any out of the box but can be tweaked with the usual launch parameters to get it to expand over multiple displays.

It happily read any joystick I threw at it on both versions, Proton and native Linux.

Head tracking

It also supports OpenTrack and TrackIR head tracking. Sadly it’s missing OpenTrack on Linux PC at the time of writing but I did raise a ticket for this and it hopefully gets implemented using UDP at some point too. There’s also an option to assign joystick axis for this but nothing I tried here had any effect on camera movements.

Demo

Heavily cut VOD of one of my live stream.

Watch this video on YouTube PeerTube