Когда игрок переключается на другое окно или сворачивает игру, и сама игра, и Windows ради экономии энергии замедляют её работу. По возвращении накопившиеся пакеты приходят разом, или соединение уже оборвано.
Почему Переключение на другое окно через Alt+Tab или сворачивание игры → Следствие Пока игру не видно, она сильно снижает FPS или останавливается, а Windows тоже понижает приоритет невидимых программ → На экране В момент возвращения перемотка, а если игра была свёрнута долго, дисконнект
Основной ответственный Команда разработки · Разработка клиента
Команда разработки: задачи
Продолжать приём пакетов и хартбиты в отдельном потоке, даже когда окно не видно, проверить настройку движка «Run In Background», при возвращении разом переходить к актуальному состоянию.
Цифры для ориентира
Если в невидимом окне FPS снижается до 5–10, один кадр длится 100–200 ms. Игра, которая обрабатывает пакеты раз в кадр, читает их с таким же опозданием.
На графике
Провал, затем пачка · интервал между кадрами (до и после переключения окна), число обработанных пакетов
Где смотреть
С запущенным PresentMon переключиться через Alt+Tab или свернуть игру и посмотреть интервал между кадрами, пока окно не видно. Писать в лог игры моменты смены фокуса окна и сопоставлять их с причинами обрывов
Подтверждает
Пока окно не видно, интервал между кадрами растёт до 100 ms и больше или запись прерывается, а в момент возвращения накопившиеся пакеты обрабатываются разом, и получается перемотка. Если игра свёрнута долго, соединение рвётся по таймауту хартбита
Опровергает
Если то же самое и с открытым окном, это «Фоновые процессы занимают CPU» или проблема в сети
Чем проверить
Проверка на стороне игрока
Подробнее
Windows 11 не гарантирует таймер 1 ms программам, чьё окно свёрнуто или полностью перекрыто и не издаёт звука. На ноутбуке, работающем от батареи, такие программы переводятся на самую экономичную частоту, а на CPU с ядрами разных типов могут работать на медленных энергоэффективных ядрах. Если из двух клиентов на одном ПК странно ведёт себя только фоновый, посмотрите также причину «Ограничение обработки в фоновом окне».
Источники
Quality of ServiceMicrosoft Программы, окна которых не видны и не слышны, получают Low QoS: при работе от батареи они выполняются на самой экономичной частоте CPU и на энергоэффективных ядрах
timeBeginPeriod function (timeapi.h)Microsoft Windows 11 не гарантирует процессам со свёрнутыми или перекрытыми окнами разрешение таймера выше стандартного
Application.runInBackgroundUnity В Unity по умолчанию false, поэтому, когда окно уходит в фон, игровой цикл останавливается