深色模式
客户端
本章你将学到:客户端是什么、负责哪些事、依赖什么才能正常运行;它坏了会有哪几类表现(起不来、消失、白屏、转圈、登录异常、更新失败),每一类分别指向什么;怎么从可观察的证据区分"客户端本身的问题"和"客户端依赖的东西出了问题"。
什么时候用得上:用户的问题发生在"进入大厅之前"或"客户端界面本身不正常"的时候。如果用户已经能正常用大厅、只是游戏或对局有问题,请翻 游戏文件与下载 或 对战服务器与网络。
客户端是什么
客户端是用户电脑上安装的 R0 程序,是用户接触平台的唯一入口。它是一个 Windows 程序,界面用 Web 技术实现(类似把一个网页装进了一个窗口里)。这一点很重要:它意味着客户端的界面依赖 WebView2 这类网页渲染组件,界面空白、按钮不响应这类问题,很多时候和"网页打不开"是同一类原因。
客户端负责的事:
| 职责 | 说明 | 依赖 |
|---|---|---|
| 登录 | 手机号 + 短信验证码登录、密码重置 | 网络、服务端登录与账号模块 |
| 大厅与房间 | 显示好友、战队、房间、聊天;通过 WebSocket 长连接和服务端实时同步 | 长连接稳定 |
| 匹配 | 天梯、1v1、娱乐、十人约战的匹配与 Ban/Pick | 长连接、服务端房间与匹配模块 |
| 下载游戏文件 | 把平台下发的全皮肤版游戏本体下载到用户选的目录 | 网络、下载源、目标磁盘 |
| 校验与更新游戏文件 | 检查文件完整性、下发增量更新 | 磁盘可读写、杀软不干扰 |
| 启动游戏 | 拉起游戏进程,同时 R0Guard 运行 | 游戏文件完整、R0Guard 正常、显卡驱动 |
| Steam 校验 | 每 5 秒检测本机登录的 Steam 账号是否与绑定一致 | Steam 运行且在线 |
| 内置客服页面 | 在客户端里打开在线客服,自动带上用户 UID | 网络、客服系统 |
| 自更新 | 检测新版本并更新自身 | 网络、写入安装目录的权限 |
| 显示对局、直播观战、商城、钱包等 | 把服务端的数据显示出来 | 网络、对应服务端模块 |
大白话
客户端像一个前台接待:登录、带你进房间、给你发游戏文件、帮你叫服务器。它自己不打比赛(那是游戏进程的事),也不存你的余额和战绩(那在服务端)。所以"客户端坏了"和"游戏坏了"、"账号坏了"是三件不同的事。
它依赖什么、谁依赖它
上游:客户端依赖的东西
| 依赖 | 缺了会怎样 | 详见 |
|---|---|---|
| Windows 系统正常 | 一切都谈不上 | 系统基础 |
| VC++ 运行库 | 启动报"找不到 xxx.dll"或"无法正常启动",或双击无反应 | 运行库 |
| WebView2 | 界面空白、白屏、按钮无响应;新版客户端没有它起不来 | 浏览器与 WebView2 |
| 管理员权限 | 安装不完整、R0Guard 初始化失败、自更新写不进目录 | 系统基础 |
| 杀软放行 | 文件被隔离、进程被结束、启动即消失 | 安全软件与拦截 |
| 网络(到服务端) | 一直转圈、登录网络错误、房间显示离线 | 对战服务器与网络 |
| 系统时间大致正确 | 与服务端建立安全连接失败,表现为转圈或网络错误 | 系统更新与电源 |
| 没有代理残留 | 登录失败、下载慢、白屏 | 加速器与代理 |
| 磁盘可写 | 缓存、日志、更新写不进去;慢速盘上客户端本身也慢 | 存储 |
下游:依赖客户端的东西
客户端不正常,下面这些都跟着不正常——但反过来不成立。
- R0Guard:随客户端启动初始化。客户端起不来,R0Guard 也不会运行。
- 游戏进程:由客户端拉起。客户端能开但游戏起不来,问题在游戏文件、R0Guard、驱动这些环节,不在客户端本体。
- Steam 校验和工坊下载:由客户端的本地组件调用 Steam。客户端正常但这两项异常,问题在 Steam 侧。
安装包与版本
- 安装包是 Inno Setup 类型的可执行文件,文件名形如
r0_arena_vX.Y.Z.exe,其中X.Y.Z就是版本号。 - 安装需要管理员权限,会弹 UAC 确认框。用户点了"否",安装可能中途结束或安装不完整。
- 安装包内含 VC++ 运行库,正常情况下会顺带装好。但如果运行库安装步骤被杀软拦截或被用户跳过,客户端就可能起不来。
- 新版本依赖 WebView2。绝大多数 Windows 10/11 已自带,但精简系统、网吧系统、长期不更新的系统可能没有或版本过旧。
待技术确认
客户端当前的最低系统版本要求、是否支持 Windows 7/8、WebView2 的具体安装方式(安装包内含还是联网下载),以及版本号在客户端界面中的显示位置,以技术同事说明或知识库为准。
自更新
客户端启动时会检测新版本并自动更新。更新失败的典型表现:
| 表现 | 可能原因 |
|---|---|
| 每次启动都提示更新,更新完再启动又提示 | 更新文件没写进去(权限不足、目录只读、杀软拦截、网吧还原) |
| 更新进度卡住不动 | 网络到更新源慢、代理干扰、磁盘写入慢 |
| 更新后客户端起不来 | 更新文件不完整;新版依赖(如 WebView2)缺失 |
| 提示版本过低但无法更新 | 更新器本身异常,通常需要重新下载安装包覆盖安装 |
对更新问题的通用处理思路见 客户端、启动器与更新器。
它坏了会有什么表现
客户端的故障可以按"用户看到了什么"分成六大类。先把用户的"打不开"归到这六类里的一类,再往下查。
| 类别 | 用户看到的 | 最可能的环节(按可能性排序) |
|---|---|---|
| A. 双击无反应 | 什么都没出现,鼠标不转圈或转一下就没了 | 运行库缺失;杀软静默拦截;进程已在后台运行;快捷方式失效 |
| B. 启动即消失 | 窗口闪一下或任务管理器里出现进程几秒后消失,无报错 | 三类成因,见下节 |
| C. 白屏或空白 | 窗口出现了,但里面一片白或黑,没有任何按钮 | WebView2 缺失或损坏;代理残留;缓存异常 |
| D. 一直转圈 | 窗口和加载动画都有,但停在转圈不进入登录页或大厅 | 网络到服务端不通;服务端故障;代理残留;系统时间错误 |
| E. 登录异常 | 能到登录页,但收不到验证码、提示网络错误、登录后弹回 | 见"登录相关的表现分类" |
| F. 能进大厅但某功能不工作 | 大厅正常,但下载不动、准备不了、点开始游戏无反应 | 不在客户端本体,翻对应环节页 |
注意
A 类和 B 类最容易混。区分方法:让用户双击图标后立刻打开任务管理器看进程列表。A 类是进程根本没出现过;B 类是出现了又消失。两者的排查方向不同:A 类先查运行库和杀软,B 类要走"三类成因"的区分流程。任务管理器的用法见 任务管理器。
进程凭空消失的三类成因
"客户端打开几秒就没了,什么提示都没有"是最让新客服头疼的问题,因为它没有任何报错可以看。但它的成因只有三类,每一类都有可以观察的线索。
| 成因 | 是什么 | 区分线索 |
|---|---|---|
| 一、程序自身崩溃 | 客户端内部出错,自己退出了 | 事件查看器有 Application Error 记录,故障模块是客户端自己的文件;通常会生成崩溃转储;往往在特定操作后发生(比如每次点某个页面就消失) |
| 二、原生模块访问违例 | 客户端加载的某个底层模块(R0Guard 的 DLL、WebView2、被第三方软件注入的模块)出错,把整个进程带崩了 | 事件查看器有 Application Error 记录,但故障模块名不是客户端自己的文件;用户电脑上有变声器、宏、覆盖层、输入法增强等注入类软件;同样可能有崩溃转储 |
| 三、被别的程序强制结束 | 杀软、网吧管理软件或其他安全类程序直接把进程结束了 | 事件查看器没有 Application Error 记录(程序不是自己崩的);没有崩溃转储;杀软或网吧软件的拦截日志或隔离区里有记录;往往在客户端启动的固定时刻消失(比如 R0Guard 初始化的那一刻) |
怎么让用户帮你区分
让用户做下面三件事,按顺序:
第一步:看事件查看器
- 怎么做:按 资源监视器与事件查看器 里的步骤打开事件查看器,看"Windows 日志 → 应用程序",找客户端消失那个时间点前后的错误记录,截图。
- 预期看到:可能有一条来源为 Application Error 的记录,里面会写"错误应用程序名称"和"错误模块名称"。
- 结果说明:
- 有记录,错误模块是客户端自己的文件 → 成因一,收集崩溃转储后升级。
- 有记录,错误模块是别的东西(某个 DLL 名字) → 成因二,看这个模块属于谁:是 WebView2 就走 浏览器与 WebView2;是第三方软件就走 常见软件冲突;是 R0Guard 相关就走 反作弊(R0Guard)。
- 完全没有记录 → 大概率成因三,进入第二步。
第二步:看杀软和网吧软件
- 怎么做:打开用户电脑上的杀软,看"隔离区""拦截记录""防护日志"这类页面,找客户端安装目录下的文件或客户端进程名。网吧用户则询问网管是否有进程拦截策略。具体入口见 安全软件与拦截。
- 预期看到:可能有一条"已阻止 / 已隔离 / 已结束"的记录,指向客户端或 R0Guard 的文件。
- 结果说明:
- 有记录 → 成因三确认。让用户把安装目录加入白名单并恢复被隔离的文件,重试。网吧用户需网管操作,见 网吧环境。
- 没有记录,且事件查看器也没有 → 仍可能是静默结束(有的安全软件不留记录),或需要看客户端日志。进入第三步。
第三步:看是否有崩溃转储和客户端日志
- 怎么做:让用户在客户端的日志目录里查看最近生成的文件,打包发过来。
- 预期看到:日志文件最后几行会记录客户端退出前在做什么;如果有崩溃转储文件,说明程序是自己崩的。
- 结果说明:
- 有崩溃转储 → 成因一或二,连同日志一起升级给技术。
- 无崩溃转储,日志在某个固定动作后戛然而止 → 倾向成因三,结合第二步的信息升级或处理。
待技术确认
客户端日志文件与崩溃转储文件的存放位置、文件命名方式、是否有"一键打包日志"的入口,以技术同事说明或知识库为准。不要向用户说一个你不确定的路径;可以说"客户端日志的具体位置我确认一下再告诉您"。
禁止
不要因为"没有报错"就让用户直接重装。重装会抹掉日志和崩溃转储,让技术失去分析材料。先按上面三步收集证据,再决定下一步。见 排查总原则。
白屏与空白界面
窗口出来了,但里面什么都没有。三个可能的原因,按顺序排除:
| 原因 | 为什么会白屏 | 怎么确认 |
|---|---|---|
| WebView2 缺失或损坏 | 界面是网页,没有渲染组件就画不出来 | 在系统"应用和功能"里找 Microsoft Edge WebView2 Runtime 是否存在;其他依赖 WebView2 的程序是否也白屏。详见 浏览器与 WebView2 |
| 代理残留 | 界面要加载的内容走了一个已经失效的代理 | 系统代理设置里是否有开着的代理;用户是否最近用过加速器或 VPN。详见 加速器与代理 |
| 缓存异常 | 上次运行留下的缓存损坏 | 清理客户端缓存后是否恢复(清理方法待技术确认,通用概念见 客户端、启动器与更新器) |
待技术确认
客户端是否提供"清除缓存"入口、缓存目录位置,以技术同事说明为准。
一直转圈
客户端有窗口、有加载动画,但停在那里不进登录页或大厅。这说明界面渲染没问题,卡在和服务端建立连接。
| 原因 | 特征 | 怎么确认 |
|---|---|---|
| 用户网络到服务端不通 | 其他网站可能也慢或打不开 | 让用户打开任意网页;ping 一个公共地址。见 网络排查工具 |
| 服务端故障 | 短时间内多个用户同时转圈 | 问客服群;见 紧急情况的判断 |
| 代理残留 | 网页能开,但客户端转圈;用户最近用过加速器或 VPN | 检查系统代理设置 |
| 系统时间错误 | 系统时间与实际差很多(几分钟以上);浏览器打开某些网站会提示证书错误 | 看任务栏右下角的时间和日期是否正确 |
| DNS 异常 | 能 ping 通 IP 但打不开网址 | 见 DNS 与 CDN |
让用户核对系统时间:
- 怎么做:看屏幕右下角的日期和时间,和手机对比。
- 预期看到:分钟级一致。
- 结果说明:差几分钟以上或日期不对 → 让用户开启"自动设置时间"并同步,重试客户端;一致 → 排除这个原因,继续查网络和代理。
登录相关的表现分类
| 表现 | 主要环节 | 客服能做的 | 需要升级的 |
|---|---|---|---|
| 点获取验证码后提示网络错误 | 客户端到服务端的连接 | 查网络、代理、系统时间 | 多人同时出现 |
| 收不到验证码 | 短信通道(服务端)或手机侧 | 确认手机号无误、手机信号、是否拦截为垃圾短信、是否短时间内多次请求触发限制 | 多人同时收不到;单人确认手机侧正常后仍收不到 |
| 提示验证码错误或已过期 | 用户输入或时效 | 让用户重新获取、注意不要用旧的 | 反复出现且确认输入无误 |
| 提示账号异常、被限制 | 服务端账号状态 | 收集 UID,告知需核查 | 一律升级 |
| 登录成功后掉回登录页 | 长连接建立后立刻断开,或登录态被服务端拒绝 | 查网络稳定性、是否有另一台设备登录、代理 | 单人排除网络后仍反复出现 |
| 登录后大厅数据加载不出 | 长连接不稳定或服务端 | 查网络 | 多人同时出现 |
详细排查见 登录与连接问题。
内置客服页面与 UID
客户端里有内嵌的"在线客服"页面,打开时会自动带上用户的 UID。这意味着:从客户端内置客服进来的用户,你不需要问他 UID——它已经在会话信息里了。UID 是升级工单的必填项,见 何时升级。
待技术确认
在客服系统的会话界面中,用户 UID 的具体显示位置,以及从其他渠道(比如用户直接加微信、打电话)进来时如何让用户自己查看 UID(客户端里的显示位置),以客服系统使用说明和技术同事说明为准。
如果用户是从客户端外部渠道来的,且他本人无法打开客户端(比如客户端起不来),你需要通过手机号让技术查询 UID,或让用户提供上次能登录时记下的信息。
客户端问题与游戏问题的边界
这是一条必须画清楚的线:
| 情况 | 问题在哪一环 | 翻哪一页 |
|---|---|---|
| 客户端本身起不来、白屏、转圈、登录不了 | 客户端本体及其依赖 | 本页 |
| 客户端正常,下载慢、校验失败 | 游戏文件与下载 | 游戏文件与下载 |
| 客户端正常,准备不了、提示 Steam 不匹配 | Steam | Steam 与账号绑定 |
| 客户端正常,点开始游戏无反应或游戏起来又消失 | 游戏进程、R0Guard、驱动、游戏文件 | 反作弊(R0Guard)、无法启动 |
| 客户端正常,游戏能玩但卡、掉线 | 网络、对战服务器 | 对战服务器与网络 |
| 客户端正常,游戏帧数低、闪退 | 硬件、驱动、游戏本身 | 帧数低、崩溃与卡死 |
一句话:客户端能不能正常用大厅,是判断问题是否在客户端本体的分界线。能用大厅,客户端本体基本没问题。
哪些客服可解决、哪些要升级
| 客服可解决(指导用户操作) | 需要升级 |
|---|---|
| 安装或修复 VC++ 运行库 | 事件查看器显示崩溃模块是客户端自身文件,且用户环境干净 |
| 安装或修复 WebView2 | 同一版本多个用户出现相同问题 |
| 杀软白名单、恢复隔离文件 | 服务端相关:账号状态、验证码通道、登录被拒 |
| 清理代理残留 | 更新器本身的 bug(干净重装后仍无法更新) |
| 校正系统时间 | 需要看服务端日志才能判断的问题 |
| 客户端装在慢速盘时建议迁移 | 崩溃转储的分析 |
| 干净重装(见 干净重装) | — |
| 网吧用户:说明需要网管加白名单 | — |
注意
"用户环境干净、问题稳定复现"是判断客户端 bug 的前提。在确认运行库、WebView2、杀软、代理、磁盘这五项之前,不要以"疑似 bug"升级。见 何时升级。
常见误区
- "打不开就重装。" 六大类表现里只有少数几种重装有用,而且重装会抹掉证据。先归类,再决定。
- "没报错说明不是程序问题。" 恰恰相反,"没报错就消失"有三类成因,其中两类是程序层面的崩溃,需要事件查看器和崩溃转储来区分。
- "白屏是网络不好。" 白屏首先是渲染组件(WebView2)的问题;网络不好的表现通常是转圈,不是白屏。
- "用户说版本是最新的。" 让用户说出版本号,而不是"最新"。自更新失败的用户往往以为自己是最新的。
- "收不到验证码是我们短信没发。" 先排除手机侧:号码输错、信号、垃圾短信拦截、短时间内多次请求。单人收不到大多在手机侧;多人同时收不到才是通道问题。
对排查意味着什么
- 客户端问题的排查入口是 无法启动(起不来、消失、白屏、转圈)和 登录与连接问题(登录相关)。
- 收集证据的顺序固定:任务管理器(进程有没有出现过)→ 事件查看器(有没有崩溃记录、崩溃模块是谁)→ 杀软记录 → 客户端日志与崩溃转储。这个顺序同时覆盖了三类消失成因。
- 更新问题走 客户端、启动器与更新器 的通用思路。
- 凡是在"客户端能正常用大厅"之后出现的问题,离开本页,翻对应环节。
自检问题
- 客户端"打不开"的六大类表现分别是什么?每一类最可能的环节是什么?
- "进程凭空消失"的三类成因是什么?分别用什么线索区分?事件查看器在这里起什么作用?
- 为什么"白屏"和"一直转圈"要分开看?它们分别指向什么?
- 用户说"收不到验证码",你要先排除哪些手机侧的原因?什么情况下才升级?
- "客户端问题"和"游戏问题"的分界线是什么?
- 用户从客户端内置客服进来,你为什么不需要问他 UID?如果他是从别的渠道来的且客户端起不来,怎么办?