= Darktide P2P
:idprefix:
:idseparator:
:toc: macro
:toclevels: 1
:!toc-title:
:caution-caption: :fire:
:important-caption: :exclamtion:
:note-caption: :paperclip:
:tip-caption: :bulb:
:warning-caption: :warning:

An engine plugin for Warhammer 40,000 Darktide that implements peer-to-peer networking.

== Building

> This assumes cross-compiling on a Linux build machine.
> If you're on Windows, you're on your own. Shouldn't be too difficult, you're on native build anyways.

=== Prerequisites

* A reasonably recent version of LLVM, lld & Clang
** A symlink `clang-cl` -> `clang` in `PATH`
* cURL
* Wine
* Rust nightly toolchain, MSVC target and `rust-src`:
** `rustup toolchain install nightly`
** `rustup target add x86_64-pc-windows-msvc`
** `rustup component add rust-src`

=== Build

You'll need to download the MSVC libraries once (their license forbids redistribution, even in something like a Docker image).

With https://github.com/casey/just[just], simply run `just setup-msvc`, otherwise run the corresponding commands from `Justfile` manually. This will download the current Visual Studio Build Tools and corresponding libraries and headers into `./msvc`.

Then run `just build`, which runs `cargo build` with the necessary toolchain variables set (see top of `Justfile`).

The `.dll` in `target/x86_64-pc-windows-msvc/debug` can then be copied to the game's `binaries/plugins` folder. Remember to rename it so it has the required `_pluginw64_release.dll` suffix.
