한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L2 客户端操作系统与设备

游戏内覆盖层干扰 Overlays and screen hooks

原因 ID co-overlay · 主责 外部·外部 · 配合 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

聊天软件、启动器、录屏软件、FPS 显示工具为了在游戏画面上叠加绘制自己的 UI,会介入游戏的渲染过程(hook)。每帧的工作量随之增加,偶尔还会与游戏冲突,导致顿一下或游戏被强制关闭。

起因 聊天软件、游戏启动器、显卡工具、录屏软件的覆盖层处于开启状态 → 结果 每次把帧送往屏幕时,覆盖层都会介入并叠加绘制自己的 UI → 画面表现 帧略微变慢,弹出通知的瞬间顿一下,或出现画面异常、被强制关闭(玩家看来像掉线)

症状
一卡一卡, 卡住, 掉线
因素
停顿
谁会遇到
只有我
何时出现
一直, 偶尔随机
负责方
主责 外部·外部 · 配合 研发团队·客户端开发
研发团队要做的事
在崩溃报告和卡顿日志中一并收集正在运行的覆盖层列表。
外部要做的事
收到反馈时,引导玩家关闭所有覆盖层后再试。
监控图上
仅部分偏高 · 帧耗时、崩溃次数(开启覆盖层的玩家)
查看位置
关闭所有覆盖层,对比同一场景的 PresentMon 帧耗时;有崩溃时,查看事件查看器事件 ID 1000 中的出错模块名称(Faulting module name)
确认依据
关闭覆盖层后顿一下、画面异常消失,或崩溃的出错模块是覆盖层程序的 DLL
排除依据
关闭所有覆盖层后仍一样,看显卡驱动或“客户端崩溃”
确认手段
需在玩家侧环境确认
深入了解
只有特定玩家一卡一卡或游戏闪退,又无法用配置解释时,先怀疑覆盖层与游戏安全模块的冲突。

出处

  1. Steam Overlay (Steamworks Documentation) Valve
    Steam 覆盖层会自动 hook 进从 Steam 启动的游戏,这种方式有时会暴露游戏使用渲染 API 时的内存错误,进而导致崩溃
  2. PresentMon Capture Application (README-CaptureApplication.md) Intel
    用 FrameTime(帧与帧之间的 CPU 时间)录制每帧耗时
  3. The application or service crashing behavior troubleshooting guidance Microsoft
    “应用程序”日志中的事件 ID 1000 包含出错模块名称(Faulting module name),有时因其他模块损坏,出错模块会显示为 Windows 模块

相关原因

同一层:L2 客户端操作系统与设备

其他层中同样导致“一卡一卡”的原因

查看含图示和实验的原卡片