使用zerotier优化P2P游戏联机体验

开篇废话

最近被朋友拉去玩战锤,联机体验实在是差到飞起,打场仗三秒一停的,二十分钟的攻城战愣是打了三十分钟才结束,开了加速器都无解。
于是我猜测,这游戏应该是通过P2P联机的,但是由于我们两个的运营商不同,网络不互通,又没有公网IP,数据可能经由战锤官方的服务器进行中转了,所以丢包特别严重,如果能够构建虚拟局域网,应该能优化联机体验,于是我找到了个叫zerotier的软件,可以构建虚拟局域网,让我们在没有公网IP的情况下也能P2P联机,来优化联机的体验

准备条件

  1. 脑子和手
  2. 一台中国大陆vps

正式流程

创建zerotier网络

进入zerotier官网(ZeroTier Central),注册账号,创建一个网络
zerotier官网
创建好后保留默认设置就好
这里记一下Network ID,等会要用到

搭建MOON服务器

zerotier的服务器都在海外,因此我们国内用户使用时可能会出现无法连通P2P的情况,这样会导致所有流量都经由zerotier官方服务器中转,延迟和丢包会非常严重
因此我们可以搭建一个moon服务器,moon服务器相当于一个中转服务器,可以保证我们能够顺畅打通P2P,保证低延迟和不丢包因为moon服务器只起到一个握手的作用,在P2P打通后就没有moon服务器啥事了,因此不用担心moon服务器的延迟和宽带会影响联机体验,但是moon服务器务必位于国内,如果服务器位于海外的话,数据经由GFW出口,可能无法顺利打通P2P至于服务商的选购,这里就不多叙述了,推荐一下阿里云和腾讯云的学生机,9元一个月,我这里用的是腾讯云的无忧服务器,15元一月,数据中心位于广州ssh进vps后,输入以下命令来安装zerotier
curl -s https://install.zerotier.com/ | sudo bash
安装执行完成后,加入zerotier局域网(这里的<>请在填写时删除)
zerotier-cli join <network id>
生成配置文件

1
2
3
sudo chmod 777 /var/lib/zerotier-one
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json

之后编辑moon.json(vi编辑器的用法可自行上网搜索)
vi moon.json
修改内容如下,添加自己vps的公网IP
"stableEndpoints": [ "vps公网IP/9993" ]
之后生成moon配置文件
sudo zerotier-idtool genmoon moon.json
新建moons.d文件夹,并将生成的moon配置文件放进去(注意,每个人的moon配置文件文件名不一样,我这里的是0000001ae3f8ae77.moon,执行命令前请修改成你自己的配置文件的文件名)

1
2
mkdir moons.d
mv 0000001ae3f8ae77.moon moons.d/

之后重启zerotier就好了
sudo systemctl restart zerotier-one.service
重启好后,进入zerotier官网的网络配置,可以看到一个未验证设备接入,这个就是我们刚刚配置的moon服务器了,给前面的小框打勾,允许这个设备接入
网络配置
至此,moon服务器配置好了,接下来来到客户端配置

客户端配置

注意,你和你一起联机的朋友都需要进行客户端配置
先在官网下载zerotier Windows端的安装包
下载安装好后,你会发现啥界面都没有,不要以为没安装上(我就是以为没安装上,重复安装了十几遍)在Windows开始菜单搜索zerotier就能找到它了双击启动后就会在任务栏里出现了右键任务栏的zerotier,打开zerotier控制面板
控制面板
在#######的框里输入你的Network ID来加入网络,加入成功后如图所示
然后在zerotier官网的网络配置里,允许这台设备的接入
网络配置
之后进入C:\ProgramData\ZeroTier\One文件夹,新建moons.d文件夹,并将之前在moon服务器生成的moon配置文件丢进去
文件管理器
之后打开任务管理器,转到【服务】选项卡,点击【打开服务】,重启一下zerotier
重启zerotier服务
之后在命令终端里查看一下节点列表
zerotier-cli listpeers
出现moon服务器即为成功
节点列表
ping一下延迟
延迟
延迟
只有20ms,P2P连接成功建立了
如果ping不通的话,打开Windows防火墙的【高级设置】
Windows防火墙
在入站规则里启用这两个规则就行
启用规则

Enjoy

打开你的游戏,和朋友一起像往常一样联机就行了
zerotier会以系统服务的方式在每次启动Windows时运行,因此完成一次配置之后就基本不需要管了


使用zerotier优化P2P游戏联机体验
https://zhmoegirl.com/posts/b8341a35992d/
作者
InternetBugs
发布于
2023年1月26日
许可协议