ゲームラグ白書 › 一部のユーザーだけに起きる問題
キャッシュ・アセットファイルへの同時アクセスの競合 Shared cache / asset file lock conflicts
原因ID pt-asset-lock · 主担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
2つのクライアントが同じキャッシュフォルダーに同時に書き込んだりファイルをロックしたりすると、片方がNPCのモデル・テクスチャを読み込めなくなります。
なぜ 2つのクライアントが同じインストールフォルダーのキャッシュ・アップデートファイルに同時に書き込む → すると ファイルロックの失敗や、書きかけのファイルを読んでロードに失敗 → 画面では ネームプレートはあるのにキャラクターモデルがない、または透明なNPC
- 症状
- 表示されない・ゴースト
- 要因
- ストール
- 誰に起きるか
- 同じPCの片方のクライアントだけ
- いつ
- 接続直後・メンテ明け, 移動中・マップ切り替え時
- 担当
- 主担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- クライアントごとのキャッシュフォルダー、ファイルロック失敗時の再試行、ロード失敗時はデフォルトのモデルだけでも表示。
- グラフでは
- 一部だけ高い · クライアントごとのアセットのロード失敗数
- 確認箇所
- ユーザーのPCでProcess Monitorを使ってゲームのインストール・キャッシュフォルダーのパスだけに絞り、2つのゲームプロセスのファイルのオープン・書き込みの結果を確認。クライアントログがあれば、アセットのロード失敗とファイルオープンのエラーコード(ERROR_SHARING_VIOLATION)を探す
- 該当する場合
- 表示されないモデルのファイルオープンが共有違反・ロック失敗で終わっており、同じ時刻にほかのクライアントがそのファイルに書き込んでいた。1つだけ起動するか、インストール・キャッシュフォルダーを分けると消える
- 該当しない場合
- クライアントを1つだけ起動しても同じモデルが表示されないなら、ファイルの破損かクライアントのバージョン・データの不一致。ファイルは正常に開けたのに描画されないなら、メモリ・VRAM不足
- 確認手段
- ユーザー側の環境で確認
出典
- Creating and Opening Files Microsoft
共有モードなしで開いたファイルはほかのプロセスが開けず、ERROR_SHARING_VIOLATIONになる - Process Monitor Microsoft
ファイルシステム・レジストリ・プロセスの動作をリアルタイムで記録し、パスなどあらゆる項目で絞り込める
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(表示されない・ゴースト)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る