How to run the game on Linux

Allegiance discussion not belonging in another forum.
Post Reply
fuzz
Posts: 9
Joined: Mon Dec 30, 2019 9:12 pm

Post by fuzz »

The game runs mostly without issue on linux via Steam Play. The only missing dependency is directplay. This guide will cover how to install the game on steam and install the missing dependency. See the end for some extra tips.

Steam

You need to have Steam installed. Follow your distribution's recommended installation approach.

I prefer the Steam flatpak because it inherently handles a lot of dependencies and works across any system. However, I have tested the repository installed client on both Fedora (Workstation 31, Workstation rawhide, Silverblue rawhide) and Ubuntu (18.04.3, 19.10).

Installing protontricks

A winetricks wrapper called protontricks needs to be used for the directplay installation. Follow installation instructions on the protontricks github page.

If using the flatpak version of Steam, please take special note of the "Flatpak-specific installation instructions" on the protontricks installation page.

If not using the flatpak version of Steam, you will also need to install winetricks to a location on your PATH.

Installing the game

Once Steam is installed, you need to enable Steam Play for unofficial titles. This is because the game is not verified by Valve, and probably wont be unless directplay is shipped be default or is properly added to wine.

In Steam, go to Settings -> Steam Play. Under the Advanced section, make sure Enable Steam Play for all other titles is checked.

Select Proton 4.11-11 (or a newer version) from the drop down. Click OK. Steam will need to be restarted.

After Steam is restarted, install Microsoft Allegiance.

Installing directplay

Before you can install directplay, you need to run the game once so the wine prefix is created. Go ahead and do so.

Windowed mode is recommended, and will still be full screen due to how Proton works anyway. You can test the game using the built in training missions, and even confirm you can't connect to the multiplayer lobby. If, somehow, you can connect to the lobby without installing directplay, please let us know!

Exit the game and open a terminal. Run one of the following commands.

Code: Select all

protontricks 700480 directplay
(native Steam install)

or

Code: Select all

protontricks-flat 700480 directplay
(flatpak Steam install)

If protontricks isn't found, it's probably at ~/.local/bin/protontricks:

Code: Select all

~/.local/bin/protontricks 700480 directplay
Play

Run the game again and confirm you can connect to the lobby. Everything should be working now. Enjoy the game!

Other notes

D9VK

Proton 4.11-11 includes D9VK, a Direct3D 9 implementation over Vulkan. If your system supports vulkan, give it a shot! It can be enabled by setting the following in the game's launch options:

Code: Select all

PROTON_USE_D9VK=1 %command%
Please let us know if this impacts your performance in any way, positively or negatively. It seems to run smoother for me.

Extra network interfaces

I continued to have an issue connecting to the lobby on a machine with an virtual network interface as a bridge for virtual machines. Removing it allowed me to connect to the lobby again, but bringing it down might work just as well.

Crash on match start

Some times when I'm on a team as a match is starting, my game client will crash. Restarting the game and rejoining works without issue. Not sure of the cause of this yet.

External links

ProtonDB

ProtonDB is a well-known site used by users to track the status of games on Steam. The page for Microsoft Allegiance is here:

https://www.protondb.com/app/700480

Please take the time to add your own report! It helps with visibility.

Proton github issue

The Proton github project is a place to track compatibility for every game on Steam. Any specific workarounds or quirks should be included here for others as it will help Valve and proton developers keep track of it.

https://github.com/ValveSoftware/Proton/issues/3395

Linux users be warned
This community does not understand how open source development works. I do not blame them, because 1) most of them are not developers and 2) it was closed for a long time and kept behind a curtain even longer. That said, if you are a linux developer looking to contribute, be warned. They will largely not be cognizant of your free time and refuse to participate in active discussion without insulting you. They don't comprehend having a valuable skill set contributed for free and don't comprehend that you're not a big corporation making demands. They are used to the Cathedral and do not understand the Bazaar.

If you run into any push back, just fork the project and start your own community -- a concept which has been tried before and labeled with betrayal/malicious intent by various administrators/members of this community. They do not understand how permissive the MIT software license is and what that means for the game. If you do start a new effort (or make headway here, which I truly hope is possible), I'd love to join you. Find me on Github.
Last edited by fuzz on Tue Jan 21, 2020 2:05 am, edited 1 time in total.
fuzz
Posts: 9
Joined: Mon Dec 30, 2019 9:12 pm

Post by fuzz »

After more research, I am reasonably confident that directplay indeed has issues if you have any sort of network interface without an internet route, such as NAT bridges for containers/virtual machines. Here's how I work around it on my system, with examples for network manager and iproute2.

See this page for examples using other methods:
https://www.2daygeek.com/enable-disable ... cli-nmtui/

Find the interface
Mine is pretty obvious, being virbr0.

Using network manager:

Code: Select all

$ nmcli connection show
NAME       UUID                                  TYPE      DEVICE
Profile 1  a6a7c1ca-b3d4-4ccc-8f9d-d95e8699561a  ethernet  enp3s0
virbr0     c0162fb5-6af5-4f9c-8144-ee2357edb5e4  bridge    virbr0
Using ip from iproute2:

Code: Select all

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether redacted brd ff:ff:ff:ff:ff:ff
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether redacted brd ff:ff:ff:ff:ff:ff
14: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:bb:70:62 brd ff:ff:ff:ff:ff:ff
15: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:bb:70:62 brd ff:ff:ff:ff:ff:ff
$ ip addr show virbr0
14: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:bb:70:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global virbr0
       valid_lft forever preferred_lft forever
Disable the interface
Network manager:

Code: Select all

$ sudo nmcli connection down virbr0
ip:

Code: Select all

$ sudo ip link set virbr0 down
Evan
Posts: 67
Joined: Wed Jul 02, 2003 7:00 am
Location: Boston

Post by Evan »

Fuzz,

Thank you for this, I can now log on for the first time in years.

~Evan (LiamWestray)

Also, I uniquely appreciated your comments on Linux Development... Was very sad to see the Cathedral style of development happen when I was one of the original people to help with the ICE tool that eventually got us the open source code.
"I remember Evan more for his almost-british levels of abuse" - Agricola
Post Reply