HellDiver2 联机P2P服务器搭建指南
哲灬牧心
编辑于 2024年04月01日 06:20

0. 先叠甲

鄙人才疏学浅,猜测老司机2的网络连接为P2P,并且尝试使用了服务器虚拟局域网的方式解决和朋友联机掉线问题,个人用起来没问题。只会用不懂原理,如果有说的不对的地方欢迎指正

1. 资源准备:

  1.  具有公网IP的服务器(学生优惠10块入的腾讯云)

  2. zerotier(用于组网,下载地址:https://www.zerotier.com/)

2. 原理介绍

老司机2联机为P2P联机,正常情况下玩家之间不能100%保证P2P连接成功建立。在不能建立时会使用游戏服务器作为中继进行连接以保证不会断线,而这个游戏的没有做中继服务器,因此会不时掉线,尤其在四人好友联机时尤为严重。(以上内容纯属猜测,如果觉得有问题请参考0.叠甲部分)参考来自https://www.bilibili.com/video/BV16j421S7kn​

在这篇文章中我们使用公网服务器加zerotier one这款软件组建我和朋友的虚拟局域网提高P2P连接质量。

3. 步骤说明

3.1 服务器部分

首先,请自行购买(白嫖)服务器,这里以腾讯云为例。

1. 我这边选则的是ubuntu2204的镜像(注意:zerotier需要比较高的内核版本具体未验证)

2. 登录进入镜像,在服务器配置控制台放行4000,9993端口的网络通信

3. 使用如下docker命令创建zerotier的容器,这里腾讯云提供了docker镜像源。(不知道bilibili如何使用代码模式,见谅)如果创建成功会打印一串随机的字母数字

注:`XXXX`的``是引号只要XXXX就可以

`sudo docker run -d --name docker-name -p 4000:4000 -p 9993:9993 -p 9993:9993/udp -e MYADDR=0.0.0.0 -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=yourpasswd --restart=always hausen1012/ztncui` 内容说明:-name 后面的内容是你的容器名字请记住后面会用到并使用docker-name代替  -e MYADDR=0.0.0.0 中的0.0.0.0请替换为你的服务器公网ip -e ZTNCUI_PASSWD=yourpasswd 为你的服务后台密码请记住 如果忘了可以在服务中使用 `history | grep ZTNCUI_PASSWD=`找到

4. 使用如下docker命令创建zerotier实例,

`sudo docker exec -it  docker-name bash /tmp/patch.sh && docker restart  docker-name` 看到有类似如下的打印说明成功了

控制台信息

5. 使用如下命令获取秘钥文件

`docker cp docker-name:/planet /home/ubuntu/`  命令说明, docker-name见上面说明,/home/ubuntu/是我要放到的位置,可以放到你想要的别的位置。

将上面的位置文件下载到你的电脑上, 服务器部分完成。

3.1 服务器后台部分(每个使用的用户都要做一遍)

1. 打开浏览器输入你的公网http://ip:4000 

2. 点击右上角login,使用admin,密码是如上的服务器后台密码

3. 使用如图方式创建新网络

4. 找到如图的network id

5. 完成3.3后每个成员都按如图勾选即可

1. 下载上面的windows客户端,将前一步下好的planet文件放到C:\ProgramData\ZeroTier\One文件夹下(原始的可以备份下,我是直接覆盖了)

2. 在系统的服务里选择重新启动如下图

3. 找到右下角托盘的图标, 点击join new network

在弹出的框中输入上面的network id(不确定是不是要关闭电脑防火墙,我的关了)

4. 按3.2 - 5操作

实测哈尔滨电信到上海移动50ms左右服务器在北京