1. Get WeiDU, and make it easily available on the PATH variable
Note
|
This step is done only once, and is useful "forever" (as long you don’t need to reinstall the OS or upgrade to a new WeiDU version). |
Almost all mods available are implemented using a tool called WeiDU. This is a program specifically made for the Infinity Engine, and mods are created using a programming language implemented by WeiDU. So you need to download it as it’s not normally available packaged by distributions.
You need to download WeiDU, extract the contents of the compressed archive, and
use the different programs that come with it (e.g. weinstall
).
Since those are run on the terminal and are not standard programs, either you
type very long lines, or make something to call them with less typing.
We’ll do the latter by setting the PATH
environment variable.
This is optional, but recommended, and this guide assumes you did it.
Personally, I like to have all the custom programs that I download or compile
myself in a directory named $HOME/local
(which replicates the purpose of
/usr/local
or /opt
, but without requiring root permissions, and only
accessible to my user).
You do you.
That directory doesn’t exist by default, so you’ll have to create it if you want
to follow the guide by copying and pasting without changing anything.
Note
|
$HOME is a variable that expands to the directory where you have your
personal data when you copy it on a console.
That will be /home/your-user-name , but $HOME works better for copying and
pasting, as it will work on your computer and mine.
So $HOME/local is just /home/alex/local on my computer.
I’ll mostly use ~ from now on instead of $HOME , which exactly the same, just
shorter.
|
Now download WeiDU from the releases
page on Github and extract the compressed file somewhere.
At the time of writing this guide, the download is a ZIP package which will
extract a directory named WeiDU-Linux
with several files in it.
You can move and rename the directory with a graphical file manager to wherever
you please, or use the console.
For simplicity, I will assume that you move the directory to $HOME/local
, like
I normally do.
Every other directory works, but if you use another, you will need to adjust
after copying and pasting the instructions.
After you have extracted and moved, check that the programs work by running:
~/local/WeiDU-Linux/weidu --help
If it prints the help, it’s working.
To avoid having to type the long path each time, you can do the following:
export PATH=~/local/WeiDU-Linux:$PATH
Now try:
weidu --help
It should produce the same output as before.
If you want to make the setting permanent (setting the path), you can add that
export
line to your settings. Typically this will be adding that very line to
somewhere in your ~/.bashrc
file.
Now you are ready to install ciopfs
.
It’s available packaged in many linux distributions, so it’s way easier than
getting WeiDU.
2. Prepare the game
First, locate the directory where you installed the game that you want to mod.
GOG installers will suggest you to install to somewhere like "GOG Games".
If you are not sure, use your file manager to search for a file named
"chitin.key" (all Infinity Engine games have one).
Save well the location for later, and note that this guide uses
~/local/GOG/Baldurs Gate Enhanced Edition/
as an example.
Now we need to move the game to a case insensitive directory, because WeiDU and/or some of the mods just don’t work well on anything which isn’t Windows (where the file system is already case insensitive).
This is done in this steps:
-
Rename away the game directory, untouched.
-
Create two empty directories.
-
Run
ciopfs
. -
Copy the contents of the untouched game to the case insensitive directory.
Start by moving away the regular game directory. We are not going to modify the original contents of the game, but we are going to rename the directory. If you are paranoid, make a backup of it before doing anything.
Important
|
Note well the first cd command!
All the instructions afterwards won’t work if you don’t do it as the first step.
|
cd "~/local/GOG/Baldurs Gate Enhanced Edition/"
mv game game.original
Create a directory that will contain the data that we don’t need to look at (if we don’t want to). It will contain roughly the same data as the case insensitive directory, but everything will be in lowercase. The real case information is saved in extended attributes named "user.filename", but we really don’t have to bother looking.
mkdir ci-data-game
Make another empty directory, that this time will contain the case insensitive fake file system.
mkdir game
Run ciopfs
, which will do the magic of the case insensitive file system:
ciopfs ci-data-game game
Now copy the files from the original unmodified game:
cp -r game.original/* game
Test that it worked by starting the game in the ciopfs mounted directory.
cd game
./BaldursGate64
Now we have not modded yet anything, but the game should be running fine on the case insensitive file system, which the next steps require.
Warning
|
If you want to mod BG1EE with Siege of Dragonspear installed from GOG
or Steam, you’ll need to use a tool called modmerge , or alternatively, make
sure that the first mod that you install is
DLC Merger. Both will do the same so
it’s your choice (but the latter is a maintained project, so I recommend it).
They will unpack the contents of Siege of Dragonspear and merge them with the
rest of Baldur’s Gate EE so modding tools will apply changes to both. That’s it.
|
3. Install one mod
Copy mod directory (extracted from a downloaded ZIP file), and install mod.
cp -r /tmp/cdtweaks/ .
# Remember to set the PATH to weinstall, or use a full path to it
export PATH=~/local/WeiDU-Linux:$PATH
weinstall cdtweaks/
Repeat for all the mods that you want to install.
That’s it!
4. To recap
# Move away the standard game directory
cd ~/local/GOG/Baldurs Gate Enhanced Edition/
mv game game.original
# Create the dir that will contain the actual data, which will contain additional
# case information in extended attributes ("user.filename")
mkdir ci-data-game/
# Recreate the game directory, and mount the empty data directory to it.
mkdir game
ciopfs ci-data-game/ game
# Copy the original game files. The case will be stored in the extended
# attributes.
cp -r game.original/* game
# Test that it worked by starting the game in the ciopfs mounted directory
cd game
./BaldursGate64
# Use modmerge or dlcmerger to prepare for modding (if SoD)
# Copy mod directory (extracted from a downloaded ZIP file), and install mod.
cp -r /tmp/cdtweaks/ .
export PATH=$HOME/local/WeiDU-Linux:$PATH
weinstall cdtweaks/
5. Bonus tip: auto mount the file system when starting the game
The installer from GOG creates a script named start.sh
, which gets invoked
from the .desktop
entry installed in $HOME/.local/share/applications
. I just
modify the script adding this:
if [ ! -f $CURRENT_DIR/game/chitin.key ] ; then
ciopfs $CURRENT_DIR/ci-data-game $CURRENT_DIR/game
fi
execute_game "${bin32_name}" "${bin64_name}" "${bin_path32}" "${bin_path64}" "${lib_path32}" "${lib_path64}"
I just add those 3 lines before the execute_game
one, and those will just
mount the ciopfs
file system when I start the game.