# Factorio

![](https://1934041264-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LJf1_IiU2L1vVxT7iNe%2F-M69SmITTZV7cFqUux5d%2F-M69T4CzlADDBb6gCW-K%2Ffactoriobanner.jpg?alt=media\&token=dba11e2d-758a-4e71-9e7f-9915cad487e5)

## Server Resources

* [World generation](https://wiki.factorio.com/World_generator)
* [Factorio server Wiki](https://wiki.factorio.com/Multiplayer)
* [Factorio console commands](https://wiki.factorio.com/Console#Command_line_parameters)

## Server Configuration

Configuration for Factorio is split between both the [game server config](https://docs.linuxgsm.com/configuration/game-server-config) and [start parameters](https://docs.linuxgsm.com/configuration/start-parameters).

### LinuxGSM Server Config

port, rcon and branch configuration is set using stat parameters

```
## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
port="34197"
rconport="34198"
rconpassword="Change_Me"
# (stable|experimental)
branch="stable"
```

#### Specific verison

To use a specific version of Factorio, you can change the branch to the version you want to use :

```
## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters
branch="1.1.87"
```

One the branch changed, do not forget to update the server :

```bash
./fctserver update
```

### Game Server Config

All other settings are located in the Factorio [game server config](https://docs.linuxgsm.com/configuration/game-server-config).

```bash
serverfiles/data/fctrserver.json
```

Useful settings include:

```
"name": "Name of the game as it will appear in the game listing",
"description": "Description of the game that will appear in the listing",
"tags": ["game", "tags"],

"_comment_max_players": "Maximum number of players allowed, admins can join even a full server. 0 means unlimited.",
"max_players": 0,

"game_password": "",

"_comment_autosave_interval": "Autosave interval in minutes",
"autosave_interval": 10,

"_comment_autosave_slots": "server autosave slots, it is cycled through when the server autosaves.",
"autosave_slots": 5,
```

### Server Credentials

If you want your server to be publicly listed on the server browser you will need to enter your profile credentials from the [Factorio website](https://www.factorio.com/profile). You can use either a *token* or *password*.

![Factorio Profile](https://1934041264-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LJf1_IiU2L1vVxT7iNe%2F-MDkJDmHgOXRpUctsuPh%2F-MDkSaLisbQiI8GF23QB%2Ffactorioprofile.png?alt=media\&token=aeccbf34-bc05-4c64-b290-5a56b6328f83)

```bash
"_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public",
"username": "",
"password": "",

"_comment_token": "Authentication token. May be used instead of 'password' above.",
"token": "",
```

## World Generation Settings

### Overview

Specifying world generation settings is a fairly simple task when creating a new world.

The steps to do so are as follows:

1. Delete any existing world data
2. Modify `map-gen-settings.json`
3. Use the Factorio executable to generate a world with that json
4. Run Factorio as normal

Follow the Guide below for detailed instructions on doing the above.

### Adjusting World Generation Settings

Firstly, delete any existing worlds that are found in the `serverfiles` directory.

{% hint style="info" %}
Remember to backup your server
{% endhint %}

```bash
cd serverfiles
rm save1.zip # this will delete your world.
rm -r saves # this directory will only exist if you have ran the server.
```

In the `data` directory, copy the example files, then and customise them to your requirements.

```bash
cd data
cp map-gen-settings.example.json map-gen-settings.json
cp map-settings.example.json map-settings.json
```

In `map-gen-settings.json`, the [ore generation values](https://lua-api.factorio.com/latest/Concepts.html#MapGenSize) can be:

```
"none" - equivalent to 0
"very-low", "very-small", "very-poor" - equivalent to 1/2
"low", "small", "poor" - equivalent to 1/sqrt(2)
"normal", "medium", "regular" - equivalent to 1
"high", "big", "good" - equivalent to sqrt(2)
"very-high", "very-big", "very-good" - equivalent to 2
```

Once complete you will need to generate your World. Go back to the `serverfiles` directory and run the Factorio binary.

```bash
cd ../
./bin/x64/factorio --create ./save1.zip --map-gen-settings data/map-gen-settings.json --map-settings data/map-settings.json
```

### Adjusting World Generation Settings (Mods)

I prefer the added customisation of the [Resource Overhaul Mod](https://mods.factorio.com/mods/orzelek/rso-mod) to the built-in generation.

The easiest way that I've found to generate a world with the RSO mod (and add mods in general) is as follows:

1. Startup Factorio on a client and install the RSO mod
2. Start generation of a new world and configure mod generation settings
3. Grab the mod files and `mod-settings.dat`
4. Transfer them to the server
5. Delete or rename any previous worlds

To configure the generation, go to `Play` > `New World` > `Mod Settings` > `Map`, then adjust options accordingly. Doing so will generate a file called `mod-settings.dat` which stores these settings.

You can locate the mod files on your system in the path [your Factorio installation saves to](https://wiki.factorio.com/Application_directory/Changing_the_save_directory):

```
Windows (Zip file): <install directory>\mods
Windows (Installer): C:\Users\<username>\AppData\factorio\mods
Windows (Steam): C:\Users\<username>\AppData\Roaming\factorio\mods
OSX: ~/Library/"Application Support"/factorio/mods
Linux: ~/.factorio/mods
```

Transfer all of the mods and `mod-settings.dat` file to your server with a tool like [Filezilla](https://filezilla-project.org/) or the `rsync` command on Mac/Linux, or even a USB drive.

**Note: DO NOT TRANSFER FILES OVER FTP**

If you have SSH open on the server, you will want to use SFTP. If you're using Filezilla, setting the port to 22 will tell it to use SFTP. If you're using `rsync`, the command would look something like this:

```
rsync -a <source files> <user>@<ip>:<remote destination>
```

You will want to drop those files in the `serverfiles/mods` directory. You will also need to delete the existing save so that it generates a new one with the new generation rules. (This is a great time to make backups if you have any progress you would like to save).

Navigate to the root folder of your Factorio installation, then delete the save:

```bash
cd serverfiles/
rm -rf save1.zip # this will PERMANENTLY delete your world
rm -rf saves/* # this folder will only exist if you have ran the server
```

Once you've done that, you're good to start the server.
