# 在linux下运行黑魂3私服

# 前情提要

lz手上只有一台1核心2G内存的小服务器,安装Windows显然过于勉强。在Linux支持前尝试过使用frp转发服务器端口的流量,但内网穿透有很多更好的解决方案。
魂3私服本身对性能要求不高,甚至带宽也不需要很大(玩家之间P2P连接,也是糟糕联机体验的罪魁祸首)。不安装Windows系统甚至Linux图形界面的情况下,就能以"轻量应用"、"学生"服务器这一类作为选购目标了,大多价格能到9元每月。
并且使用云服务器启动服务器,不需要考虑内网穿透,加入服务器的玩家不需要做其他前置操作,在loader选择好加入即可。 本文仅涉及开设服务器,加入服务器的方法并没有变化,可以查看魂3吧置顶帖。
preview

# 粗略的测试

魂3服务器在启动后空载的情况下内存占用在50MB上下,CPU负载1.3%。不确定在多人游玩的情况下负载的变化。目前运行32小时(期间有两位玩家登录游玩)后无异常。 lz演示服务器规格为腾讯云轻量应用服务器,通用型套餐。1核心,2G内存,6M带宽。

# 开始之前

私服对某些库版本要求比较高,楼主在centos8中的尝试,最高分别是libstdc++.so.6.0.26与GLIBC_2.28,如果你为开服而选购服务器并且不知道怎么折腾升级gcc、glibc以及相应的库,尽量选择较新的系统。lz改用Ubuntu 20.04 LTS。

# 连接到服务器

楼主使用mobaxterm演示,官网链接:https://mobaxterm.mobatek.net/download-home-edition.html (opens new window)
Portable edition蓝色是解压即用,Installer edition(绿色)是安装到系统,看个人需求。 mobaxterm

# 新建对话

安装完成后,打开软件,点击左上角的session,准备新建连接。 newSession

选择SSH,一般准备好的服务器镜像会自带sshd,如果你的连接失败,可能要从网页管理面板操作安装跟启动sshd。 ssh

填写你的服务器信息,Specific username表示该连接将一直使用某个用户名,不勾选在这一步是无法输入用户名的。勾选的话,以后双击连接就自动登录,不询问使用哪个账号登录。填写完成后选择下方的OK newSession

初次账户连接会询问是否保存密码,看个人需求。 savePass

初次连接服务器可能会出现known_hosts询问,输入yes(从终端连接,仅为了演示)。 newHost

完成后软件会自动进行连接,并且左侧工具栏切换到文件浏览,默认到你账户的根目录。右边就是我们输入命令与服务器交互的地方了。 finishConnect

# 获取steam客户端共享库

# 新建用户

如果你现在使用的是root账户,最好搜索怎么添加新账户,这里用adduser简单演示一下。 sudo开头的命令一般都会让你输入密码,而且密码是不会显示的,所以输完按回车就好。同样,创建用户时询问输入密码也是不回显的。

# 创建用户
sudo adduser {新的用户名}

# 把新建的用户添加到sudo组
sudo usermod -aG sudo {新的用户名}
1
2
3
4
5

新建用户后不要通过只su切换账户,回到新建对话重新登录。不然在拖拽上传文件的时候会有权限问题(终端与文件浏览器账号不一致)。

# 安装steamcmd

官方指引:https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn#Linux (opens new window)

我们使用Ubuntu的安装方式,由于楼主已经安装完成,就不演示了。 installSteamCmd

# 链接steamclient.so

~表示你的账户的根目录,所以在什么路径下运行不是很讲究

# 创建文件夹
mkdir -vp ~/.steam/sdk64

# 创建文件链接
ln -s steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
1
2
3
4
5

# 调整服务器防火墙

以默认的配置文件来说,你需要让50000,50005,50010,50020,50050 这5个端口开放,不确定TCP与UDP协议有没有要求。图中UDP少一个是因为50005是网页控制界面的端口。 具体的添加方式,最好自行搜索对应品牌的服务器界面操作。 prot

# 游戏服务器

# 下载与上传游戏服务器

Release v0.20.0.0-main的Linux文件为例。配置服务器访问github,或者你可以下载到自己电脑解压出linux文件夹,然后将文件夹拖到服务器的文件浏览器界面。如果拖拽出现错误提示,尝试第二步的步骤登录你新建的账户。 https://github.com/TLeonardUK/ds3os/releases/download/v0.20.0.0-main/linux.zip (opens new window)

假设上传到账户根目录。
Uploaded

# 复制libsteam_api.so

# 复制libsteam_api.so到 /lib/下
sudo cp ~/linux/Server/libsteam_api.so /lib/

# 设置Server为可执行文件:
chmod +x ~/linux/Server/Server
1
2
3
4
5

# 试着启动服务器

是时候启动服务器看看了

#服务器文件夹
cd ~/linux/Server/

#运行服务器
./Server
1
2
3
4
5

看到Server is now running.就启动完成了 Serverlaunch

第一次启动耗时会比较长。同时按CTRL 与 C 键退出服务器。 服务器启动后,生成的服务器配置文件在 linux/Server/Saved/下。
ConfigFileLoaction

服务器启动后,你可以在浏览器输入 你的服务器地址:50005 (注意是英文冒号)登录管理面板,默认的账户密码都是空的,在linux/Server/Saved/config.json设置。

# 使用screen运行服务器

关掉黑窗口并不会把你的任务自动放到后台运行,而是一并关掉。使用screen达到后台持续运行任务的目的。楼主的Ubuntu自带了screen,如果提示错误搜索一下怎么安装。 在命令窗口输入screen ,回车,窗口会被刷新,从此你在这个窗口的命令并不会因为你关掉窗口而停止,然后在此窗口运行服务器

#安装screen 
sudo apt-get install screen

#列出所有screen
screen -ls

# 连接到具体screen
screen -r {编号,比如下图的171311}
1
2
3
4
5
6
7
8

具体使用自行查找。 screen