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

Анатомия игровых лагов › Проблемы только у части игроков

Отбрасывание уведомлений о появлении во время загрузки Spawn messages dropped before the client is ready

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

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

Сразу после входа в зону сервер отправляет уведомления о появлении NPC вокруг, а клиент ещё загружает карту и отбрасывает эти уведомления.

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

Симптомы
Невидимки / фантомы
Факторы
Потери
У кого
Один из клиентов на одном ПК, Только у меня
Когда
Сразу после входа или техработ, В движении и при смене локации
Ответственные
Основной ответственный Команда разработки · Разработка клиента · Совместно Команда разработки · Разработка сервера
Команда разработки: задачи
Клиент: по окончании загрузки отправлять сигнал «готов» или хранить пакеты, пришедшие во время загрузки, и обрабатывать их позже. Сервер: отправлять данные об окружении только после сигнала «готов».
Цифры для ориентира
Если на одном ПК два клиента загружаются одновременно или загружающийся клиент находится в фоновом окне, они делят CPU и диск, обработка ограничивается, и загрузка этого клиента может стать в разы дольше. Тот же баг проявляется и тогда, когда сервер начинает быстрее обрабатывать вход.
На графике
Высоко только у некоторых · время загрузки по клиентам, число сообщений, отброшенных во время загрузки
Где смотреть
Сравнить число и типы сообщений, которые клиент получил и отбросил во время загрузки, и время окончания загрузки со временем отправки уведомлений о появлении на сервере. Легко воспроизвести, если на одном ПК загружать два клиента одновременно или держать загружающийся клиент в фоновом окне
Подтверждает
Сервер отправил уведомления о появлении невидимых NPC, они пришли до окончания загрузки, и в это время выросло число отброшенных сообщений. Бывает только у клиента с более долгой загрузкой
Опровергает
Если уведомления пришли после окончания загрузки, а NPC всё равно не видно, причина в потере опорного снапшота или путанице из-за повторного использования ID объектов. Если сервер вообще не отправлял уведомление об этом NPC, причина в сбое порядка регистрации в зоне видимости или в разных каналах и фазах
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. NetworkConfig class (Netcode for GameObjects 2.5) Unity
    SpawnTimeout: сообщения для ещё не созданного объекта откладываются, а если объект не создан за отведённое время, отбрасываются
  2. Actor Relevancy in Unreal Engine Epic Games
    Актор, утративший релевантность, удаляется на клиенте, а когда снова становится релевантным, реплицируется заново

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

Тот же слой: Проблемы только у части игроков

Причины с тем же симптомом (Невидимки / фантомы) на других слоях

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