bearer of the curse...
受制于网络问题,我和另一位游魂的联机不是很流畅
客户端 <==> 服务器:画符出现的速度
客户端 <==> 客户端:与好友的p2p联机延迟
于是自建了服务器。最近服务器快到期了,所以记录一下自建 服务器的流程。
首先来到 github.com/TLeonardUK/ds3os 这个项目
这个项目是黑魂2(原罪学者)和黑魂3游戏服务器的开源实现,可在线mod而不被ban
另外只支持正版,因为需要校验steam
来到 github releases 复制 linux.zip 下载链接
如果只希望连接到他人服务器,只下载 windows.zip 即可
ssh 到服务器上,使用 wget 或者其他工具下载
wget https://github.com/TLeonardUK/ds3os/releases/download/v0.42.0.0-main/linux.zip
创建文件夹存放相关数据,这里命名为 ds2.server
mkdir ds2.server
将下载的压缩包解压到 ds2.server 文件夹
unzip linux.zip -d ds2.server
进入到 ds2.server 文件夹
cd ds2.server
里面的Server目录下有
(暂不)可执行文件 Server
WebUI/
libsteam_api.so
下载 steamcmd,如果是 ubuntu 就执行下面,其他发行版就看对应的方法
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
运行 steamcmd 进入到 steam 命令行环境中
设置游戏服务器路径为 ds2.server
force_install_dir ~/ds2.server
随后登录 steam,匿名登录即可
login anonymous
输入quit退出steam环境
进入到 ds2.server 下的 Server 目录,为 Server 文件增加可执行属性
cd ds2.server/Server
chmod +x ./Server
./Server 运行 Server 文件,会提示下面的报错
./Server: error while loading shared libraries: libsteam_api.so:
cannot open shared object file: no such file or directory
不难注意到,Server 目录下除了可执行文件 Server,还有这个缺少的 libsteam_api.so
所以我们可以通过
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/ds2.server/Server
# 后面会有更自动化的方法,这个命令只对当前会话有效
然后 ./Server 运行,又会发现另一个错误
steamclient.so: cannot open shared obect file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file
这里 steamclient.so 的位置在另一个地方,所以软链接过来
ln -s ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/
# 非ubuntu系统 *可能* 并不在 前面这个位置,可以自己找一下
然后编辑一下服务器的配置文件 Saved/default/config.json
需要编辑的地方
Header:进服务器时的标题
Body:标题下面的文字
ServerName:选择服务器时显示的名字
ServerDescription:服务器描述
ServerHostname:服务器公网ip
Password:服务器密码(可选)
GameType:默认黑魂3,如果魂2则改为 DarkSouls2
在服务器安全设置中允许 50000~50050 这些端口的 TCP 与 UDP 连接。只用到四个端口,为了方便全都打开。
可以用这个 Open Port Check Tool 检测端口的开放情况
此时运行 ./Server 就没什么问题了,但是每次 export 环境变量都很麻烦,所以我们新建一个运行脚本
cd ~/ds2.server
vim run.ds2.server.sh
# 任意编辑器即可,或者 echo、 cat+EOF 等
脚本内容如下
#!/bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/ds2.server/Server
screen -dm -S ds2.server $HOME/ds2.server/Server/Server
这里用到了 GNU 的 screen 来避免当前会话结束后任务被挂起
接着 chmod +x ds2.server 赋予可执行权限,然后运行脚本即可
可通过 screen -r 查看输出,并通过 control-a d 重新detach任务
解压 windows.zip,运行 prerequisite 里面的文件安装环境, 接着打开 Loader 文件夹中的 Loader.exe,就能看到我们的自定义服务器了!
值得注意的是,Loader 的存档位置不同于 steam 官方服务器的存档
Loader存档位置:C:/Users/用户名/AppData/Roaming/DarkSoulsII/一串数字/存档.ds3os
官方服务器存档位置:...相同路径/存档.sl2
可使用 Loader 下方的齿轮图标,打勾复制存档 数据无价,请注意备份!