前期准备
1、文中使用CentOS 7.9.2009 x86_64(Py3.7.9)搭建,其他版本以及其他操作系统表示不清楚.1核2G内存即可,饥荒服务器吃单核性能和带宽,实测阿里云单核上限8人,1M带宽上限4人
2、配置安全组规则,入方向:
协议类型UDP,端口范围10800-12000,授权对象0.0.0.0/0,优先级1(若有)
协议类型TCP,端口22,授权对象0.0.0.0/0,优先级1(若有)
下载安装
sudo su #切换为root用户
yum -y update #升级服务器
yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686 #安装所需环境
user add -m steam -p steam #创建用户,建议为用户设置一个密码以便操作,以steam为例,使用root账户登录Steam会带来风险!
sudo su steam #切换到steam用户
mkdir ~/steamcmd #创建安装位置
cd ~/steamcmd #进入安装位置
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载程序
tar -zxvf steamcmd_linux.tar.gz #解压
./steamcmd.sh #进入steamcmd,ctrl+退格为删除
login anonymous #以匿名方式登陆
force_install_dir /home/steam/dst #填写游戏安装路径
app_update 343050 validate #安装《饥荒联机版》
quit #退出steamcmd
检查依赖
cd ~/dst/bin
ldd dontstarve_dedicated_server_nullrenderer
./dontstarve_dedicated_server_nullrenderer
#可能会遇到错误:
#/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
#采用CP法解决
cp ~/steamcmd/linux32/libstdc++.so.6 ~/dst/bin/lib32/
#以下是博客《天天の記事簿》中记载的错误解决方法
#/lib/libc.so.6: version `GLIBC_2.15' not found
#一般是因为安装的glibc版本过低导致的,比如说CentOS从YUM源中安装的仅有2.12版本
#从Klei官方提供的链接下载与glibc相关的3个文件,Debian系也是这样解决
cd ~/dst/bin/lib32/
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libc.so.6
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libpthread.so.0
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/librt.so.1
#error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
#这是因为系统没有搜索到该文件
#使用cp方法运行时会出现./lib32/libcurl-gnutls.so.4: no version information available警告,无视之~
sudo apt-get install libcurl4-gnutls-dev:i386 #Debian系
cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4 #RedHat系
在其提示 Your Server Will Not Start后,按Ctrl+C停止进程
创建启动文件
cd ~/dst/bin/
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master > dst_overworld.sh
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves > dst_caves.sh
sh dst_overworld.sh #输完等其运行完成按一下Ctrl+C
sh dst_caves.sh #同上,再按Ctrl+C
rm -rf ~/.klei/DoNotStarveTogether/Cluster_* #删除无效的默认配置
在 /home/steam/.klei/DoNotStarveTogether/MyDediServer文件夹,里面有 Master 和 Caves 的两个文件夹,这两个文件夹分别是地上和洞穴的配置目录。PS:.keli是隐藏文件,你需要使用ls -la命令来列出全部内容
获取token
在https://accounts.klei.com/account/info里找到添加饥荒服务器
记下红框中的token后,点击配置服务器,并根具实际情况进行配置。这一步不用下载服务器配置文件!!!(修改游戏配置文件真的很令人头大,我们让它自动生成。)
pds-g^KU__LRRVW5p^9BPQKkmRLb2bjUYid94CJFCRDTzLzhyBemZPXzxOjjM=
配置游戏文件
STEP1:订阅好你的MOD,打开dst,把一切游戏内需要的MOD、服务器配置、密码全部设置好,并且生成一个游戏存档(点击创建世界,进入选择人物菜单,不放心可以选择一个任务并进入游戏)
STEP2:关闭游戏,打开:我的电脑\文档\Klei\DoNotStarveTogether,把Cluster_1(1为对应的存档序号)复制到其它地方,比如桌面。
STEP3:修改你复制后的Cluster_1。打开它,找到“cluster_token.txt”,把你的token复制进去,保存。分别压缩Master、Caves两个文件夹,你可以压缩成tar或tgz,我这里以zip格式为例。
接着切换至之前创建的dst用户,按照下面的目录树,上传Master.zip以及Caves.zip到指定文件夹并进行解压
/home/steam/.klei/DoNotStarveTogether\MyDediServer
|
| adminlist.txt(/adminlist.txt)
| blocklist.txt(/blocklist.txt)
| cluster.ini(/cluster.ini)
| cluster_token.txt(/cluster_token.txt)
| whitelist.txt(/whitelist.txt)
|
|---Master
| | modoverrides.lua(/Master/modoverrides.lua)
| | server.ini(/Master/server.ini)
| | worldgenoverride.lua(/Master/worldgenoverride.lua)
| | 其他文件
| |
| |---其他文件夹
|
|---Caves
| modoverrides.lua(/Caves/modoverrides.lua)
| server.ini(/Caves/server.ini)
| worldgenoverride.lua(/Caves/worldgenoverride.lua)
| 其他文件
|
|---其他文件夹
/home/steam/dst/mods
|
| dedicated_server_mods_setup.lua(/dedicated_server_mods_setup.lua)
其他文件
管理员
管理员拥有控制台指令权限,比如可以实现回档、创建新世界、开挂(滑稽)等等。你只需要把玩家的id放到adminlist.txt里,一行一个。
黑名单
我不想让熊孩子跑进我的服务器,我想屏蔽他!从日志中找到他的 SteamID64,添加到 blocklist.txt 中,一行一个
白名单
连接服务器的人太多,导致管理员都进不来,怎么办呢?编辑 whitelist.txt 和cluster.ini。
whitelist.txt和blocklist.txt很像,但是里面的内容是以 KU_ 开头的用户id
cluster.ini中的whitelist_slots字段限制了服务器的最大玩家数。 现在假设最大玩家数为6,whitelist_slotst里有2个玩家,所以实际上普通玩家的最大数量是4
MOD
在上面的目录树里, dedicated_server_mods_setup.lua
是用来确定要下载哪些mod,而
是配置mod是否启用和mod设置的。modoverrides.lua
可以在本地的world或者cave文件夹下找到,至于 modoverrides.lua
dedicated_server_mods_setup.lua
,我们需要手动把要下载的mod的id写进去,也可以在创意功放创建一个合集,把所有要用的mod放在一个合集里。这样就只用写一个合集的id,不用写每个mod的id了。
ServerModSetup("1207269058")
ServerModSetup("1530801499")
ServerModSetup("1818688368")
ServerModSetup("362175979")
ServerModSetup("378160973")
ServerModSetup("501385076")
ServerModSetup("624883463")
ServerModSetup("786556008")
ServerModSetup("970360001")
启动服务器
su - steam #切换到steam用户,如果已经切换,无需输入
script /dev/null
cd ~/dst/bin
screen -S world sh ./dst_overworld.sh #看看输出是否正确,完事后按一下Ctrl+A和Ctrl+D
screen -S caves sh ./dst_caves.sh #同理,Ctrl+A和Ctrl+D
叨叨几句... NOTHING