1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-10 17:42:29 +01:00

Mainly adapting the Linux instructions for use

That Human
2022-04-07 00:43:28 +00:00
parent 117e5bfffb
commit 2a7d9a640a

@@ -0,0 +1,82 @@
## Required Packages (General)
Required libraries include:
Package | Note(s)
------- | -------
`sdl2` | Only for UI client.
`freetype` | Can be disabled.
`fontconfig` | Can be disabled.
`libzip` | >= 1.0
`libpng` | >= 1.2
`speexdsp` | Only for UI client.
`curl` | only if building with http support.
`openssl` | >= 1.0; Only if building with multiplayer support.
`icu` | >= 59.0
`zlib` |
`gl` | Commonly provided by Mesa or GPU vendors; only for UI client, can be disabled.
`cmake` |
`nlohmann-json` | >= 3.6.0
`duktape` | Unless scripting is disabled. (Not available in MSYS2s package repo, see lower section)
Google Benchmark | Optional.
Additionally, you can add support for Discord's Rich Presence API by cloning https://github.com/discordapp/discord-rpc into the root clone directory. Do note discord-rpc requires rapidjson, which [don't bother fixing their bugs](https://github.com/Tencent/rapidjson/issues/1205) and you may need the hackish workaround: [janisozaur/rapidjson/commit/20f8604ee6cd078c1cb2346148c69c0c2c160db2](https://github.com/janisozaur/rapidjson/commit/20f8604ee6cd078c1cb2346148c69c0c2c160db2)
### MinGW64
```
pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-freetype mingw-w64-x86_64-fontconfig mingw-w64-x86_64-libzip mingw-w64-x86_64-libpng mingw-w64-x86_64-speexdsp mingw-w64-x86_64-curl mingw-w64-x86_64-openssl mingw-w64-x86_64-icu mingw-w64-x86_64-zlib mingw-w64-x86_64-mesa mingw-w64-x86_64-cmake mingw-w64-x86_64-nlohmann-json
```
You will need to manually place [json_fwd.hpp](https://raw.githubusercontent.com/nlohmann/json/develop/include/nlohmann/json_fwd.hpp) in your `mingw64/include/nlohmann` folder
Since `duktape` is not in MSYS2s repository I have made a package for MinGW-W64-x86_64, I recommend doing this in your home directory, however it doesn't really matter as it deletes the directory afterwords
```
git clone https://gist.github.com/18634d0f06090b4bc453aa6e81f3126b.git
cd 18634d0f06090b4bc453aa6e81f3126b
pacman -U mingw-w64-x86_64-duktape-2.7.0-1-any.pkg.tar.zst --noconfirm
cd ../
rm -rf 18634d0f06090b4bc453aa6e81f3126b/
```
## Compiling
```
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug $OPENRCT2_CMAKE_OPTS .. -G "MinGW Makefiles" # Remember to set any other build flags
make
```
This will generate a `openrct2` binary in the `build` directory. To run you have two options: `make install` or running it locally.
### make install
`make install` will download required resources (json objects, title sequences) and installs openrct2 under `/usr/local` by default, but `DESTDIR` will be properly honoured (see below).
### Running it from the build directory
Alternatively you can install the required resources manually so can launch openrct2 from the project directory.
You need a functional `data` directory next to the current working directory when you start `openrct2`.
An easy way to generate such a data directory is by leveraging `make install`. Type the following in the `build` directory:
```
DESTDIR=. make install
```
Alternatively you can install these assets yourself. The following needs to satisfied:
* `$build/data/` has to have contents of `$repo/data/`
* `$build/data/g2.dat` needs to exist. Build it using `make g2` and then copy it into `data`.
* `$build/data/object` has to have the extracted contents from https://github.com/OpenRCT2/objects/releases
* (optional) `$build/data/title` has to have extracted contents from https://github.com/OpenRCT2/title-sequences/releases
`$XDG_CONFIG_HOME/OpenRCT2/` (or `~/.config/OpenRCT2/` in its absence) has to have `config.ini` with `game_path` set to an RCT install. `openrct2` will ask you for this directory when it first starts.
Keep in mind you can symlink stuff and that filesystems are case sensitive!
Alternatively you can specify the data directory like this:
```
./openrct2 --openrct-data-path=../data
```
OR
Just symlink the `data` directory in the current `build` directory, which is the easiest approach for development
```
ln -s ../data data
```
That should work, but it might require a little debugging.