Skip to content

Commit

Permalink
Updated compile instructions for Linux #884
Browse files Browse the repository at this point in the history
  • Loading branch information
RobertBeckebans committed Jul 10, 2024
1 parent 2b47fb2 commit 17b2812
Showing 1 changed file with 51 additions and 69 deletions.
120 changes: 51 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ This file contains the following sections:
9. [Compiling on Windows](#compile_windows)
10. [Compiling on Linux](#compile_linux)
11. [Compiling on macOS](#compile_macos)
12. [Installation, Getting the Game Data, Running the Game](#installation)
12. [Getting the Game Data](#installation)
13. [New Console Variables](#console)
14. [Known Issues](#issues)
15. [Bug Reports](#reports)
Expand Down Expand Up @@ -407,7 +407,7 @@ See LICENSE_EXCEPTIONS.md for all parts of the code that are not covered by the

This project's GitHub.net Git repository can be checked out through Git with the following instruction set:

> git clone --recursive https://github.com/RobertBeckebans/RBDOOM-3-BFG.git
> git clone --recursive https://github.com/RobertBeckebans/RBDOOM-3-BFG.git DoomCode

Existing repositories can be updated manually:

Expand All @@ -426,11 +426,11 @@ Existing repositories can be updated manually:
3. Download and install the latest Vulkan SDK from LunarG: https://www.lunarg.com/vulkan-sdk/
You can skip this step if you compile with DX12 only by adding -DUSE_VULKAN=OFF to the CMake options.

4. Generate the VS2022 projects using CMake by doubleclicking a matching configuration .bat file in the neo/ folder.
4. Generate the VS2022 projects using CMake by doubleclicking a matching configuration .bat file in the `DoomCode/neo/` folder.
Recommended in this case is `cmake-vs2022-win64-no-ffmpeg.bat`

5. Use the VS2022 solution to compile what you need:
RBDOOM-3-BFG/build/RBDoom3BFG.sln
`DoomCode/build/RBDoom3BFG.sln`


## Optional if you want to use FFmpeg
Expand All @@ -441,25 +441,23 @@ Recommended in this case is `cmake-vs2022-win64-no-ffmpeg.bat`


---
# Compiling on Linux <a name="compile_linux"></a>
# Compiling on and Running on Linux <a name="compile_linux"></a>

1. Go to https://github.com/microsoft/DirectXShaderCompiler and download the DXC binaries for Linux and put them into your local PATH.
E.g. Unpack dxc-artifacts.tar.gz to your home directory and add this to your ~/.profile

> # DXC compiler
> PATH="~/dxc-artifacts/bin:$PATH"
1. Go to https://github.com/microsoft/DirectXShaderCompiler/releases/tag/v1.8.2405 and download the DXC binaries for Linux and put them into your local PATH.

E.g. Unpack linux_dxc_2024_05_24.x86_64.tar.gz to `~/.local` and make `~/.local/bin/dxc` as executable with chmod +x

As an alternative to modifying your PATH, you can add -DDXC\_CUSTOM_PATH=\<path-to-dxc-binary> to the CMake options.
As an alternative you can add `-DDXC_CUSTOM_PATH=<path-to-dxc-binary>` to the CMake options.

2. You need the following dependencies in order to compile RBDoom3BFG with all features:

On Debian or Ubuntu:

> apt-get install cmake libsdl2-dev libopenal-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libvulkan-dev
> apt-get install cmake libsdl2-dev libopenal-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libvulkan-dev libncurses-dev

On Fedora
> yum install cmake SDL-devel openal-devel ffmpeg-devel
> yum install cmake SDL-devel openal-devel ffmpeg-devel ncurses-devel

On ArchLinux

Expand All @@ -471,15 +469,30 @@ Recommended in this case is `cmake-vs2022-win64-no-ffmpeg.bat`

You don't need FFmpeg to be installed. You can turn it off by adding -DFFMPEG=OFF and -DBINKDEC=ON to the CMake options. It is enabled by default because the bundled libbinkdec is slow during development if compiled for Debug mode.

3. Generate the Makefiles using CMake:
3. Checkout the source code into a new `DoomCode` directory

> cd neo/
> git clone --recursive https://github.com/RobertBeckebans/RBDOOM-3-BFG.git DoomCode

4. Generate the Makefiles using CMake:

> cd DoomCode/neo/
> ./cmake-linux-release.sh

4. Compile RBDOOM-3-BFG targets with
5. Compile the engine and tools in `DoomCode/build/` with

> cd ../build
> make
> make -j<number of your cores>

6. Copy the base folder of your `Steam/steamapps/common/DOOM 3 BFG Edition/base/` over to `DoomCode/base/` See also [Getting the Game Data](#installation)

7. [`OPTIONAL`] Download https://www.moddb.com/mods/rbdoom-3-bfg/downloads/rbdoom-3-bfg-130 and unpack it over your DoomCode/ folder and then run in `DoomCode/`

> git checkout .
With this the local git files are newer for the files that have the same names.

8. Copy `DoomCode/build/RBDoom3BFG` to `DoomCode/`

9. Start the game in `DoomCode/`

---
# Compiling on macOS <a name="compile_macos"></a>
Expand Down Expand Up @@ -521,7 +534,7 @@ Recommended in this case is `cmake-vs2022-win64-no-ffmpeg.bat`
> cd ../build
> make

For Xcode builds double click on RBDOOM-3-BFG/xcode-\<buildtype\>/RBDoom3BFG.xcodeproj and start the build. The generated Xcode project file is pre-configured with the correct targets and build settings.
For Xcode builds double click on `DoomCode/xcode-\<buildtype\>/RBDoom3BFG.xcodeproj` and start the build. The generated Xcode project file is pre-configured with the correct targets and build settings.

---
# Installation, Getting the Game Data, Running the Game <a name="installation"></a>
Expand All @@ -532,24 +545,26 @@ Recommended in this case is `cmake-vs2022-win64-no-ffmpeg.bat`

<a href="https://www.moddb.com/mods/rbdoom-3-bfg" title="View RBDOOM-3-BFG on Mod DB" target="_blank"><img src="https://button.moddb.com/popularity/medium/mods/49231.png" alt="RBDOOM-3-BFG" /></a>

2. There are usually 2 kinds of RBDOOM-3-BFG packages. The Full and the Lite version.
There are usually 2 kinds of RBDOOM-3-BFG packages. The Full and the Lite version.
With the Full version you have the Win64 binaries, the baked environment probes and lightgrid data for all BFG single player maps like RBDOOM-3-BFG-1.3.0.42-`full`-win64-20211030-git-b4e0366.7z (6.18 GB download).
The Lite version has the `lite` in the filename like RBDOOM-3-BFG-1.3.0.42-lite-win64-20211030-git-b4e0366.7z.

The Lite version has the `lite` in the filename like RBDOOM-3-BFG-1.5.1.2-lite-win64-20230523-git-39ae120.7z.
Those packages don't ship with the precomputed light data but have everything else needed to run the mod and the tools like the custom TrenchBroom build.

3. Simply extract both packages over your
`C:\Program Files (x86)\Steam\SteamApps\common\Doom 3 BFG Edition\` directory and run RBDoom3BFG.exe.
2. Make a new `DoomBFG` folder

3. Copy `base/` from your Steam Doom 3 BFG folder into `DoomBFG`

4. Download the RBDOOM-3-BFG 1.3.0 full package from the RBDOOM-3-BFG ModDB page and extract it over DoomBFG

5. Do the same with the newest version version which acts like a patch

This should also work fine with your GOG installation.

---
## The following instructions are primarily intented for `Linux` users and all hackers on other operating systems.

To play the game, you need the game data from a legal copy of the game.

Currently this requires a Windows installer, whether that be the GOG installer or by using Steam for Windows.

Note: the original DVD release of Doom 3 BFG contains encrypted data that is decoded by Steam on install.
Linux users are advised the compile the engine from the Github source code and to put the `base/` data from the retail game into the `DoomCode/base/` directory.

On Linux and macOS the easiest way to install is with SteamCMD: https://developer.valvesoftware.com/wiki/SteamCMD.
See the description on https://developer.valvesoftware.com/wiki/SteamCMD#Linux (macOS is directly below that) on how to install SteamCMD on your system. You won't have to create a new user.
Expand All @@ -572,9 +587,9 @@ Once Wine is installed and configured on your system install Doom 3 BFG edition

(there will be several .exe files from GOG, make sure all of them are in the same directory)

Once this is complete, by default you can find your Doom 3 BFG "base/" directory at ".wine/drive_c/GOG\ Games/DOOM\ 3\ BFG/base".
Once this is complete, by default you can find your Doom 3 BFG `base/` directory at `.wine/drive_c/GOG\ Games/DOOM\ 3\ BFG/base`.

Note that you may want to create a autoexec.cfg file in whatever "base/" directory you use with the following content:
Note that you may want to create a autoexec.cfg file in the `DoomCode/base/` directory with the following content:

* set sys_lang "english"

Expand All @@ -587,48 +602,15 @@ This will ensure the game and its menus are in english and don't default to some
* set sys_lang "japanese"
* set sys_lang "spanish"

Anyway:

1. Install Doom 3 BFG in Steam (Windows version) or SteamCMD, make sure it's getting
updated/patched.

2. Create your own Doom 3 BFG directory, e.g. /path/to/Doom3BFG/

3. Copy the game-data's base dir from Steam or GOG to that directory
(e.g. /path/to/Doom3BFG/), it's in
/your/path/to/Steam/steamapps/common/DOOM 3 BFG Edition/base/
or, if you used SteamCMD or GOG installer with Wine, in the path you used above.

4. Copy your RBDoom3BFG executable and the optional FFmpeg DLLs (if Windows FFmpeg enabled) to your own
Doom 3 BFG directory (/path/to/Doom3BFG). Your Doom 3 BFG directory now should look like:

/path/to/Doom3BFG/
* RBDoom3BFG (or RBDoom3BFG.exe on Windows)
* avcodec-58.dll (Windows FFmpeg only)
* avformat-58.dll (Windows FFmpeg only)
* avutil-56.dll (Windows FFmpeg only)
* swresample-3.dll (Windows FFmpeg only)
* swscale-5.dll (Windows FFmpeg only)
* base/
* classicmusic/
* _common.crc
* (etc)
5. On macOS the RBDoom3BFG executable will also search for game data within an app bundle's Contents/Resources/base folder, and as a last resort, within the absolute path /Applications/RBDoom3BFG.app/Contents/Resources/base. In addition, if you want the game to be standalone without dependencies on pre-installed dynamic libs, you can use macdylibbundler to bundle all external dylib dependencies into the app bundle (see https://github.com/auriamg/macdylibbundler or simply install via "brew install dylibbundler" or "sudo port install dylibbundler"). For example, the following command will copy all external dylib dependencies to the Contents/libs directory of the game's app bundle and adjust the rpaths within the RBDoom3BFG executable and copied dylibs.

> dylibbundler -od -b -x RBDoom3BFG.app/Contents/MacOS/RBDoom3BFG -d RBDoom3BFG.app/Contents/libs/

After running dylibbundler you may need to re-sign the modified executable and dylibs if planning to run on **Apple Silicon** machines. Newer versions of dylibbundler now do this automatically. The output of dylibbundler will indicate which executable and dylibs (if any) require re-signing. This code signing step is not needed for x86-based Macs.

> codesign -s - --force RBDoom3BFG.app/Contents/libs/lib<modified-by-dylibbundler>.dylib
...
> codesign -s - --force RBDoom3BFG.app/Contents/MacOS/RBDoom3BFG
On macOS the RBDoom3BFG executable will also search for game data within an app bundle's Contents/Resources/base folder, and as a last resort, within the absolute path /Applications/RBDoom3BFG.app/Contents/Resources/base. In addition, if you want the game to be standalone without dependencies on pre-installed dynamic libs, you can use macdylibbundler to bundle all external dylib dependencies into the app bundle (see https://github.com/auriamg/macdylibbundler or simply install via "brew install dylibbundler" or "sudo port install dylibbundler"). For example, the following command will copy all external dylib dependencies to the Contents/libs directory of the game's app bundle and adjust the rpaths within the RBDoom3BFG executable and copied dylibs.

6. Run the game by executing the RBDoom3BFG executable.
> dylibbundler -od -b -x RBDoom3BFG.app/Contents/MacOS/RBDoom3BFG -d RBDoom3BFG.app/Contents/libs/

7. Enjoy
After running dylibbundler you may need to re-sign the modified executable and dylibs if planning to run on **Apple Silicon** machines. Newer versions of dylibbundler now do this automatically. The output of dylibbundler will indicate which executable and dylibs (if any) require re-signing. This code signing step is not needed for x86-based Macs.

8. If you run into bugs, please report them, see [Bug Reports](#reports)
> codesign -s - --force RBDoom3BFG.app/Contents/libs/lib<modified-by-dylibbundler>.dylib
...
> codesign -s - --force RBDoom3BFG.app/Contents/MacOS/RBDoom3BFG

---
# New Console Variables and Commands <a name="console"></a>
Expand Down

0 comments on commit 17b2812

Please sign in to comment.