Если момент регистрации персонажа в сетке видимости совпадает с моментом, когда NPC переходит в другую ячейку, уведомление о появлении этого NPC может потеряться.
Почему Обработка входа, смены канала или телепорта совпадает по времени с перемещением NPC → Следствие Этот NPC выпадает из расчёта «объектов, которые стали видны» → На экране Не видно только нескольких определённых NPC, или остаётся NPC, который уже ушёл
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Обновлять зону видимости в одном потоке и в одном порядке, периодически заново сверять весь «список видимых».
На графике
Случайные всплески · число расхождений между списком видимых на сервере и списком объектов на клиенте
Где смотреть
Писать на сервере с номером тика регистрацию в сетке видимости, переходы объектов между ячейками и отправку уведомлений о появлении и исчезновении, периодически сравнивать «список видимых» на сервере со списком на клиенте
Подтверждает
Пропавший NPC сменил ячейку в том же тике, когда обрабатывался вход или телепорт персонажа, и записи об отправке уведомления о появлении этого NPC нет
Опровергает
Если уведомление о появлении отправлено, но клиент его не получил или отбросил, проблема в доставке (потеря данных о появлении из-за наплыва сразу после входа, отбрасывание уведомлений о появлении во время загрузки). Если всегда пропадают одни и те же NPC, причина в фазах или разных настройках отображения
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Источники
Replication Graph in Unreal EngineEpic Games В MMORPG и подобных играх мир делится сеткой, у каждой ячейки свой список акторов, и данные отправляются по ячейке, где находится клиент
Actor Relevancy in Unreal EngineEpic Games Релевантность определяется для каждого соединения, и актор, утративший релевантность, удаляется на клиенте