Анатомия игровых лагов › Поиск по симптомам
Невидимки / фантомы: причины (20) и ответственные
Иначе говорят: не видно NPC, невидимый персонаж, убитый монстр продолжает стоять
Открыть в каталоге симптомов с иллюстрациями →
NPC, монстра или игрока, которые должны быть рядом, нет только на вашем экране, или уже исчезнувший объект остался только у вас.
Другие разговаривают с NPC, а вы видите пустое место. Висит только табличка с именем без модели персонажа, или стоит монстр, который не реагирует на удары.
Со скоростью это обычно не связано: выпал один пакет или не удалась отрисовка. Проверьте разницу каналов или фаз, потерянные уведомления о появлении и исчезновении объектов, пакеты, отброшенные во время загрузки, ошибки загрузки ассетов. Решающая подсказка: появляется ли объект, если уйти из зоны видимости и вернуться.
Причины этого симптома
L1 Процесс игрового клиента
- Стриминг ассетов отстаёт из-за медленного накопителя: На медленном накопителе вроде HDD текстуры и модели открытого мира читаются медленнее, чем перемещается игрок. Объекты появляются с опозданием, или игра дёргается, ожидая окончания чтения. (Команда разработки · Разработка клиента)
L8 Сокеты и протоколы
- Keepalive по умолчанию: 2 часа: Если другая сторона пропадает без сигнала о закрытии, TCP замечает это очень нескоро. Keepalive (механизм TCP, который проверяет, живо ли неактивное соединение) по умолчанию выключен, а если его включить, проверка начинается только после 2 часов простоя. (Команда разработки · Разработка сервера)
- Медленный старт после простоя: Если соединение какое-то время простаивало, TCP снова уменьшает окно перегрузки (объём, который можно отправить за раз), и внезапно понадобившийся большой объём данных уходит в несколько заходов. (Команда инфраструктуры · Серверная инфраструктура)
Проблемы только у части игроков
- Разные каналы, инстансы и фазы: Если два персонажа находятся в разных каналах или инстансах или в разных «фазах», где набор видимых NPC зависит от прогресса квеста, они видят разные миры. (Команда разработки · Разработка сервера)
- Отбрасывание уведомлений о появлении во время загрузки: Сразу после входа в зону сервер отправляет уведомления о появлении NPC вокруг, а клиент ещё загружает карту и отбрасывает эти уведомления. (Команда разработки · Разработка клиента)
- Сбой порядка регистрации в зоне видимости: Если момент регистрации персонажа в сетке видимости совпадает с моментом, когда NPC переходит в другую ячейку, уведомление о появлении этого NPC может потеряться. (Команда разработки · Разработка сервера)
- Потеря опорного снапшота: Если сервер отправляет «только то, что изменилось с прошлого раза», то при потере первой полной посылки (опорного снапшота) последующие изменения применить невозможно. (Команда разработки · Разработка сервера)
- Потеря уведомления об исчезновении (фантомные объекты): И наоборот, если пропущено уведомление «исчез», уже убитые или ушедшие NPC и игроки остаются только на экране этого игрока. (Команда разработки · Разработка сервера)
- Потеря данных о появлении из-за наплыва сразу после входа: В момент входа в зону сервер разом отправляет данные о появлении десятков и сотен окружающих объектов. Если отправлять их по ненадёжному каналу доставки (unreliable) или если буфер приёма переполнится, пока клиент занят загрузкой и не читает сокет, часть данных пропадает и повторно не приходит. (Команда разработки · Разработка сервера)
- Путаница из-за повторного использования ID объектов: Если при возрождении убитого NPC сервер снова использует тот же ID объекта, клиент, пропустивший за это время уведомление об исчезновении, принимает новый NPC за старый. (Команда разработки · Разработка сервера)
- Конфликт фиксированного UDP-порта: Если клиент рассчитан на конкретный локальный порт, второй клиент на том же ПК не может занять порт или делит пакеты с первым. (Команда разработки · Разработка клиента)
- Ошибка разделения сессий по IP или устройству: Если сервер или промежуточный сервер различает соединения по IP или ID устройства, два клиента на одном ПК (с одним публичным IP) считаются одним игроком. (Команда разработки · Разработка сервера)
- Ограничение на несколько клиентов: Если модуль защиты или политика сервера ограничивает число клиентов на одном ПК, второй клиент не запускается или не подключается, либо у первого случается дисконнект. Некоторые игры блокируют только функции дополнительного клиента. (Команда разработки · Разработка клиента)
- Ограничение обработки в фоновом окне: Для клиента в фоновом окне игра, движок и ОС снижают частоту кадров и объём обработки. Полученные пакеты не успевают обрабатываться, копятся и переполняют буфер. (Команда разработки · Разработка клиента)
- Конфликт одновременного доступа к файлам кэша и ассетов: Если два клиента одновременно пишут в одну папку кэша или блокируют файлы, один из них не может загрузить модели и текстуры NPC. (Команда разработки · Разработка клиента)
- Сбой стриминга из-за нехватки памяти или VRAM: Когда два клиента делят видеопамять, для новых моделей и текстур не остаётся места, и часть объектов не рисуется. (Команда разработки · Разработка клиента)
- Разные настройки отображения: Если у двух клиентов различаются настройки вроде лимита отображаемых персонажей, скрытия табличек с именами и моделей NPC или режима для слабых ПК, они показывают разное. (Команда разработки · Разработка клиента)
- Несовпадение версии клиента или данных: Если второй клиент установлен отдельно или не до конца пропатчен, он не знает новых ID NPC от сервера и молча их игнорирует. (Команда разработки · Разработка клиента)
- Бюджет отправки и приоритеты для каждого соединения: Если сервер ограничивает объём отправки для каждого соединения и отправляет сначала ближние объекты, соединение с низким лимитом получает дальних NPC поздно или не получает вовсе. (Команда разработки · Разработка сервера)
- Отложенный показ объектов из-за ошибки оценки серверного времени: Если клиент неверно оценивает серверное время, только что пришедшие данные объекта он откладывает как «ещё из будущего» или отбрасывает как «слишком старые». (Команда разработки · Разработка клиента)
Каталог симптомов с иллюстрациями