Анатомия игровых лагов › Поиск по симптомам
Откидывание назад: причины (14) и ответственные
Иначе говорят: тянет назад, rubber banding, роллбэк позиции
Открыть в каталоге симптомов с иллюстрациями →
Персонаж бежит вперёд, и его утягивает обратно на только что пройденное место.
На бегу персонажа резко отбрасывает на 1–5 m назад. Бывает, что один и тот же участок приходится проходить по два-три раза.
Картинка на экране игрока (предсказание) разошлась с решением сервера. Ввод не дошёл до сервера (потери), серверная проверка перемещения его отклонила, или клиент и сервер по-разному считают движение.
Причины этого симптома
L1 Процесс игрового клиента
L3 Домашняя сеть
- Помехи и слабый сигнал Wi-Fi: При слабом сигнале или помехах пакеты на беспроводном участке приходится отправлять повторно по нескольку раз, и они приходят неравномерно. (Внешние стороны · Внешние стороны)
L4 Интернет-маршрут
- Перегрузка пиринга в часы пик: Примерно с 21:00 до 23:00 резко растёт видеотрафик, и стыки между провайдерами (пиринг) легко перегружаются. (Команда инфраструктуры · Сетевая инфраструктура)
- Неисправность одного из путей ECMP: Провайдеры и ЦОД держат несколько путей к одной цели и для каждого соединения выбирают один из них. Если неисправен только один путь, лаги постоянно бывают только у тех, кому достался этот путь. (Команда инфраструктуры · Сетевая инфраструктура)
L5 Сетевое оборудование ЦОД
- Неисправный кабель и ошибки порта: Если оптический модуль или кабель неисправен, определённая доля пакетов на этом пути повреждается. (Команда инфраструктуры · Сетевая инфраструктура)
L6 Сетевая карта сервера
- Все прерывания NIC на одном ядре: Если NIC отправляет прерывания о приходе пакетов только на одно ядро CPU, это ядро становится узким местом. (Команда инфраструктуры · Серверная инфраструктура)
L13 Архитектура и эксплуатация серверов
- Переход между зонами (передача на другой сервер): При входе в другую локацию или данж данные персонажа передаются на другой сервер, и на этом этапе возникают задержки и сбои. (Команда разработки · Разработка сервера)
- Ошибки матчмейкинга и выбора региона: Если игрока отправили на сервер в дальнем регионе вместо ближнего, у него одного пинг всегда высокий, даже если с подключением всё в порядке. (Команда разработки · Разработка сервера)
Архитектура синхронизации
- Слишком строгая серверная проверка: Если сервер слишком строго проверяет скорость перемещения, кулдауны и дальность, он отклоняет даже нормальный ввод, пришедший пачкой из-за джиттера. (Команда разработки · Разработка сервера)
- Отказ сервера после опережающего фидбека: Если сервер потом не засчитывает удар или умение, которые экран игрока уже показал, результат, который игрок точно видел, отменяется. (Команда разработки · Разработка клиента)
- Расхождение расчёта пути при синхронизации команд: Если стороны обмениваются только командой «иди сюда», а путь каждая сторона рассчитывает сама, то даже при небольшом расхождении персонаж или монстр идёт другим путём, а потом его утягивает на правильное место. (Команда разработки · Разработка сервера)
Проблемы только у части игроков
Первопричины повторных передач TCP
- Переполнение очереди в узком месте (потери от перегрузки): Когда заполняется очередь в самом узком месте (в роутере, на стыке провайдеров, на линии связи ЦОД), новые пакеты выбрасываются. (Команда инфраструктуры · Сетевая инфраструктура)
- Задержка и потеря ACK (забитая отдача): Данные дошли нормально, но если ACK «получено» задерживается или теряется в забитой очереди отдачи, отправитель считает данные потерянными и передаёт их повторно. (Внешние стороны · Внешние стороны)
Каталог симптомов с иллюстрациями