Linux Installation Guide

From BTAWiki
Revision as of 08:06, 25 April 2021 by Turtrus (talk | contribs) (Update installer version)
Jump to navigation Jump to search

This guide assumes you are using the native Linux version of BattleTech. If you installed the Windows version, got it running with Proton, and successfully installed BTA, please write up a document similar to this one for your scenario.

1. Prepare

1.1. Set some vars we’ll need later to avoid typos

Double-check these paths with your local installation, they may be different.

$ BTA_ROOT="$HOME/src/BATTLETECH/BTA"

Steam on Debian

$ BT_ROOT="$HOME/.steam/debian-installation/steamapps/common/BATTLETECH"

Steam on other distros

Check your $HOME/.steam directory and modify the above environment variable assignment accordingly.

GOG

$ BT_ROOT="$HOME/GOG Games/BATTLETECH"

1.2. Ensure dependencies are installed

Package* Purpose
wine run the installer
unzip unzip the installer package
jq allow pathfinder.sh to parse JSON

* Package name may differ on your distribution.

Debian & Friends (Ubuntu, Mint, Pop_OS!, PureOS)

$ sudo apt install wine unzip jq

RedHat & Friends (Fedora, SuSe)

$ sudo dnf install wine unzip jq

Arch & Friends (Manjaro, GamerOS)

$ sudo pacman -S wine unzip jq

1.3. Prepare Wine prefix for the BTA installer.

The wine-mono package listed here is for reference only. You can get the most recent version from https://dl.winehq.org/wine/wine-mono/.

$ mkdir -p "${BTA_ROOT}"
$ cd "${BTA_ROOT}"
$ wget https://dl.winehq.org/wine/wine-mono/6.1.0/wine-mono-6.1.0-x86.msi
$ WINEPREFIX="${BTA_ROOT}/wine64" WINEARCH=win64 wine msiexec /i wine-mono-6.1.0-x86.msi

1.4. Download the BTA installer and Extract the .zip into ${BTA_ROOT}

You’ll have to manually download the installer from NexusMods. Save it to your ${BTA_ROOT}. Then unzip it.

Note: The file name for the Launcher may change in the future, adjust the below example to the correct file name as necessary.

$ unzip 'BattleTech Advanced 3062 Installer-452-v10-0-1619281410.zip'

1.5. Prepare the Mods directory

If you try to run BTA alongside other mods, problems are likely. If the Mods directory already exists, back it up (optional), and delete it.

Clean up and create the Mods directory:

$ rm -rf "${BT_ROOT}/Mods"
$ mkdir -p "${BT_ROOT}/Mods"

1.6. Collect paths for the BTA installer

The installer needs to know where to install to. It does not know how to browse into Linux “hidden” paths (such as $HOME/.steam). Instead, you must copy and paste paths into the installer’s file/directory chooser after clicking the “Browse” button.

Also, the installer cannot parse Linux paths. You must convert them to Windows paths and include the Windows drive letter Z:, which is where wine mounts the Linux filesystem as if it were a Windows filesystem.

Collect those Windows paths:

Install Target path

Examples:

$ echo "Z:${BT_ROOT}/Mods" | sed -e 's#/#\\#g'
Z:\home\indigo\.steam\debian-installation\steamapps\common\BATTLETECH\Mods

Checkout Workspace path

$ echo "Z:${BTA_ROOT}" | sed -e 's#/#\\#g'
Z:\home\indigo\src\BATTLETECH\BTA

BattleTech.exe Binary path

$ echo "Z:${BT_ROOT}/BattleTech" | sed -e 's#/#\\#g'
Z:\home\indigo\.steam\debian-installation\steamapps\common\BATTLETECH\BattleTech

2. Install BTA

2.1. Run the installer

$ WINEPREFIX="${BTA_ROOT}/wine64" WINEARCH=win64 wine BTAdvancedLauncher.exe

2.2. Click the “Advanced Mode” button.

Click

2.3. Input the Install Target and Checkout Workspace paths

Click the “Browse” button next to each path and copy/paste the Windows paths you made in step 1.6 into the “Filename” field of the file picker.

2.4. Run the install

Click the “Update/Install BTA” button. Pay attention to any popups or instructions.

2.5. Choose your Advanced Configuration Options

Select all the things you want to install. Make sure Fire Option for Linux Users is set to “Old Fire for Linux Users”

2.6. Wait for it.

After installing the mod, the installer will install ModTek. ModTek needs to know where your BattleTech binary lives. The installer cannot find BattleTech.exe and will ask you where to find it. Give it the “BattleTech.exe Binary path” collected earlier. It will not complain when there is not .exe extension on the filename.

2.7. Ensure all the paths and symlinks are correct

Note: This step may not be necessary, depending on your distribution.

At this point the installation for Windows is complete. However, you’re not done. Because HBS was kind enough to provide us with a native binary, and because BTA’s installer runs as if it were a Windows program, we have to create some symlinks to make sure BattleTech can see all the mod files.

Thankfully some magical creature named “b2cc” has written a script to do this for us. The script is called “pathfinder.sh”. Download and run it.

$ cd ${BT_ROOT}
$ wget https://gist.githubusercontent.com/b2cc/c312bec251aaecbfedd07e4d4bda512e/raw/f7fdaa5bc458372b421a6a207e93c4d9ea257901/pathfinder.sh
$ less pathfinder.sh   # its up to you to make sure script doesn't do anything naughty!
$ bash pathfinder.sh -c

You should see a lot of console spam and green success words.

If you do not, ask for help.

3. Okay, that’s it.

All done. Run the game. Assuming all went well, you can go stomp around and get your dakka dakka pew pew on.

If for whatever reason things are not working, check the Troubleshooting section.


Troubleshooting

Issue: The game loads but the main menu doesn’t say “BattleTech ADVANCED - 3062” and the ModTek version doesn’t show up under the game version next to the CREDITs button

Likely cause: ModTek isn’t patched into the game correctly.

This can happen if mono is incorrectly installed or was not installed before the BTA installer was run the first time.

Solution: (re)run the ModTek Injector. It should look like this if it worked correctly:

$ cd ${BT_ROOT}/Mods/ModTek
$ WINEPREFIX="${BTA_ROOT}/wine64" WINEARCH=win64 wine ModTekInjector.exe 
ModTek Injector
---------------

Assembly-CSharp.dll backed up to Assembly-CSharp.dll.orig
Injecting Assembly-CSharp.dll with ModTek.Injection.LoadModTek at BattleTech.Main.Start
Writing back to Assembly-CSharp.dll...
Injection complete!

Issue: BattleTech refuses to launch/crashes to desktop immediately

Likely cause: Libc library conflict. The system libc is likely newer than, and incompatible with, the libc included in BattleTech’s native Linux distribution.

Solution: Remove libc.so.6 from the BattleTech game directory. This forces BattleTech to use the system libc.

$ mkdir -p "${BTA_ROOT}/../BattleTech_Data/Plugins/x86_64/"
$ mv "${BT_ROOT}/BattleTech_Data/Plugins/x86_64/libc.so.6" "${BTA_ROOT}/../BattleTech_Data/Plugins/x86_64/"

Issue: Not listed here

There are a few Linux users on the BTA Discord channel, you can ask for help in General Chat or open a support ticket with #ticketbot to get help resolving issues with BTA. For general issues with BattleTech on Linux, there are several forums available by searching your favorite search engine.