蹭个linux的热度吧,虽然是玩游戏,但是好歹也是在linux上搭建环境不是?
起因是直接在自己电脑上建服务器(i5-6200U+8G),会导致游戏1-2小时左右就卡的不行,查阅资料后,决定建立专用服务器。服务器就用腾讯云(实惠云),1核2G1M,300元3年,挺好!
我在网上查阅了大量建立饥荒服务器的资料,并在本地虚拟机模拟了很多次,几乎耗费了2天的时间,才总算一路摸爬滚打搞定了它。网上的很多教程都是缺胳膊少腿的,对于新手真不算友好。接下来我记录总结下我2天安装5-6次的经验,供参考。(当然,这一路又学习到了一点点linux小知识,也是很不错的,实践中学习总是最舒服的状态)
一、前期准备
1、安装软件
2、安装依赖(基于64位系统)
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc1
sudo apt install -y libstdc++6:i386
sudo apt install -y libcurl4-gnutls-dev:i386
sudo apt install -y libgcc1:i386
sudo apt install -y screen
sudo apt install -y libsdl2-2.0-0:i386
libsdl2-2.0-0:i386 这个软件官方并未说明需要安装,但是在启动游戏服务端的时候系统有提示:Warning: failed to init SDL thread priority manager: SDL not found,对于新手来说warning或者failed还是挺让人心烦的,所以我就装上了。(建议)
补充(2021.6.19):
新购的阿里云服务器,执行sudo add-apt-repository multiverse时提示命令无法找到:
3、安装steamcmd(大概是命令行版steam客户端吧)
sudo useradd -m steam #为了安全,建立新普通用户专门运行饥荒服务器
sudo passwd steam #设置新用户密码
su steam #切换到steam用户,这个用户可以自行命名
mkdir ~/steamcmd #在steam用户的家目录创建
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载steamcmd安装包
tar -xvzf steamcmd_linux.tar.gz #解压
./steamcmd.sh #运行
补充说明:
因为我是腾讯云,ubuntu20.04自带腾讯云的源,这个源里面没有自带steamcmd,所以我选择了下载安装包,我虚拟机里面因为用的阿里的源,可以直接在apt里面安装:
sudo apt install steamcmd
sudo useradd -m steam #apt方式安装需先用带管理员权限的用户安装,然后再切换普通用户,否则无权限
sudo passwd steam
su steam
cd ~
ln -s /usr/games/steamcmd steamcmd #apt安装的steamcmd没在家目录,因此需要创建一个软连接
如果直接apt安装steamcmd,一定要先用带管理员权限的用户安装,
4、运行steamcmd下载游戏
# 安装包运行 ./steamcmd.sh apt直接运行软连接的steamcmd
login anonymous #匿名登陆steamcmd
force_install_dir /home/steam/DstServer #指定安装目录
app_update 343050 validate #安装
quit #安装完毕,退出
二、配置游戏前
1、进入游戏目录 /home/steam/DstServer/bin
2、运行 ./dontstarve_dedicated_server_nullrenderer #因为还没有任何配置,运行的目的只是为了生成相关目录(后面详说)
3、运行后,很快就提示“生成服务器不成功”,这时CTRL+C退出,此时游戏配置文件夹已经生成(/home/steam/.klei)
三、正式开始配置
1、进入https://accounts.klei.com/account/game/list,复制你的USERID,生成饥荒联机版专用的token,保存USERID到记事本adminlist.txt中,保存token到记事本cluster_token.txt中;(只需要token就行,不必下载服务器配置文件,这个文件不全,运行会出问题)
2、从steam客户端中登录饥荒游戏,创建世界,配置MOD等,然后生成世界,将客户端生成的配置文件夹(Cluster_1、Cluster_2等,我这里以Cluster_1为例)拷贝出来;
3、进入Cluster_1,将adminlist.txt和cluster_token.txt复制进去,压缩Cluster_1文件夹为zip
4、进入/home/steam/DstServer/mods,编辑dedicated_server_mods_setup.lua,添加你需要的mod,格式如下:
ServerModSetup("352373173") --Show Me
ServerModCollectionSetup("352373173")
一个mod都是成对出现,一个是下载,一个是更新。
5、到此配置完毕。
四、启动游戏服务端
1、在家目录新建文件startdst.sh,内容如下:
#!/bin/bash
#steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/DstServer"
cluster_name="Cluster_1"
cd "$install_dir/bin"
run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
#如果你的主机只有1g内存,必须删除 & 后面的caves的内容,因为带不动地下世界
"${run_shared[@]}" -shard Master | sed 's/^/Master: /' &
"${run_shared[@]}" -shard Caves | sed 's/^/Caves: /'
注意:如果服务器内存1G,则删除最后一行Caves的内容,饥荒联机版服务端,地上和地下是2个独立服务,1G是肯定带不动的,2G及以上就问题不大。
2、运行启动脚本,启动游戏服务端
chmod -R +x ./startdst.sh #如果脚本没有执行权限,就添加以下
screen -S "dst" ./startdst.sh #用screen运行启动脚本,否则脚本一直运行中,无法干其他事情CTRL+A+D就可以切换出来,但脚本仍然运行中。
当然要不管不顾,直接运行脚本也是可行的:
3、等服务启动起来,就可以去游戏中查找服务器啦。
PS:阿里云ECS N4实例,同样ubuntu20.04,无法安装成功,在其中安装libcurl4-gnutls-dev:i386时失败,提示依赖问题,但是去安装提示的依赖,也无法成功,反而会卸载掉很多其它软件(包括apt);后来懒得折腾,换成18.04后就不存在这个问题。--2021.6.19
文章评论