废话不多说直接进入正题

环境操作

创建新Linux用户

sudo adduser steam

注意:该命令可以创建用户和该用户在home中的文件夹,后面会直接提示你设置密码的

安装steamcmd

Tips:

您可以自行百度或google或bing搜索Ubuntu安装steamcmd方法,应该能搜到官方的文档,这也是最推荐的,当然您也可以选择直接看下面的命令,或者点击下面的连接查看文档

https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn

sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd

运行steamcmd

su steam
steamcmd
mkdir software
cd software
mkdir dontstarve

设置你的应用安装目录

# force_install_dir <路径>
force_install_dir /home/steam/software/dontstarve

登录用户

login 用户名
set_steam_guard_code 验证码

Tips:

验证码为你输入正确密码后向你输入的账户的邮箱中发送的验证码

安装或更新应用(饥荒)

在SteamCMD中执行以下命令

# app_update ID validate
app_update 343050 validate

Tips:

安装或更新应用使用app_update命令(在这里提供Steam 应用 ID)。 要同时校验应用的话,需添加validate到命令里。要下载测试分支的话,使用-beta <测试名称>选项 – 例如,半条命专用服务器的测试分支名为beta以及起源专用服务器的测试分支名为prerelease。一些测试分支设置了密码;如果要从它那里下载,需同时添加-betapassword <密码>选项。

app_update <应用ID> [-beta <测试名称>] [-betapassword <密码>] [validate]

退出steamcmd

quit
# 或者按一次Ctrl+c即可

游戏操作

创建世界

无尽-洞穴-联机

世界生成

  • 世界大小:中

  • 分支:最多

  • 环形:从不

这样设置的话会跟花瓣一样你在花瓣中间其它区域四散分开,就很少需要跨海了

MOD推荐

  • 防卡好多招:物品堆叠+垃圾清理

  • Global Positions:共享地图、查看玩家位置

  • Show Me:查看物品信息

  • Tips:左上角查看怪物到来倒计时

  • Smart Minisign:箱子显示首个物品图标,方便分类

  • Display Attack Range:怪物攻击范围显示

  • 4/5/6格装备栏(适配MOD版):多几个格子,可以设置

Klei操作

获取Klei用户ID

注意:挂好加速器或者科学上网

  1. 回到游戏主界面

  2. 点击账号(英文的话可以点击Account)

  3. 点击用户信息

  4. 保存用户信息下的Klei用户ID

    方便设置管理员

获取服务器token

  1. 回到游戏主界面

  2. 点击账号(英文的话可以点击Account)

  3. 点击游戏

  4. 点击《饥荒:联机版》的游戏服务器

  5. 随便起个服务器名称(边貌似不允许设置中文)

  6. 创建好后你会发现有一条很奇怪的字母和特殊字符组成的token,复制保留下来

    注意:看好自己服务器截止日期

文件操作

  • 打开地图在本机的位置

    有两种方式

    1. 第一种直接找到下面目录

      C:\Users\当前用户文件夹\Documents\Klei\DoNotStarveTogether\编号就是一串数字\Cluster_数字
    2. 第二种,进入饥荒联机版游戏首页,然后点击左下角的数据(英文应该叫Data)

  • Cluster_数字文件夹就是你的地图数据,如果你不知道哪个是的话。。。。粗暴点,都删了(记得备份)只保留你创建的就知道哪个是你刚创建的了

  • 进入Cluster_数字目录,并创建cluster_token.txt文件,并将token扔进去

  • 进入Cluster_数字目录,并创建adminlist.txt,并将Klei用户ID扔进去

  • Cluster重要文件目录解析(并非全部)(目录解析容可以不看,不影响开服

    • Caves:地图资源、Master:洞穴资源

      • modoverrides.lua:订阅的mod以及mod的配置信息

      • backup:备份日志信息

    • cluster.ini:基本配置

      因为我也是萌新,所以我只写一些自己确定和方便修改的配置

      • max_players:最多玩家人数

      • pvp:玩家是否允许互殴

      • cluster_password:房间密码

      • cluster_description:房间描述

      • cluster_name:房间名称

    • cluster_token.txt:服务器token

    • adminlist.txt:管理员的Klei用户ID,一行一个

  • 利用ssh连接到服务器,并进行下面操作

    • 进入用户目录下

      cd ~
    • 查看是否有.klei文件夹

      ls -al
    • 若没有则需要依次创建

      cd ~
      mkdir .klei
      cd .klei
      mkdir DoNotStarveTogether
  • Cluster_数字目录上传到服务器的~/.klei/DoNotStarveTogether目录中即可

    若不知道~代表什么

    可以用ssh连接好后进入到~/.klei/DoNotStarveTogether目录下并使用pwd命令来查看

    例如我的目录就是

    /home/steam/.klei/DoNotStarveTogether

    我用的是filezilla来上传文件,看各位自己用啥都行,不想装软件的大神直接用scp命令吧

    当然也可以直接使用免安装版、

    注意:是将Cluster_1整体扔进去,包括这个目录

服务器操作

加载mod

如果你任务只有地图设置mod就完事的话那就大错特错了,这是个很容易踩坑的一点,我们还需要让服务器来下载并加载mod

  • 获取mod的id

    打开本机的Cluster_数字\Caves目录下,并找到modoverrides.lua文件

    记住workshop后的纯数字,这个就是mod的id

  • 进入到steam下载目录下的mods目录下,我的是~/software/dontstarve/mods

    cd ~/software/dontstarve/mods
  • 编辑dedicated_server_mods_setup.lua文件

    vim dedicated_server_mods_setup.lua
  • 根据注释提示,可以通过下面的命令来设置mod

    ServerModSetup("MOD的id")
  • 按下esc,按下输入冒号:输入wq即保存退出

大概就是这样

--There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.
​
--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
     --The Workshop id can be found at the end of the url to the mod's Workshop page.
     --Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
     --ServerModSetup("350811795")
​
--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It will download all the mods in the collection and install them to the mod directory on boot.
     --The Workshop id can be found at the end of the url to the collection's Workshop page.
     --Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114180
     --ServerModCollectionSetup("379114180")
     ServerModSetup("xxxxxxxxxx")
     ServerModSetup("xxxxxxxxxx")

编写启动脚本

#创建脚本文件
touch dontstarve_start.sh
#编辑脚本文件
vim dontstarve_start.sh

脚本文件写入以下内容

#!/bin/bash
​
steamcmd_dir="/usr/games"
install_dir="$HOME/software/dontstarve"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"
​
function fail() {
    echo Error: "$@" >&2
    exit 1
}
​
function check_for_file() {
    if [ ! -e "$1" ]; then
        fail "Missing file: $1"
    fi
}
​
cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
check_for_file "steamcmd"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"
check_for_file "$install_dir/bin"
cd "$install_dir/bin64" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
run_shared+=(-shard)
"${run_shared[@]}" Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'

注意:若只有32位支持,可以更改脚本中的,上面脚本是64位的

cd "$install_dir/bin64" || fail
#和
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)

