#工作模式
平台是怎么运转的 —— 从一个游戏事件到设备动作,中间每一层在干什么。
#全链路
① 游戏进程 ② 本机 ③ 云端 ④ 设备
┌────────────┐ ┌──────────────────┐ ┌──────────────┐ ┌─────────┐
│ 游戏 │ │ GameHub 客户端 │ │ api.ycygame │ │ 役次元App │
│ ↑ │ │ │ │ .org │ │ ↓ │
│ 你的插件 │─────▶│ 本机网关 43002 │ │ │ │ 蓝牙设备 │
│ │ HTTP │ ├ 冷却/去重 │◀────▶│ 目录/下载/更新 │ │ │
│ │ │ ├ 事件路由 │ └──────────────┘ └─────────┘
│ │ │ ├ 波形选择 │ ▲
│ │ │ └ 设备分发 │──────────────────────────────────┘
└────────────┘ └──────────────────┘ 腾讯 IM / 直连蓝牙
关键点:游戏事件不出本机。 插件把事件发到 127.0.0.1:43002,
客户端在本地决定该做什么。云端只负责插件目录、下载和版本更新,
从不接收也不转发你的游戏事件。
#四个域名各干什么
| 域名 | 角色 | 有无登录态 | 谁在用 |
|---|---|---|---|
ycygame.org |
门户 + 插件市场 + 波形广场 | 无 | 所有人,浏览器 |
docs.ycygame.org |
这个文档站 | 无 | 开发者,浏览器 |
developer.ycygame.org |
开发者中心:注册/上传/发版/审核 | 有 | 插件开发者 |
api.ycygame.orgapi.ycygmae.app |
客户端 API:目录/下载/更新 | 无 | GameHub 客户端 |
为什么开发者中心要单独一个域名
它是全平台唯一持有登录 Cookie、唯一接受二进制上传的地方。
放在独立的源上之后,主站或客户端域出任何前端问题都碰不到开发者会话 ——
Cookie 只作用于 developer.ycygame.org,不下发到 .ycygame.org 通配。
为什么 API 挂两个域名
api.ycygame.org 主、api.ycygmae.app 备。客户端内置两个地址,
主域名超时或返回异常时自动切换。国内网络环境下单域名被污染是常态,
这不是冗余强迫症。
#插件的生命周期
开发者本地 平台 玩家
───────── ────── ──────
写代码
↓
check-plugin ──────────────▶ (同一份校验代码)
↓ 通过
publish-plugin ─────────────▶ 上传
↓
安全校验(ZIP结构/炸弹/路径穿越/manifest)
↓ 通过
所有权 + 版本 + 去重判定
↓ 通过
落 R2 + 写库,状态 pending
↓
人工审核 ─── 拒绝 ──▶ 开发者收到理由
↓ 通过
指为最新版本 ──────────▶ 出现在市场和客户端
↓
玩家一键安装
↓
SHA-256 校验
审核是硬门禁:未审核的版本永远不会被指为插件的"最新版本", 所以它不会出现在市场列表、不会出现在客户端、不能被下载。
版本不可变:已发布的包永远不覆盖。要改就发新版本号,且必须严格大于所有历史版本。 这是 SHA-256 校验和客户端缓存能成立的前提。
#事件是怎么被处理的
插件发出一个事件后,客户端依次做这些判断:
| 步骤 | 判断 | 不通过会怎样 |
|---|---|---|
| 1 | 联动总开关开着吗 | 直接丢弃 |
| 2 | 这个 eventKey 用户启用了吗 |
直接丢弃 |
| 3 | occurredAt 是不是超过 3 秒了 |
丢弃(不为旧事件动作) |
| 4 | 客户端侧冷却过了吗 | 丢弃 |
| 5 | 映射到哪个 commandId |
用用户配置的,不是插件写死的 |
| 6 | 这个指令绑了什么波形、什么强度 | 用用户配置的 |
| 7 | 发给哪些设备 | 按设备类型各自的量程 |
插件侧也必须做冷却和限流 —— 不能指望客户端兜底。 两层都做的理由是:客户端的配置是给用户调体验的,插件侧的闸门是保证 「就算用户把冷却调到 0,也不会因为一次尸潮把设备刷成常通」。
#采集游戏事件的几种模式
| 模式 | 适用 | 延迟 | 风险 |
|---|---|---|---|
| 官方 Mod API | 7DTD、Minecraft、星露谷、RimWorld… | 极低 | 无。首选 |
| 官方遥测接口 | CS2 的 GSI、LOL Live Client、战争雷霆 8111、模拟飞行 SimConnect | 低 | 无。首选 |
| Mod 加载器 | BepInEx / MelonLoader / Harmony(Unity 单机) | 极低 | 单机无风险 |
| 日志监听 | 会写详细日志的游戏 | 中 | 无 |
| 画面识别 | 上面都没有时的最后手段 | 高 | 无封号风险,准确率一般 |
| 音频检测 | 有特征音效的场景 | 中 | 无 |
| —— | —— | 带反作弊必封号,审核不通过 |
带内核反作弊的游戏(Vanguard / BattlEye / ACE 等)只能用画面识别或音频检测。
#平台的三个不做
不做事件中转。 游戏事件只在本机流转,云端看不到你在玩什么、发生了什么。
不做客户端强制更新。 更新走 api.ycygame.org/v1/client/update,
客户端自己决定什么时候升。只有 minSupported 以下的版本才会被要求必须更新。
不做插件代码执行。 平台只校验包的结构与元数据,不运行包里的任何东西。 可执行文件由人工审核确认来源和用途。