游戏卡顿白皮书 › 只有部分人遇到的问题
缓存/资源文件并发访问冲突 Shared cache / asset file lock conflicts
原因 ID pt-asset-lock · 主责 研发团队·客户端开发
在含图示和实验的完整版中打开此卡片 →
两个客户端同时写同一个缓存文件夹或锁住文件时,其中一个会加载不了 NPC 模型、纹理。
起因 两个客户端同时写同一安装目录下的缓存、补丁文件 → 结果 文件加锁失败,或读到写了一半的文件,导致加载失败 → 画面表现 有名字牌却没有角色模型,或 NPC 是透明的
- 症状
- 隐身/幽灵实体
- 因素
- 停顿
- 谁会遇到
- 双开时只有一个客户端
- 何时出现
- 刚登录/维护结束后, 移动中/切换地图时
- 负责方
- 主责 研发团队·客户端开发
- 研发团队要做的事
- 每个客户端使用单独的缓存文件夹,文件加锁失败时重试,加载失败时至少显示默认模型。
- 监控图上
- 仅部分偏高 · 各客户端资源加载失败次数
- 查看位置
- 在玩家电脑上用 Process Monitor 只过滤游戏安装、缓存目录路径,查看两个游戏进程打开、写入文件的结果。有客户端日志时,查找资源加载失败和文件打开错误码(ERROR_SHARING_VIOLATION)
- 确认依据
- 看不到的模型,打开文件时以共享冲突、加锁失败告终,同一时刻另一个客户端正在写这个文件。只开一个或把安装、缓存目录分开就消失
- 排除依据
- 只开一个客户端也看不到同一个模型,是文件损坏或“客户端版本/数据不一致”。文件正常打开了却画不出来,看“内存/显存不足导致流式加载失败”
- 确认手段
- 需在玩家侧环境确认
出处
- Creating and Opening Files Microsoft
不带共享模式打开的文件,其他进程无法打开,会报 ERROR_SHARING_VIOLATION - Process Monitor Microsoft
实时记录文件系统、注册表、进程活动,可按路径等任意字段过滤
相关原因
同一层:只有部分人遇到的问题
其他层中同样导致“隐身/幽灵实体”的原因
查看含图示和实验的原卡片