Linux自建steam饥荒服务器教程
上来二话不说,先来几句废话。自从购买了学生优惠的云服务器后(不要问博主哪家的云服务器比较好,我什么都不知道),感觉不用总有点浪费,所以思索着建立一个能够联机的游戏的服务器。最开始博主决定在Linux系统上建立Unturned游戏的服务器。
于是博主在网上搜索大量的教程,发现这款游戏的受众并不多,只能围魏救赵,从V社能联机的教程中探寻方法。
然后我找到了https://steamdb.info/search/?a=app&q=,这个网址可以查找游戏是否能够在通过steamcmd的命令安装服务器,进行联机游戏。
很遗憾博主并没有找到unturned关于服务器方面的工具信息。但是服务器的事业不能停止,我把眼光成功的转向存放在库中多年的Don't Starve Together(饥荒联机版)
通过上面这张图片,我们可以清晰的知道,饥荒联机版是可以自建服务器的,所以开始进入正题:
首先列举几个对我帮助较大的网站信息:
http://dontstarve.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers 官方文档,英文好的可以直接看,英文不好的英文不好的网页翻译走一波
https://linuxgsm.com/support/ 这个网站里的方式可以快捷的建立很多V社游戏的服务器,不过博主就是为了折腾,就没有采用这种方式。
1.饥荒用户ID和令牌的获取,打开饥荒,点击个人资料,里面的UserID和Dedicated Server Token后来需要的
2.所需要的软件,运行库的安装
博主测试的系统都是64位的,32位的就不多说了
libstdc++6:i386(Cntos系统libstdc++.i686)
libgcc1:i386(Centos系统glibc.i686)
libcurl4-gnutls-dev:i386(Centos系统libcurl.i686)
steamcmd命令的安装
操作如下:
Centos(7.3 64位):
运行库的安装
yum install glibc.i686 libstdc++.i686 libcurl.i686 -y
steamcmd命令的安装
不要在root权限下操作,最好建立一个新的用户,在用户根目录下进行操作
添加用户
useradd steam
添加用户后,必须添加密码,否则无法直接登录该用户
passwd steam
切换用户,进入用户主文件夹
su steam
cd ~
从网上下载steam官方提供的steamcmd命令安装包,并解压
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
运行执行文件steamcmd.sh,出现steam>,安装成功
./steamcmd.sh
登录你的steam帐号,密码,如果帐号有令牌验证,第一次会索取令牌密码(ctrl加del退格)
指定一个文件夹来放游戏服务器程序的位置,下图就是在根目录下的heheda文件夹下进行存储,什么都不显示就说明成功了,不要疑神疑鬼。。。
最后安装饥荒服务器程序,最后面的数字就是前面查找到的工具appID(如果网速不好,是个漫长的过程)
安装完后使用quit命令退出steam操作台
在用户主目录下创建存档文件夹,klei文件夹和DoNotStarveTogether文件夹是饥荒默认的不可更改(博主经历了惨痛的教训)
mkdir -p ~/.klei/DoNotStarveTogether/Documents
进入该目录
cd .klei/DoNotStarveTogether/Documents/
创建adminlist.txt和cluster_token.txt用于存放之前获得的UserID和令牌号
vim adminlist.txt
vim cluster_token.txt
创建服务器端的设置文件,cluster.ini注意此文件必须要用utf8(无bom)进行存储,否则部分设置无效,最好下个notepad++
vim cluster.ini
;还有一些其他的设置,详情去看官方文档
[GAMEPLAY]
;最大人数
max_players = 3
;是否开启pvp
pvp = false
;游戏模式(生存,荒野等)
game_mode = survival
;服务器无人时,自动暂停
pause_when_empty = true
;投票踢人
vote_kick_enabled = false
[NETWORK]
;服务器介绍
cluster_description = 呵呵哒
;服务器名字
cluster_name = 呵呵哒
;服务器的密码
cluster_password = 呵呵哒
;游戏的意图(合作,竞争,无尽)
cluster_intention = cooperative
[MISC]
;快照,不太懂,英文好的可以去看看官方文档
max_snapshots = 6
;是否开启控制台
console_enabled = true
;IP端口设置,一般不用改
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = supersecretkey
创建并进入Master文件夹,此文件夹用来存储主世界信息
mkdir Master
cd Master
创建server.ini和worldgenoverride.lua用于存储服务器信息和世界信息
vim server.ini
[NETWORK]
server_port = 11000
[SHARD]
is_master = true
[STEAM]
master_server_port = 27018
authentication_port = 8768
[ACCOUNT]
encode_user_path = true
vim worldgenoverride.lua
return {
override_enabled = true,
preset = "SURVIVAL_TOGETHER",
--后面是对世界的设置,不设置均为默认,需要更改只需把要设置的写出来就行
misc = {
--世界大小:巨大
world_size = "huge",
},
monsters = {
--海象巢穴:较多
walrus = "often",
},
}
地穴跟主世界是一样的操作,退出主世界文件夹创建Caves文件夹并进入
cd ..
mkdir Caves
cd Caves
server.ini
[NETWORK]
server_port = 11001
[SHARD]
is_master = false
name = Caves
id = 1811570792
[STEAM]
master_server_port = 27019
authentication_port = 8769
[ACCOUNT]
encode_user_path = true
worldgenoverride.lua
return {
override_enabled = true,
preset = "DST_CAVE",
--世界设置
misc = {
--世界大小
world_size = "huge"
}
}
进入到用户主文件夹,编写startDST.sh shell脚本
cd ~
vim startDST.sh
#!/bin/bash
#前面的文件夹更改后,下面的相应值也需要更改
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/heheda"
cluster_name="Documents"
cd "$install_dir/bin"
run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
#不想开启洞穴就把&和后面的都去掉
"${run_shared[@]}" -shard Master | sed 's/^/Master: /' &
"${run_shared[@]}" -shard Caves | sed 's/^/Caves: /'
给脚本直接运行的权限(简单粗暴777),并运行
chmod 777 startDST.sh
./startDST.sh
脚本开始运行,看到Slave LUA is now ready!就说明你成功了..
Ubuntu(16.04 64位)
安装运行库
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 -y
添加用户,不加参数则不会创建用户主文件夹,修改密码
useradd -m steam
passwd steam
其他操作都和Centos系统一样。
3.让饥荒服务器一直执行
调用screen命令后运行前面的startDST.sh脚本
安装screen
Centos(7.3 64位):
yum install screen
Ubuntu(16.04 64位)
sudo apt-get install screen
开启screen窗口
screen -S 作业名称
运行脚本
./startDST
3.注意
饥荒对于目前的电脑来说算是低配游戏,但是对于一般的云服务器来说也是一种大的负担,对于那些只有1G内存的就尽量不要开洞穴,联机的人数也不要太多,以免系统GG。最后欢迎大家提问,欢迎大佬指点(虽然我不一定看得到。。。)