
0. 先叠甲
鄙人才疏学浅,猜测老司机2的网络连接为P2P,并且尝试使用了服务器虚拟局域网的方式解决和朋友联机掉线问题,个人用起来没问题。只会用不懂原理,如果有说的不对的地方欢迎指正
1. 资源准备:
具有公网IP的服务器(学生优惠10块入的腾讯云)
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左右服务器在北京