Factorio
服务器搭建
!Attention!, 需要正版账号
拉取Docker容器搭建
docker镜像地址
建议使用rootless版本, 以避免权限问题
# 创建存储数据位置
cd && mkdir factorio
cd factorio && mkdir container-config container-data
# 复制容器的配置文件到container-data下
docker run --rm --name factorio -itd -v ./container-data:/factorio factoriotools/factorio:stable-2.0.55-rootless
docker stop factorio
# 创建配置文件的软链接
## 该文件为服务器配置信息, 作为管理服务器选项使用, 并需要给予可修改权限
#chmod 646 ~/factorio/container-data/config/server-settings.json
ln -s ~/factorio/container-data/config/server-settings.json ~/factorio/container-config/server-settings.json
## 该文件为地图配置信息, 实际上可先在用户端配置好地图并生成存档后上传服务器上使用,
## 无需利用服务器配置生成地图, 且似乎有些配置未能达到预期效果??? 需要给予可修改权限
#chmod 646 ~/factorio/container-data/config/map-settings.json
ln -s ~/factorio/container-data/config/map-settings.json ~/factorio/container-config/map-settings.json
# 修改文件夹所属, 845为容器内创建的名为factorio的用户
#sudo chown 845:845 ~/factorio/container-data/编辑配置文件~/factorio/docker-compose.yaml
services:
factorio:
container_name: factorio
image: factoriotools/factorio:stable-2.0.55-rootless
volumes:
- ./container-data:/factorio
restart: unless-stopped
ports:
# - "34197:34197/udp" # udp端口, 游戏靠该端口进行通讯
# - "27015:27015/tcp" # RCON端口
environment:
- SAVE_NAME=test1 # 自己存档的名称, 需要将存档放在~/factorio/container-data/saves/下
- LOAD_LATEST_SAVE=false # 是否自动使用最新存档
networks:
caddy-network:
networks:
caddy-network:
external: true记得需要先行编辑server-settings.json给予账号密码, 否则无法运行
载入存档直接替换~/factorio/container-data/saves/_autosave1.zip即可, 注意要修改所属为845:845
# 启动容器
docker compose up
# 删除容器
docker compose down
# 查看容器状态
docker compose status自建Docker镜像
下载服务端
前往官网, 选择符合自己版本的服务器版本下载
配置程序
假设程序包名为factorio_headless_x64.tar.xz
# 将程序复制到/opt下进行解压
cp factorio_headless_x64.tar.xz /opt/
cd /opt/
tar -xvf factorio_headless_x64.tar.xz
# 编辑配置文件
## 启动的二进制文件为/opt/factorio/bin/x64/factorio
## 服务器配置文件一般为/opt/factorio/config/server-settings.json
## 地图配置文件一般为/opt/factorio/config/map-settings.example.json, 不建议配置, 直接在客户端上生成存档再传到服务器即可
## 上述两个配置文件在/opt/factorio/config/下均有模板, 可复制模板进行修改启动服务
/opt/factorio/data/bin/x64/factorio \
--port 20000 \ # 在20000端口监听, 仅接受udp报文
--start-server savefile.zip \ # 指定存档文件位置
--server-settings /opt/factorio/config/server-setting.json # 指定服务器配置的位置根据上述执行顺序可以写成dockerfile, 但是犯懒了, 下次再写
配置文件
服务器配置
修改server-settings.json配置服务器
{
"name": "Factowhy", # 服务器展示名称
"description": "", # 服务器展示描述
"tags": [ "factorio", "synology" ], # 服务器标签
"max_players": 0, # 最多可加入玩家数量, 0代表不限
"visibility": {
"public": false, # 是否公网可搜索到
"lan": true # 是否局域网可搜索
},
"username": "w***3", # 需要你在异星工厂的账号名
"password": "", # 需要你在异星工厂的密码
"token": "5***2", # 也可以不填密码, 填账号的token
"game_password": "", # 加入游戏需要的密码
"require_user_verification": false, # 正版验证, 验证加入玩家账号
"allow_commands": "admins-only", # 是否允许使用命令, true, false
"autosave_interval": 10, # 自动保存时间, 10min
"autosave_slots": 5, # 自动保存上限
"afk_autokick_interval": 0, # 玩家无操作多久后踢出游戏
"auto_pause": true, # 当没有玩家在服务器时暂停游戏
"auto_pause_when_players_connect": false, # 当有玩家连接时暂停游戏
"only_admins_can_pause_the_game": true, # 只有管理员可暂停游戏
"autosave_only_on_server": true, # 只在服务端自动保存游戏
}地图配置
Windows上存档一般位于C:\Users\[用户名]\AppData\Roaming\Factorio\saves
Windows上mod一般位于C:\Users\[用户名]\AppData\Roaming\Factorio\mods
Linux上存档一般位于~/.factorio/saves/
若要生成地图可以去维基相关页面查看具体参数, 以及其他更多命令参数
修改map-settings.json配置地图生成, 不建议使用, 仅整理了部分较常用配置
map-settings.json
{
"difficulty_settings": # 游戏难度
{
"technology_price_multiplier": 1, # 科技花费
"spoil_time_modifier" : 1
},
"pollution": # 污染
{
"enabled": true, # 是否开启污染
"diffusion_ratio": 0.02, # 污染扩散率
},
"enemy_evolution": # 敌人设置
{
"enabled": true, # 是否开启敌人
"time_factor": 0.000004, # 随时间进化率
"destroy_factor": 0.002, # 随摧毁巢穴数量进化率
"pollution_factor": 0.0000009 # 随吸收污染进化率
},
"steering": # 驾驶相关
{
"default":
{
"radius": 1.2, # 半径
},
"moving":
{
"radius": 3, # 移速
}
},
"asteroids": # 行星
{
"spawning_rate" : 1, # 陨石生成速率
"max_ray_portals_expanded_per_tick" : 100 # 每刻最多陨石数?
},
}