Skippeh / parcel-thief

A work in progress private server/emulator for Death Stranding Director's Cut.
6 stars 0 forks source link
death-stranding mod server

Parcel - A Private Server for Death Stranding Director's Cut

Parcel is a server for Death Stranding Director's Cut. It is designed for smaller groups of people who want to play and share their buildings and items without other players.

All buildings, missions, cargo (including lost cargo and shared lockers), and highway resources are synced between all players unlike the official server where they are semi-randomly distributed.

Download

You can find the latest client and server version in Releases.

Note that the project is still in development by a single developer so there will be bugs and unexpected behaviour.

Game Installation

NOTE: Only Director's Cut is supported. Original Death Stranding is untested and is very unlikely to work.

  1. Download parcel-client from Releases and extract the files to the directory where Death Stranding DC is installed. If you're unsure where that is you can use these steps to find out:
    • Steam: Right click the game and click Manage -> Browe local files.
    • Epic: Right click the game and click Manage and then click the folder icon near the bottom next to the uninstall button.
  2. Get the server url from the person who is hosting the server and then do one of the following:
    • Create a text file called parcel-server-url in the game directory and set it to the URL of the server.
    • Add a launch parameter in Steam or Epic for Death Stranding DC called --parcel-server-url <url> and set it to the URL of the server. (NOTE: this seems to be broken on Epic)
    • Set an environment variable called PARCEL_SERVER_URL to the URL of the server.
  3. Launch parcel-client.exe and wait for the game to launch.

There are also additional launch parameters that might help with troubleshooting.

Launch parameters

Parameter Description
--parcel-server-url <url> The URL of the server.
--parcel-console Shows a console while the game is running with logging.
--parcel-debug Enable additional logging.

Logs are also saved in the game directory to a file called parcel-client.log.

Server Installation

  1. Download parcel-server from Releases and extract the files anywhere. Preferrably not the game directory for tidyness because of some directories being created but it's up to you.
  2. By default only a steam web api key is required to launch the server, but you might want to run the server with --help launch parameter to see what else you can configure. Note that the server is a commandline application so if you don't run it from an existing terminal the window will close after the process exits.
    • Optionally: configure the server by doing either of these:
      • Specify launch parameters directly when launching the server.
      • Create a .env file in the server directory to specify environment variables for the process.
  3. Launch parcel-server.
  4. Optionally, configure the whitelist and other runtime configurable parameters from the frontend. You can access it from the web browser at /frontend. A default admin account is created and logged on startup if an account without the Manage accounts permission exists. You can also edit the whitelist and server config file directly in the server's data directory. Restarting the server after editing is not required.

PostgreSQL

The server uses PostgreSQL to store data.

If you don't have an existing server to use one will be automatically downloaded and configured, and start/stop with the server.

There is an issue with this on some Windows configurations where graceful shutdown doesn't work and corrupts the database. I recommend testing to see if ctrl+c shuts down the server correctly before using it.

Windows dependencies

The windows server requires Microsoft Visual C++ Redistributable. You probably already have this installed but if you get an error about VCRUNTIME140.dll missing then install it.

Linux dependencies

The linux server requires libpq5 and glibc-2.31 or higher.

Terminology

Figured out from reverse engineering, the game (and thus also this project) refers to the following terms:

Note that this list might be inconclusive and maybe even slightly incorrect.

TODOs

Server

Client

Less important TODOs

Server

Ideas

Known issues

Building

To build parcel-server you need to set PQ_LIB_DIR to the directory of the PostgreSQL 15 lib directory. You can find an example of this by looking at the github action workflow that builds and creates a release.

To build parcel-client and client-injector you need to use Rust nightly.

After the above is done, all you need to do is run cargo build.

Acknowledgements

Thanks to: