A set of scripts to automatically set up Supreme Commander: Forged Alliance with Forged Alliance Forever on Linux. Tested on Ubuntu, Fedora, and Arch, should work on other distributions as well.
i386
architecture is enabled: sudo dpkg --add-architecture i386
sudo apt install git wget jq cabextract libvulkan1:amd64 libvulkan1:i386 libpulse0:amd64 libpulse0:i386 libfreetype6:amd64 libfreetype6:i386 libxcomposite1:amd64 libxcomposite1:i386 libxrandr2:amd64 libxrandr2:i386 libxfixes3:amd64 libxfixes3:i386 libxcursor1:amd64 libxcursor1:i386 libxi6:amd64 libxi6:i386
sudo dnf install git wget jq cabextract vulkan-loader.x86_64 vulkan-loader.i686 pulseaudio-libs.x86_64 pulseaudio-libs.i686 freetype.x86_64 freetype.i686 libXcomposite.x86_64 libXcomposite.i686 libXrandr.x86_64 libXrandr.i686 libXfixes.x86_64 libXfixes.i686 libXcursor.x86_64 libXcursor.i686 libXi.x86_64 libXi.i686
multilib
in pacman
yet, go to edit file /etc/pacman.conf
and make sure the following are uncommented (including header):
[multilib]
Include = /etc/pacman.d/mirrorlist
And then upgrade the system sudo pacman -Syu
sudo pacman -Syu git wget jq cabextract vulkan-icd-loader lib32-vulkan-icd-loader libpulse lib32-libpulse freetype2 lib32-freetype2 libxcomposite lib32-libxcomposite libxrandr lib32-libxrandr libxfixes lib32-libxfixes libxcursor lib32-libxcursor libxi lib32-libxi
/etc/portage/package.use/faforever
(or whatever file you want in that folder):
media-libs/vulkan-loader abi_x86_32
media-libs/libpulse abi_x86_32
media-libs/freetype abi_x86_32
x11-libs/libXcomposite abi_x86_32
x11-libs/libXrandr abi_x86_32
x11-libs/libXfixes abi_x86_32
x11-libs/libXcursor abi_x86_32
x11-libs/libXi abi_x86_32
sudo emerge -avuND @world
sudo emerge -a dev-vcs/git net-misc/wget app-misc/jq app-arch/cabextract media-libs/vulkan-loader media-libs/libpulse media-libs/freetype x11-libs/libXcomposite x11-libs/libXrandr x11-libs/libXfixes x11-libs/libXcursor x11-libs/libXi
(feel free to exclude any ebuilds that is already present in your system, no need to rebuild)nix-shell -p steam-run jq cabextract wget git --run "steam-run bash"
to start a shell with the necessary environment./run
, will need to be executed within this environment.install-shortcut.sh
will need to be edited to include the command abovegit
, wget
, jq
, cabextract
libvulkan.so.1
(Vulkan ICD loader)libpulse.so.0
(pulseaudio client library, required even if using PipeWire)libfreetype.so.6
(FreeType font rendering library)libXcomposite.so.1
(XComposite extension client library)libXrandr.so.2
(XRandR extension client library)libXfixes.so.3
(XFixes extension client library)libXcursor.so.1
(XCursor extension client library)libXi.so.6
(XInput extension client library)mesa-vulkan-drivers
. On Fedora, this is mesa-vulkan-drivers.i686
. On Debian, this is mesa-vulkan-drivers:i386
. On Arch, this is lib32-vulkan-DRIVERNAME
, where DRIVERNAME is radeon
or intel
. If using Nvidia, ensure you have the 32-bit driver package installed. These should already be installed, although they may be missing if you have installed Steam within Flatpak.PROTON_NO_ESYNC=1 PROTON_NO_FSYNC=1 %command%
in launch options. If you only wish to play on FAF, this step is not necessary.git clone https://github.com/FAForever/faf-linux
faf-linux
within the game directory or any other Steam-managed directories. It will not function properly../setup.sh
to set up the local wine prefix, the FAF client, java, and others
common-env
then re-run ./set-client-paths.sh
and ./install-shortcut.sh
.BYPASS_STEAM=1 GAME_PATH="/path/to/Lutris/gog/supreme-commander-forged-alliance/drive_c/GOG Games/Supreme Commander Forged Alliance" PROTON_PATH="/path/to/Steam/steamapps/common/Proton - Experimental" ./setup.sh
./run
and log in./set-client-paths.sh
./run
./install-shortcut.sh
. FAF will show up as "Forged Alliance Forever" in your application launcher../update.sh perform
to update necessary components automaticallyThe script ./update-component.sh
is provided for convenient updating of certain parts. Generally you do not need to use this.
./update-component.sh dxvk <new version>
. Versions look like "1.9.3"../update-component.sh faf-client <new version>
. Versions look like "2021.10.0"../update-component.sh java "<java url>"
.
versions
file for current working URLs.Please check the section below for common troubleshooting steps. Failing that, please ping @iczero
on the FAF Discord guild in the tech-support-forum
channel.
/fullscreen <xres> <yres>
to the end, where xres
and yres
match your monitor's resolution"/home/iczero/opt/faf-linux/launchwrapper" "%s" /fullscreen 1920 1080
./run-offline
unless it is edited as well../run-offline
, click past the intro videos until you get to the main menu, exit the game, then try starting a game from FAF again./launchwrapper winecfg
, go to "Graphics", then check the "Emulate a virtual desktop" box. Note: This may cause everything to break. If it does, just run winecfg
again and uncheck the box.
libxcomposite
or libXcomposite
from package manager (the 32-bit version as well)
libxcomposite:amd64
and libxcomposite:i386
libXcomposite
and libXcomposite.i686
libxcomposite
and lib32-libxcomposite
/etc/resolv.conf
that netty does not understand (for example, scoped IPv6 addresses). Install systemd-resolved
if possible.common-env
, set use_gamescope="1"
(or add that line if it does not already exist). Gamescope does not support the Nvidia driver.game_data_path
in common-env
, then replace Local Settings/Application Data
with AppData/Local
.0024:err:vulkan:__wine_create_vk_instance_with_callback Failed to create instance
0024:err:vulkan:wine_vk_instance_load_physical_devices Failed to enumerate physical devices, res=-3
terminate called after throwing an instance of 'dxvk::DxvkError'
lib32-amdvlk
. AMDVLK is the old AMD Vulkan driver and causes many issues. Unless you are sure you need AMDVLK, uninstall lib32-amdvlk
, and if necessary, install lib32-vulkan-radeon
(newer AMD RADV driver) in its place.Skipping Vulkan 1.2 adapter
DXVK: No adapters found.
./update-component.sh dxvk 1.10.3
) then add the line dxvk_pin_version="1"
at the bottom of common-env
to prevent the updater script from reverting to a newer version of dxvk.setup.sh
hangs on the wineboot
step
libXrandr
will cause wineboot
to hang on Proton, see https://github.com/ValveSoftware/wine/issues/147.