Creating a server

Click here for information on dockers and panels

Click here for Ubuntu

## Downloading the server files

Make sure you have .NET Core 3.1:

```
Download: https://dotnet.microsoft.com/en-us/download/dotnet/3.1

```

**Please make sure you click on the downloads on the RIGHT side of the download page**

For windows users use the “hosting bundle”, this causes the least amount of errors

Download the server files from

```
https://github.com/TastyLollipop/OpenWorld/releases

```

Unzip the downloaded folder, find the file that fits with your Operating System and place the files into a folder, this will be your server folder,

You will see these files:

Now you need to generate the rest of the files needed for the server.

run the "Open World Server"

on most Linux distributions use the command "./OpenWorldServer"

This window should open:

Close the server by typing "shutdown"

Navigate into the Data folder of the server and open the "Config" file

Make sure you have the correct player version, the server will not let you connect if this is not correct.

Generally leave the LocalAddress as "0.0.0.0", as it opens

## Opening a port

Now that the server is set-up, **it's time to open a port**!

**Unfortunately**, this isn't always as simple as it seems, and there's currently three confirmed ways of doing this:

**Port Forwarding** is arguably the **hardest** **method**, but once done requires the **least maintenance**.

**Radmin VPN** is the method with the **least setup for the host**, but the **players need to install additional software**.

## Server Settings

### Config file

You will need to edit this file to choose your server settings:

* Server port - this could be any number as long as its open on your port.
* Max players - sets the maximum number of players allowed to connect at once.
* Player Version - this is the mod version your players will use, best place to find this is in the #mod-updates discord channel
	+ for example for v1.3 you would write "1.3"
* Enforced Mods - this forces players to use the mods listed in the the "Mods Enforced" folder, with this disabled it will allow players to join with any mods they would like
* Mod Blacklist - enabled you to blacklist mods from being used, usually used when enforced mods are disabled.
* Custom Difficulty - forces all players to use the difficulty setting set in the "Difficulty" file. **MAKE SURE YOU GIVE A VALUE TO EVERYTHING OR IT WILL BE AT 0%**
* Whitelist - allows only the usernames listed in the "Whitelist" file to join the server.
* Custom Scenario - allows people to create custom scenarios when creating their save on the server.

### Deep Config

This is the config for the factions:

* Bank Cash Per Tick - banks tick every 10 minutes, this is how much banks make every tick
* Maximum Cash In Bank - the maximum amount of money in the bank

### Difficulty

This is all the settings you can enforce, an example of the values, if you set Threat Scale to 1.5 it will set it to 150%

### Values

This is the cost in silver for each faction building

### World

Please look at Generating the world section below to see how to setup the world settings
## Adding mods

Adding mods is a little bit of a longer process.

take a look at Adding mods for a in-depth way to make it easier to do.

## Generating the world

The first time you join the server you need to generate the world and choose the settings for the server.

**MAKE SURE YOU DO THIS COMPLETELY VANILLA**,

only have Open World, HugsLib, and Harmony enabled, this causes the least amount of errors

Register a new user called called "world" *(you can delete this user after)*

Then choose the settings you want for your server, you dont need to place the settlement

Once you get past the world settings and the console says

```
Saved Base Generated World File!

```

Check in the data folder, in the WorldGenData folder there should be a BaseGame.zipx file

If that is there, then your all good to exit back out, re-enable your mods and start playing

If its not there close rimworld and reopen, then try again