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

Анатомия игровых лагов › L9 Процесс игрового сервера

Лавина спавна при входе в людное место Spawn burst when entering a crowd

ID причины sp-spawn-burst · Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента

Открыть карточку в основной версии с иллюстрациями и экспериментами →

Когда игрок телепортируется в город, полный людей, сервер должен разом отправить внешность, экипировку и состояние сотен персонажей, которые стали видны.

Почему Игрок внезапно оказывается в людном месте после телепорта, входа в игру или смены канала → Следствие Полные данные по сотням персонажей собираются и отправляются за раз, и ПК игрока тоже загружает их разом → На экране Сразу после прибытия короткий фриз, персонажи появляются с опозданием по одному, ввод запаздывает

Симптомы
Фриз, Задержка ввода, Перемотка
Факторы
Остановка, Задержка
У кого
Только у меня, Одна локация или канал
Когда
В движении и при смене локации, Сразу после входа или техработ
Ответственные
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента
Команда разработки: задачи
Сервер: отправлять в порядке близости, распределяя по нескольким тикам, кэшировать данные о внешности. Клиент: получать данные заранее, пока идёт экран загрузки, создавать полученных персонажей, распределяя по нескольким кадрам.
Цифры для ориентира
Если внешность, экипировка и баффы одного персонажа занимают 300 байт, то на 500 персонажей это около 150 KB. В один момент наваливается в десятки раз больше, чем обычно отправляется за тик (единицы KB).
На графике
Всплеск сразу после входа или техработ · исходящие байты по соединениям, время кадра на клиенте
Где смотреть
Смотреть число байтов и пакетов, отправленных по соединению за первые секунды после прибытия в людное место (лог сервера), и время кадра на клиенте (нетграф, лог клиента)
Подтверждает
Сразу после прибытия исходящий трафик по соединению взлетает в десятки раз выше обычного тика и затем спадает, и в тот же момент скачет время кадра на клиенте
Опровергает
Если фриз такой же и при переходе в безлюдное место, дело в переходе между зонами (передаче на другой сервер) или в загрузке на клиенте
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. Detailed Actor Replication Flow in Unreal Engine Epic Games
    При первом открытии actor channel вместе с ним отправляются начальные данные вроде позиции и поворота, а если соединение забито, остальные акторы откладываются до следующего тика
  2. Actor Priority in Unreal Engine Epic Games
    Приоритет назначается по расстоянию и направлению взгляда, и сначала отправляются близкие и видимые акторы

Смотрите также

Тот же слой: L9 Процесс игрового сервера

Причины с тем же симптомом (Фриз) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами