ゲームラグ白書 › L9 サーバーのゲームプロセス
密集エリア進入時のスポーン集中 Spawn burst when entering a crowd
原因ID sp-spawn-burst · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
人でいっぱいの街にテレポートすると、サーバーは新たに見えるようになった数百人の外見・装備・状態を一度に送らなければなりません。
なぜ テレポート・ログイン・チャンネル移動で、混雑した場所に突然現れる → すると 数百人分の全情報を一度に作って送り、自分のPCも一度に読み込む → 画面では 到着直後に一瞬止まる、キャラクターが遅れて1体ずつ現れ、入力の反応が遅い
- 症状
- フリーズ, 入力遅延, 早送り
- 要因
- ストール, 遅延
- 誰に起きるか
- 自分だけ, 特定の場所・チャンネル
- いつ
- 移動中・マップ切り替え時, 接続直後・メンテ明け
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- サーバー:近い順に複数のティックに分けて送信、外見情報のキャッシュ。クライアント:ロード画面の間に先に受信、受け取ったキャラクターを複数フレームに分けて生成。
- 数値の目安
- 1人分の外見・装備・バフの情報が300バイトなら、500人で約150KBです。普段の1ティックの送信量(数KB)の数十倍が一瞬に集中します。
- グラフでは
- 接続直後・メンテ明けに急増 · 接続ごとの送信バイト数、クライアントのフレームタイム
- 確認箇所
- 混雑した場所に到着した直後の数秒間に、その接続へ送ったバイト数・パケット数(サーバーログ)と、クライアントのフレームタイム(ネットグラフ・クライアントログ)
- 該当する場合
- 到着直後にその接続の送信量が普段の1ティックの数十倍に跳ね上がってから落ち着き、同じ瞬間にクライアントのフレームタイムも跳ねる
- 該当しない場合
- 人の少ない場所へ移動しても同じように止まるなら、ゾーン移動(サーバー間の引き継ぎ)かクライアントのロードの側
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Detailed Actor Replication Flow in Unreal Engine Epic Games
アクターチャネルを最初に開くときに初期位置・回転などの情報も一緒に送り、接続が飽和したら残りのアクターは次のティックに回す - Actor Priority in Unreal Engine Epic Games
距離と視線の向きで優先度を付け、近くて見えるアクターから送る
あわせて読みたい原因
同じ層:L9 サーバーのゲームプロセス
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る