cd "$install_dir/bin" || fail
#和
run_shared=(./dontstarve_dedicated_server_nullrenderer)

Tips:

vim一次性清除文件内所有内容

ggdG

不需要输入冒号

说明:

  • gg:光标跳转到该文件的行首;

  • dG:删除光标行及其以下行的全部内容。(注:d为删除,G为光标跳转到末尾行)

开放端口

如果你希望用直连方式,可以采用端口映射,如果有公网IP,直接在防火墙开启以下两个UDP端口即可

UDP协议开放10999、10888、10998

ps:如果你只希望玩家搜索房间名进入,可以不用开放端口,但是玩家是直连科雷,需要加速

注意:frp的name一定不要重复!!!!

# 饥荒服务器映射
[[proxies]]
name = "dontstarve1"
type = "udp"
localIP = "127.0.0.1"
localPort = 10999
remotePort = 10999
​
[[proxies]]
name = "dontstarve2"
type = "udp"
localIP = "127.0.0.1"
localPort = 10888
remotePort = 10888
​
[[proxies]]
name = "dontstarve3"
type = "udp"
localIP = "127.0.0.1"
localPort = 10998
remotePort = 10998

其它端口号

端口

协议

作用

是否可以关闭/不映射

27017

UDP

Steam主服务器查询端口。用于将你的服务器信息(如名称、玩家人数、模式)注册到Steam主服务器列表,让玩家能在游戏内的“浏览服务器”中看到它。

可以,但有代价:不开放此端口,你的服务器将不会出现在Steam公共服务器列表中。但对于你知道IP和端口的固定好友来说,通过直连IP的方式仍然可以加入,不受影响。

8767

UDP

Steam验证/对等连接端口。主要用于处理玩家通过Steam好友列表“加入游戏”的请求,以及一些与Steam好友网络相关的数据交换。

可以,但有影响:不开放此端口,玩家可能无法通过Steam好友界面直接加入,但输入IP地址直连的方式依然有效。

启动服务器

启动服务器很简单,比较头疼的一点是如何将饥荒服务器置于后台启动,不然关闭了ssh服务器也就关了

所以这里有两个方案:

  1. screen(推荐)

    # 创建screen
    screen -S dontstarve
    # 运行服务器
    bash ./dontstarve_start.sh
    # 当想要回到这个screen时可以这么玩
    screen -r dontstarve
    # 关闭进程只需要进入screen后按下ctrl+c即可
  2. nohup

    自行搜索,比较麻烦,林风比较懒,尤其关闭进程很麻烦查看日志

    # 在启动时可以这么玩,但是不推荐,因为日志会越来越多,文件会越来越大
    bash ./dontstarve_start.sh>logs.log
    tail -f logs.log

更新服务器

只需要走一遍steamcmd操作即可,有mod的话还需要重新写一遍mod的id或者直接备份然后copy一份即可

例如:

# 进入到steamcmd
steamcmd
# 设置安装目录
force_install_dir /home/steam/software/dontstarve
# 登录用户
login 用户名
# 更新应用
app_update 343050 validate
# 退出steamcmd
quit
# 进入到备份文件夹
cd ~/back/dontstarve
# 将备份的mod文件copy到指定目录
cp dedicated_server_mods_setup.lua /home/steam/software/dontstarve/mods

Tips:

我这里将备份的dedicated_server_mods_setup.lua文件扔到了~/back/dontstarve里面,你们跟我的或许不一样,所以不要照抄,直接进你自己的备份目录即可

更新mod

重启下服务器即可,完全不需要重新进入steamcmd下载