侧边栏壁纸
博主头像
Linux学习记录博主等级

我们因为好奇而所获得的一切,最终会因为骄傲而全然玷污

  • 累计撰写 45 篇文章
  • 累计创建 13 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

在ubuntu20.04上搭建饥荒联机版专用服务器

Frank
2020-10-17 / 0 评论 / 0 点赞 / 7 阅读 / 4397 字

蹭个linux的热度吧,虽然是玩游戏,但是好歹也是在linux上搭建环境不是?

起因是直接在自己电脑上建服务器(i5-6200U+8G),会导致游戏1-2小时左右就卡的不行,查阅资料后,决定建立专用服务器。服务器就用腾讯云(实惠云),1核2G1M,300元3年,挺好!

我在网上查阅了大量建立饥荒服务器的资料,并在本地虚拟机模拟了很多次,几乎耗费了2天的时间,才总算一路摸爬滚打搞定了它。网上的很多教程都是缺胳膊少腿的,对于新手真不算友好。接下来我记录总结下我2天安装5-6次的经验,供参考。(当然,这一路又学习到了一点点linux小知识,也是很不错的,实践中学习总是最舒服的状态)

一、前期准备

1、安装软件

sudo apt install -y unzip   #解压软件,后期需要上传配置文件,方便解压

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时提示命令无法找到:

sudo apt install software-properties-common

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就可以切换出来,但脚本仍然运行中。

当然要不管不顾,直接运行脚本也是可行的:

./startdst.sh   #运行脚本

3、等服务启动起来,就可以去游戏中查找服务器啦。

 

PS:阿里云ECS N4实例,同样ubuntu20.04,无法安装成功,在其中安装libcurl4-gnutls-dev:i386时失败,提示依赖问题,但是去安装提示的依赖,也无法成功,反而会卸载掉很多其它软件(包括apt);后来懒得折腾,换成18.04后就不存在这个问题。--2021.6.19

0

评论区