BestSDK 游戏盾
Docs

接入顺序

先在控制台发布规则,再在客户端调用公共接口。不要把长期密钥写进游戏包当唯一凭证。

  1. 登录控制台,从「SDK 下载」取得 Windows / Android 接入包。
  2. 先登记源站(host:port),再创建应用并添加转发目标,发布后才会按规则回源。
  3. 在「转发规则」签发会话,下载这 6 个文件到同一目录:ticket.jws、config.jws、ticket_key.b64、config_key.b64、pop_seed.b64、ca.pem。
  4. Windows:gs_demo.exe <session-dir> 做演示回显;gsdiag.exe <session-dir> 做本机自检(打印原因码,不打印票据)。Android 示例把同一组文件放到应用私有目录 files/gs-e2e/。
  5. C / Java:gs_client_configure → gs_client_start → gs_local_endpoint,再把游戏改连返回的 127.0.0.1:port。可选:gs_install_id 读安装实例标识(不要打进公开日志),gs_probe 探测当前边缘节点(超时会在签名节点列表内重拨,不是热备)。

错目标返回原因码 110;超连接预算 113;协议版本不足 114;密钥撤销 115;探测超时 304;当前无路 305。完整票据不会出现在日志或控制台回显里。

验证上盾成功

按接入顺序改连 127.0.0.1:port 之后,用下面三步确认流量已走盾、源站地址未暴露。

1. netstat 确认 127.0.0.1 监听

运行 gs_demo.exe <session-dir>(或 Python / Unity 示例)拿到 stage=endpoint host=127.0.0.1 port=<port> proto=tcp+udp,另开终端确认该端口在本机 loopback 上监听,且 TCP 与 UDP 是同一端口:

netstat -ano | findstr 127.0.0.1:<port>

期望输出同时包含 TCP 127.0.0.1:<port> 与 UDP 127.0.0.1:<port> 且状态为 LISTENING;Local Address 必须是 127.0.0.1,不是 0.0.0.0(只对本机开放)。

2. Wireshark 验证源站 IP 不暴露

在游戏机本机抓包,显示过滤写源站地址(控制台「转发目标」里的 origin):

ip.addr == <源站IP>

期望结果:没有游戏机与源站之间的直连包;游戏数据发往的是边缘节点地址,而不是源站。再配合 ip.src == <游戏机IP> 检查出站方向,同样不应出现发往源站 IP 的包。若出现直连源站的流量,说明游戏进程仍在使用原地址连接,需要把连接改成 gs_local_endpoint() 返回的 127.0.0.1:port。

3. gs_demo / gsdiag stage 输出解读

输出含义
stage=create客户端实例已创建
stage=configure已用 6 个会话文件完成签名校验与配置装载
stage=startSDK 已启动 loopback 与边缘连接
stage=endpoint host=127.0.0.1 port=...本机监听端点(TCP 与 UDP 同端口)
stage=probe reason=0 rtt_ms=...边缘探测成功(gsdiag / gs_demo)
stage=tcp reason=0已连上本机 127.0.0.1(gsdiag 不以源站回显为成功条件)
stage=echo bytes=Ngs_demo TCP 回显成功
stage=udp-echo bytes=Ngs_demo UDP 回显成功
stage=stop / stage=done正常停止并销毁

gsdiag.exe 打印 reason=<数字>;gs_demo 失败时打印 stage=error reason=...。缺 6 个文件为 missing=...。常见原因码:103 票据过期(重新签发会话)、110 目标不匹配、113 超出连接预算、114 协议版本不足、115 密钥已撤销、304 探测超时(已尝试改拨下一节点)、305 当前无路。

4. 节点故障时会发生什么

SDK 对网关只保持 一条 TLS 长连接(不是同时连所有边缘节点)。签名配置里的 edges[] 按 priority 排序:启动时跳过不可达节点;运行中外层断开后关闭失效连接、结束本机已打开的游戏 TCP,再向列表中下一个节点重新鉴权拨号。loopback 端口不变。这不是透明长 TCP 迁移:需要游戏自己重连 127.0.0.1。UDP 与弱状态 TCP 可在外层恢复后继续。

计费口径

计费按「峰值同时在线设备」计算,开通经申请/邀请,首期不支持自助扣费;结算与档位以商务确认为准。

峰值同时在线设备

以安装实例为口径(不是 DAU,也不是注册账号数):同一时刻已通过 SDK 完成鉴权并保持连接的设备数,取计费自然月内的峰值。短期会话过期或主动断开后不重复计数。

公开档位(元/月)

档位峰值同时在线月价已登记源站
入门2003995
简易3006995
基础4009995
商务60019997
专业80029999
企业1000499911

超出档位峰值或需要更多源站,在申请时说明,由商务确认。

已登记源站数

统计该租户在控制台登记并通过校验的源站(host:port)数量;未登记的地址不会回源。同一源站多端口按条目计数。

单设备限速

当会话票面 maxKbps 大于 0 时,边缘按该值限制本会话转发速率:TCP 延迟发送,UDP 超限丢弃。默认与控制台签发均为 0,表示不按带宽限速。不按该能力单独计费,也不构成正式服务承诺。

回源真实 IP

默认关闭。仅当控制台该条转发规则勾选「真实 IP」,并且边缘与回源组件已成对升级后,回源 TCP 会在业务数据前附加 Proxy Protocol v2 头。源地址是边缘观测到的客户端地址,不是游戏进程自己申报的地址。