This is an update for the Linux version of X3 Reunion which fixes a problem when trying to launch the game without Steam. We would like you to test and confirm that the fix is working. Please post here with your system details, and indicate whether or not it works for you. Thanks in advance for your time!
Test case without Steam
Install X3 Reunion via Steam.
In your Steam library. right-click on the game and select "Properties".
On the Betas tab, enter the password V8tY5xR5tE6h into the text field and press "Check Code".
Opt into the newly unlocked private_beta.
Go back to your Steam library and right-click on the game, then select "Manage -> Browse local files".
Double-click on X3R_config to launch X3 Reunion.
Test case with Steam
Install X3 Reunion via Steam.
In your Steam library. right-click on the game and select "Properties".
On the Betas tab, opt into public_beta.
Start X3 Reunion from your Steam library in the normal way
Test case from command line
Opt into private_beta as described above in Test case without Steam
Report any error messages which get output to the command line.
Known Issues
If you launch the game and it cannot find an audio device, then a popup will be displayed. This may happen on some systems because of the way sound works on some (older) Linux versions. If you dismiss the popup with "OK" then the game will start with no audio. If you click "Cancel" then it will exit.
➜ X3 - Reunion ./X3R_config (base) 13:50:19
./X3R_config: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
Running the binary through ldd, it appears that libgdk-x11-2.0.so.0 is missing as well.
Works fine when launching it through Steam.
System info:
Spoiler
Show
Computer Information:
Manufacturer: ASUSTeK COMPUTER INC.
Model: ROG STRIX B550-E GAMING
Form Factor: Desktop
No Touch Input Detected
Processor Information:
CPU Vendor: AuthenticAMD
CPU Brand: AMD Ryzen 9 5900X 12-Core Processor
CPU Family: 0x19
CPU Model: 0x21
CPU Stepping: 0x0
CPU Type: 0x0
Speed: 4950 MHz
24 logical processors
12 physical processors
Hyper-threading: Supported
FCMOV: Supported
SSE2: Supported
SSE3: Supported
SSSE3: Supported
SSE4a: Supported
SSE41: Supported
SSE42: Supported
AES: Supported
AVX: Supported
AVX2: Supported
AVX512F: Unsupported
AVX512PF: Unsupported
AVX512ER: Unsupported
AVX512CD: Unsupported
AVX512VNNI: Unsupported
SHA: Supported
CMPXCHG16B: Supported
LAHF/SAHF: Supported
PrefetchW: Unsupported
Operating System Version:
Ubuntu 22.04.3 LTS (64 bit)
Kernel Name: Linux
Kernel Version: 6.2.0-34-generic
X Server Vendor: The X.Org Foundation
X Server Release: 12101004
X Window Manager: GNOME Shell
Steam Runtime Version: steam-runtime_0.20230919.60656
Video Card:
Driver: NVIDIA Corporation NVIDIA GeForce RTX 3090/PCIe/SSE2
Driver Version: 4.6.0 NVIDIA 535.113.01
OpenGL Version: 4.6
Desktop Color Depth: 24 bits per pixel
Monitor Refresh Rate: 59 Hz
VendorID: 0x10de
DeviceID: 0x2204
Revision Not Detected
Number of Monitors: 2
Number of Logical Video Cards: 1
Primary Display Resolution: 3840 x 2160
Desktop Resolution: 6400 x 2160
Primary Display Size: 23.98" x 13.74" (27.60" diag), 60.9cm x 34.9cm (70.1cm diag)
Primary Bus: PCI Express 16x
Primary VRAM: 24576 MB
Supported MSAA Modes: 2x 4x 8x 16x
Sound card:
Audio device: %1$s
Memory:
RAM: 48071 Mb
VR Hardware:
VR Headset: None detected
Miscellaneous:
UI Language: English
LANG: en_US.UTF-8
Total Hard Disk Space Available: 654057 MB
Largest Free Hard Disk Block: 42324 MB
Storage:
Number of SSDs: 9
SSD sizes: 1024G,1000G,1000G,1000G,256G,0B,0B,0B,0B
Number of HDDs: 0
Number of removable drives: 0
It's much better than I was hoping. It's only one package which seems to be missing to get things installed. I haven't got access to an Ubuntu machine at the moment, but it should be libgtk2.0-0:i386 which is missing (I will confirm tomorrow). On Archlinux the package is lib32-gtk2.
(or use whatever graphical package manager you have)
We can't realistically ship GTK with the game, so I'll see if I can figure out some way to detect the missing library and display a notification if it's missing.
I went and tested the private beta you've listed. Inside steam, I appear to have no issues. Outside steam, just the lib32-gtk2 issue.
I've been running the X3 games natively without steam for a fair bit now, by simply copying the Steam installs to another folder (to keep a modded install separated from a vanilla install, mostly)
Besides the lib32-gtk2 thing, I have had almost no issues at all running it both modded and vanilla, I can even use the Windows version of Cycrow's plugin manager in Wine with a dummy or the non-steam .exe in place.
For a while I was having an issue where the music was not playing, I converted the soundtrack from .mp3 to .ogg and it started working - this was likely an issue specific to my system. I don't get the audio popup itself though.
System specs for reference:
32GB RAM
i7-8700K 5.0GHz
RTX 2080 Super 8GB
using 1080p60 resolution, dual monitor setup
Arch w/ KDE Plasma, X11 session
However, it gives me the audio popup mentioned in the known issues. This does not happen when using the Steam version.
'Airstrike' Ivanov wrote: ↑Tue, 17. Oct 23, 22:55
I went and tested the private beta you've listed. Inside steam, I appear to have no issues. Outside steam, just the lib32-gtk2 issue.
Thanks again for testing this. It's gratifying to know that it is working so easily. The audio popup I added because, natively, X3 will usually fall back to ALSA as a backend, which can struggle with multiple things accessing the soundcard. There is a fix in the link provided in the popup. The reason that it works in Steam is that the steam runtime it runs in has a working portaudio setup. Running without the steam runtime the situation can change, I think technically pipewire, pulseaudio and portaudio should all provide mixers for this to work, but you also have to have the 32 bit versions of those set up and working. As I said, if it doesn't find these, it falls back to ALSA, and that doesn't like concurrent soundcard accesses. In this case it will notify you of this. The fix is to setup 'dmix' within ALSA. While the ALSA docs claim this isn't necessary for later versions of ALSA, it did solve the problem on my machine, so I think it's the best fallback option we have.
'Airstrike' Ivanov wrote: ↑Tue, 17. Oct 23, 22:55
I've been running the X3 games natively without steam for a fair bit now, by simply copying the Steam installs to another folder (to keep a modded install separated from a vanilla install, mostly)
Besides the lib32-gtk2 thing, I have had almost no issues at all running it both modded and vanilla,
This is what this test was primarily about, making it so that the X3 games run natively more easily. Via the steam runtime we barely had to worry about dependencies, and updates breaking things, but once we're outside of that, all bets are off
$ ./X3R_main
../X3/s_linux/sdl2/sio.cpp : main : 1250 : dPStub: atexit (_quit);
../X3/s_linux/init.cpp : XMenuInit : 259 : dStub
../X3/s_linux/simd_float.cpp : lgp_get_cpu_flags : 12 : dStub
ERROR: CPUID is not supported, can't detect CPU features
Trying to continue anyway with minimal settings
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 233 : dPStub: Setting D3DF_ALPHATRANS to tr ue without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 236 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 238 : dPStub: Setting D3DF_MODULATEALPHA to true without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 241 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 243 : dPStub: Setting D3DF_MULTITEXTURE to true without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 246 : dStub
../X3/s_linux/init.cpp : S_GetCPUSpeed : 346 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_InitVideo : 1131 : dPStub: SDL_WM_SetIcon( icon, NULL );
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 233 : dPStub: Setting D3DF_ALPHATRANS to true without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 236 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 238 : dPStub: Setting D3DF_MODULATEALPHA to true without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 241 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 243 : dPStub: Setting D3DF_MULTITEXTURE to true without test
../X3/s_linux/sdl2/svideo.cpp : S_SetDefault3DSettings : 246 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 401 : dStub
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 404 : glGetString(GL_VENDOR) = AMD
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 405 : glGetString(GL_RENDERER) = AMD Radeon RX 5700 XT (navi10, LLVM 16.0.6, DRM 3.54, 6.5.7-maxz)
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 406 : glGetString(GL_VERSION) = 4.6 (Compatibility Profile) Mesa 23.1.8
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 407 : glGetString(GL_SHADING_LANGUAGE_VERSION) =4.60
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 443 : dPStub: Need to detect if postprocess must be turned off
../X3/s_linux/sdl2/svideo.cpp : S_Create3DDevice : 458 : dPStub: Not sure if we don't need to load some LightMaps here?
../X3/s_linux/sdl2/svideo.cpp : W_RectFill : 1452 : dStub
../X3/s_linux/init.cpp : Int_OpenAL_Init : 920 : al first err 0
dS3D_NameSpace(InitPostProcessFX)dS3D_NameSpace(InitPostProcessFX)dS3D_NameSpace(InitPostProcessFX)dS3D_NameSpace(InitPostProcessFX)dS3D_NameSpace(InitPostProcessFX)
[mpegvideo @ 0x5955e880] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x5955e880] Estimating duration from bitrate, this may be inaccurate
../X3/s_linux/s3d.cpp : S_3DCleanAndOptimizeMesh : 3217 : dStub
../X3/s_linux/s3d.cpp : S_3DRenderInit : 11936 : dStub
../X3/s_linux/s3d.cpp : S3D_CheckVisibility : 15567 : dPStub: What SHOULD this be, no documentation Ive found shows [] operators for this - Confirmed it is the nth float so 8 would be m[1][3]
../X3/s_linux/s3d.cpp : S_3DRenderExit : 11975 : dStub
[mpegvideo @ 0x592c1a00] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x592c1a00] Estimating duration from bitrate, this may be inaccurate
[mpegvideo @ 0x592db520] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x592db520] Estimating duration from bitrate, this may be inaccurate
----
Warning! Some triangles have zero area!
----
[mpegvideo @ 0x590dff00] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x590dff00] Estimating duration from bitrate, this may be inaccurate
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
----
Warning! Some triangles have zero area!
----
[mpeg @ 0x63f1f740] max_analyze_duration 5000000 reached at 5000000
[mpeg @ 0x63d5de80] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x63d52a80] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x63d52a80] Estimating duration from bitrate, this may be inaccurate
[mpegvideo @ 0x645062c0] max_analyze_duration 5000000 reached at 5000000
[mpegvideo @ 0x645062c0] Estimating duration from bitrate, this may be inaccurate
----
Warning! Some triangles have zero area!
----
../X3/s_linux/sys_sfx.cpp : S_CloseAudio : 1196 : dStub
AL lib: (EE) alc_cleanup: 1 device not closed