自建游戏加速器(三)——Playfast加速器篇

自建游戏加速器(三)——Playfast加速器篇

写在前面的话

咳咳,这个系列教程居然不知不觉更新到第三期了,这一期的教程是教大家从零开始编译PlayFast加速器 (https://github.com/narwhal-cloud/playfast)的客户端,并完成加速器分流规则的编写。这期教程比以往的两期相对来说更难,但效果挺不错的,相信如果大家有耐心且细心地看完文章也会成功的。好了,话不多说,让我们开始吧。


前期准备

  • 一台空闲的VPS(我这里以阿里云香港轻量服务器为例,以下简称服务器A)
  • 一台能够连接到外网的Windows电脑(用V2RayN,Clash之类的软件就可以啦)
  • 一颗善于谷歌和AI搜索的脑瓜
  • SSH工具和FTP工具(如FinalShell,WinSCP等,推荐Finalshell)
  • 一点点本地电脑硬盘空间
  • 一点点代码知识,比如说带#的是说明文字,并不是实际的代码
  • 一个优质线路VPS的节点(只能是Shadowsocks、VLESS、SOCKS5三种协议,以下用Shaowsocks协议节点作为演示(其实也推荐这个协议,因为加密不多)

1.本地编译环境搭建

1.1 安装 Git

1.2 安装 Go

  • GO语言是本次编译 PlayFast 的语言后端,因此我们需要前往Go语言官网https://golang.google.cn/dl/进行下载安装,选择图示最新的msi文件下载并一路回车安装即可

1.3 安装 Node.js

  • 编译 PlayFast加速器呢还需要用到Node.js,用于编译加速器的 Wails 前端界面,我们同样前往Node.js的官网地址https://nodejs.org/en/download/并下载其 LTS (长期支持) 版本,并一路回车使用默认选项安装 (确保 npm 被一同安装)。

1.4 安装 VS Code (推荐)

  • 其实如果你有其他代码编辑软件的话也可以不用下载VS Code,我这里是用习惯了VSC修改 Go 源代码和 JSON 配置文件了,所以才让大家下载这个,同样的,去VS Code官网:https://code.visualstudio.com/下载最新版本,一路回车安装即可。

2.配置编译环境的网络配置 (GOPROXY)

由于Go 语言默认的模块代理服务器 (proxy.golang.org) 在中国大陆地区无法访问。因此我们必须将其配置为国内镜像,不然后续编译api校验的时候会报错。(海外的用户可以忽略这一点,直接跳到第三点)

我们用Win+R打开命令提示符 (cmd),执行以下两条命令,设置 Go 代理:

# 1. 设置 Go 模块代理
go env -w GOPROXY=https://goproxy.cn,direct

# 2. 设置 Go 校验和数据库代理
go env -w GOSUMDB=sum.golang.google.cn

3.编译 Wails 核心及前端依赖

原项目的 build.bat 脚本在我电脑上不知道为什么跑不起来。因此后续所有编译步骤都是我手动编译的。

3.1 克隆项目

Win+R打开 cmd,输入以下命令克隆源代码:

cd Desktop
git clone https://github.com/narwhal-cloud/playfast
cd playfast

3.2 安装 Wails CLI

# 此命令会下载并安装 wails 命令行工具
go install github.com/wailsapp/wails/v2/cmd/wails@latest

3.3 检查环境

运行 Wails doctor 命令来检查所有依赖是否齐全:

wails doctor

必须确保 WailsGoNode.jsnpmWebView2 全部显示为 Installed (已安装) 状态。如果 Node.jsnpm 缺失,请返回步骤 1.3

看到这行绿色的SUCCESS就成功了

4. 修改源码并编译核心

在编译前,我们必须修改源码指向我们自己的后端 API,并添加Playfast原项目缺失的编译标签。

4.1 修改 API 端点

  1. 使用 VS Code 打开 playfast 文件夹。
  2. 找到并打开文件 internal/api/patch.go
  3. 将其中的 Domain变量修改为你任意一台空闲的服务器A(也可以是你想拿来当作游戏加速节点的VPS)
    • 将const Domain = “https://playfast.narwhal-api.com” // 改为: const Domain = “http://你服务器A的IP”
  4. Ctrl+S保存文件。

这里的第三点是什么意思呢?你可以理解为我们加速器连接的是存放信息的服务器A,服务器A上存放着你加速器要显示的公告信息、加速器分流规则以及节点信息,而你用服务器B、C、D创建的节点信息会在我往下的教程中汇总成一个json文件上传到服务器A,加速器在启动时会连接服务器A并获取服务器A上的节点文件,这样一来加速器就会读到你在服务器A上保存的其他的服务器BCD的节点信息,并变成节点选项让你选择连接,所以这台拿来存放节点信息以及分流规则的服务器A的配置以及线路的要求不用太高,当然如果你说你只有一台线路好的服务器怎么办呢?很简单,那这台服务器就既充当你放公告以及分流规则的服务器A,也充当节点服务器B的角色。

4.2 核心编译

PlayFast 客户端依赖 TUN 模式 (gVisor) 和 Clash API,但我自己在编译的时候却显示缺少这两个API,因此我这里进行手动添加。

在 cmd挂载playfast 文件夹后,运行以下编译命令:

# -tags "..." 命令会强制编译器把 gVisor (TUN) 和 Clash API 打包进去

wails build -tags "with_clash_api,with_gvisor"

等待大概几分钟。等到提示编译完成后,你会在 playfast\build\bin 目录中找到 PlayFast.exe 文件。

至此我们加速器的本体就已经搭建好了,接下来要做的就是写我们的部署后端API了。


5.后端 API 服务器部署 (Caddy)

PlayFast 加速器客户端启动时,会访问步骤 4.1 中你填写的地址(以下简称服务器A),并请求 读取5 个配置文件(别急,在步骤6会教你怎么写)。接下来需要你的服务器A上使用 Caddy 搭建一个简单的 Web 服务器来提供这些文件。

以下命令在你的服务器A (系统为Ubuntu/Debian) 上执行。

5.1 安装 Caddy

依次执行以下命令

sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt install caddy

5.2 配置 Caddy

  1. 创建文件目录:sudo mkdir -p /var/www/playfast
  2. 配置 Caddyfile找到这个目录下的文件:/etc/caddy/Caddyfile,并用WinSCP或者FinalShell等软件打开
  3. 清空 Caddyfile 里的所有内容,并粘贴以下配置 (将 YOUR_SERVER_IP 替换为你的服务器A的IP):http://你的服务器A的IP地址:80 {
    root * /var/www/playfast
    file_server
    }
  4. 重启 Caddy:sudo systemctl restart caddy

5.3 开放防火墙

登录你的云服务商控制台,放行 TCP 80 端口(当然我觉得你可能已经放完了)


6.创建配置文件

这是本教程的核心。我这里教大家写一点常见的分流规则,少浪费一点你珍贵的优质线路流量。

本地电脑上新建一个文件夹,叫什么都可以,我这里叫my-backend,然后创建以下 5 个文件

1. announcement

  • 注意这个announcement文件没有后缀名,就叫这名
  • 内容: (Announcement文件里面写的是你想展示在加速器主页的公告,必须是 HTML格式)
  • #公告内容可以随便写,只要符合HTML规则即可。向文件内写入如下信息:
  • <h3>欢迎使用</h3> <p>节点由我个人维护。</p>

2. proxy.json

  • (重要) 我们这里使用最稳定Shadowsocks (SS) 协议作为加速协议。请确保你优质线路的服务器B\C\D上已搭建好 SS 节点开放了相应防火墙端口
  • 往文件里输入以下代码,记得保存。
[ { "name": "想叫什么都行(SS)", "protocol": "shadowsocks", "method": "aes-256-gcm", "password": "YOUR_SS_PASSWORD", "host": "YOUR_SERVER_IP", "port": 你ss节点的端口} ]
图1

那如果我们有多个ss/s5/vless节点怎么办呢?诶,你只需要按照下列图示多加几条即可,如果有一条或者多条ss协议就按照图一的ss节点示例,然后根据根据图二示例,把vless的部分改成ss的节点示例就行了。

图二

3. black-list.json

往文件里输入以下代码,记得保存。

{
  "version": 3,
  "rules": []
}

4. direct-list.json (分流规则文件)

往文件里输入以下代码,记得保存。

{
  "version": 3,
  "rules": [
    {
      "domain_suffix": [
        ".cn",
        "163.com",
        "126.com",
        "baidu.com",
        "bilibili.com",
        "qq.com",
        "tencent.com",
        "weibo.com",
        "sina.com.cn",
        "taobao.com",
        "tmall.com",
        "jd.com",
        "zhihu.com",
        "douban.com",
        "douyin.com",
        "kuaishou.com",
        "mihoyo.com",
        "hooverse.com"
      ]
    },
    {
      "ip_cidr": [
        "192.168.0.0/16",
        "10.0.0.0/8",
        "172.16.0.0/12"
      ]
    }
  ]
}

5. version.json

往文件里输入以下代码,记得保存。

{
  "version": "v0.1",
  "url_windows": "",
  "sha256_windows": ""
}

最后使用Finalshell、 WinSCP 等工具,将它们全部上传到服务器的 /var/www/playfast 目录。


7.Enjoy Your Gaming Time!!!
玩的开心!!!

至此,所有教程内容就都已经结束了,打开我们编译好的加速器,选择你需要的节点进行加速就可以了,因为这个加速器本质上是利用你的节点进行游戏访问,什么延迟啊丢包啊什么的都取决于你和你节点之间的网络环境,但大部分情况下是够用的。如果出现开了加速器也没有办法打游戏的情况,请检查你是否开了其他代理软件。另外这个加速器本质上就是一个singbox,所以导入节点以后是可以直接当代理软件用的。Anyway,好久没更新长篇教程了,没想到花了一个上午来写哈哈哈(我的论文还没写的说2333),不管怎么说,希望本篇教程对你有所帮助吧,✿✿ヽ(゚▽゚)ノ✿完结撒花

广东移动开自己编译的加速器,连接香港节点打英雄联盟日服,延迟70左右,还算可以。

3 thoughts on “自建游戏加速器(三)——Playfast加速器篇

  1. 大佬 一步一步照着教程走 最后报这个 是因为啥,求教 start box error 0 initialize router: parse rule-set[0]: invalid sing-box rule-set file

回复 美滋滋 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Back To Top