Инпут лаг самп
Добрый день. Играю в Apex с самого релиза, очень доволен игрой за исключением одного момента - инпут лаг.
С первого же дня, как игра стала доступной, она с шансом 50\50 форсила вертикальную синхронизацию, которая накладывает свой слой задержки, но потом, к счастью, эта ошибка была исправлена.
Дальше еще лучше. Apex Legends не умеет запускаться в exclusive fullscreen режиме, какую бы вы не сделали настройку. Отключение "оптимизации во весь экран" не приносит никаких результатов, удаление папок в реестре, которое по сути должно полностью отключить оптимизацию во весь экран, тоже не приносит результатов. Так же хочу пояснить, что вертикальная синхронизация выключена, установлены последние драйверы на всём, все настройки стоят на минимуме, разрешение экрана 1280x720, ограничение частоты кадров 60 через команду в Origin. FPS в игре не просаживается ниже 90 никогда.
Я перепробовал, без преувеличения, минимум 50 "фиксов" игнпут лага в этой игре, но ни один из них не помогает.
Чтобы полностью избавиться от оптимизации во весь экран, я даже перешел с Win 10 на Win 7, и сперва мне показалось, что это решило мою проблему, но нет, вскоре инпут лаг вернулся, и играть с комфортом не получается.
CS:GO работает идеально, контроль мыши очень шустрый и отзывчивый, в Fortnite тоже самое, все очень быстро и резко. Apex - нет.
Пожалуйста, помогите мне найти решение моей проблемы, или выпустите наконец уже патч с оптимизацией, из-за инпут лага бой на ближней дистанции просто ужасен, целиться и вести мышью за противником очень трудно.
Ищу ответ уже все 7 месяцев существования игры, но его, видимо, не существует.
AMD FX-4300 Quad Core 3.8 GHz
NVIDIA GeForce GTX 1050Ti
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
сентября 2019 - последнее изменение сентября 2019
А всинх в настройке приложений, драйвера видюхи случаем не включен?
Я например поставил себе в драйвере быструю в синх, а в игре отключил, залочил фпс, имею слабый лаг но без разрывов картинки.
Так же стоит посмтреть и глобальные настройки в драйвере, они имеют повышенный приоритет нежели в самом приложении.
Что за оптимизация во весь экран, которая вам покоя не дает? инпут лаг в апексе только при включенной в.синх.
С двойной-тройной как в кисель попадаешь и целится сложно, без нее нормас но картинка рвется, с быстрой почти незаметный лаг более похожий на сглаживание.
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
В настройках драйвера всинк выключен и во вкладке глобальных настроек и в программных настройках Apex. По сути с выключенным всинком таких проблем не должно быть, я понимаю, но они есть.
Оптимизация во весь экран - фишка Win 10, которая совмещает скорость переключения между окнами в режиме оконный режим\окно без рамки и возможностями настройки в полноэкранном режиме. Только вот эта функция очень плохо работает и не сравнится с настоящим полноэкранным режимом.
Вот например, если запустить Apex в полноэкраном режиме без всинка, бедет разрыв изображения, но меньший инпут лаг из-за отсутствия всинка, но если поставить в оконный режим, то всинк автоматически включится, т.к в оконном режиме он всегда включен и его нельзя выключить ни в одной игре.
Но все таки, как я понимаю, проблема не в оптимизации во весь экран, т.к на Win 7 этой функции вообще нет, но инпут лаг у меня остался. Это проблема самой игры либо моего компа.
В любом случае, спасибо за помощь!
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
Можно еще использовать прогу Intelligent standby list cleaner ISLC, в ней выставить timer resolution = 0.5 ms
Обезопасьте свою учетную запись
Мы убедимся, что это действительно вы, отправив вам код для доверенных устройств.
Не удается подключиться к игре?
Если вы испытываете проблемы при подключении к играм EA, выполните следующие действия.
INPUT LAG поделился ссылкой
у меня эта проблема уже как 4 год наблюдается, менял бп, никаких изменений. Поменял монитор, первый месяц все отлично было, но потом все вернулось. А еще у меня курсор странно двигается, как будто паркинсон :D В шутеры играть не реально
P.S Началось все с того, что ударила молния. Мой пк сгорел, купил новый. И началась эта непонятная х**та
Добрый день. Играю в Apex с самого релиза, очень доволен игрой за исключением одного момента - инпут лаг.
С первого же дня, как игра стала доступной, она с шансом 50\50 форсила вертикальную синхронизацию, которая накладывает свой слой задержки, но потом, к счастью, эта ошибка была исправлена.
Дальше еще лучше. Apex Legends не умеет запускаться в exclusive fullscreen режиме, какую бы вы не сделали настройку. Отключение "оптимизации во весь экран" не приносит никаких результатов, удаление папок в реестре, которое по сути должно полностью отключить оптимизацию во весь экран, тоже не приносит результатов. Так же хочу пояснить, что вертикальная синхронизация выключена, установлены последние драйверы на всём, все настройки стоят на минимуме, разрешение экрана 1280x720, ограничение частоты кадров 60 через команду в Origin. FPS в игре не просаживается ниже 90 никогда.
Я перепробовал, без преувеличения, минимум 50 "фиксов" игнпут лага в этой игре, но ни один из них не помогает.
Чтобы полностью избавиться от оптимизации во весь экран, я даже перешел с Win 10 на Win 7, и сперва мне показалось, что это решило мою проблему, но нет, вскоре инпут лаг вернулся, и играть с комфортом не получается.
CS:GO работает идеально, контроль мыши очень шустрый и отзывчивый, в Fortnite тоже самое, все очень быстро и резко. Apex - нет.
Пожалуйста, помогите мне найти решение моей проблемы, или выпустите наконец уже патч с оптимизацией, из-за инпут лага бой на ближней дистанции просто ужасен, целиться и вести мышью за противником очень трудно.
Ищу ответ уже все 7 месяцев существования игры, но его, видимо, не существует.
AMD FX-4300 Quad Core 3.8 GHz
NVIDIA GeForce GTX 1050Ti
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
сентября 2019 - последнее изменение сентября 2019
А всинх в настройке приложений, драйвера видюхи случаем не включен?
Я например поставил себе в драйвере быструю в синх, а в игре отключил, залочил фпс, имею слабый лаг но без разрывов картинки.
Так же стоит посмтреть и глобальные настройки в драйвере, они имеют повышенный приоритет нежели в самом приложении.
Что за оптимизация во весь экран, которая вам покоя не дает? инпут лаг в апексе только при включенной в.синх.
С двойной-тройной как в кисель попадаешь и целится сложно, без нее нормас но картинка рвется, с быстрой почти незаметный лаг более похожий на сглаживание.
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
В настройках драйвера всинк выключен и во вкладке глобальных настроек и в программных настройках Apex. По сути с выключенным всинком таких проблем не должно быть, я понимаю, но они есть.
Оптимизация во весь экран - фишка Win 10, которая совмещает скорость переключения между окнами в режиме оконный режим\окно без рамки и возможностями настройки в полноэкранном режиме. Только вот эта функция очень плохо работает и не сравнится с настоящим полноэкранным режимом.
Вот например, если запустить Apex в полноэкраном режиме без всинка, бедет разрыв изображения, но меньший инпут лаг из-за отсутствия всинка, но если поставить в оконный режим, то всинк автоматически включится, т.к в оконном режиме он всегда включен и его нельзя выключить ни в одной игре.
Но все таки, как я понимаю, проблема не в оптимизации во весь экран, т.к на Win 7 этой функции вообще нет, но инпут лаг у меня остался. Это проблема самой игры либо моего компа.
В любом случае, спасибо за помощь!
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
- Отметить как новое
- Закладка
- Подписаться
- Электронная почта другу
Можно еще использовать прогу Intelligent standby list cleaner ISLC, в ней выставить timer resolution = 0.5 ms
Обезопасьте свою учетную запись
Мы убедимся, что это действительно вы, отправив вам код для доверенных устройств.
Не удается подключиться к игре?
Если вы испытываете проблемы при подключении к играм EA, выполните следующие действия.
Привет всем. Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.
Если вы разрабатываете собственную игру, или вообще занимаетесь рендером, и хотите уменьшить задержки ввода, то крайне советую заглянуть под кат.
Итак, Input lag в любой игре складывается из:
- Задержки на контроллере
- Сетевого лага (если это онлайн игра)
- Лага рендеринга.
CPU + GPU
Современные GPU — устройства максимально асинхронные. CPU отдает команды видеодрайверу, и идет заниматься своими делами. Драйвер накапливает команды в пачки, и пачками отправляет на видеокарту. Видеокарта рисует, а CPU в это время занимается своими делами. Максимальный FPS, который вы можете получить в этой системе ограничен одним из условий:
1. CPU не успевает отдавать команды видеокарте, потому что видеокарта очень быстро рисует. И нафига вы покупали такую мощную видеокарту?
2. Видеокарта не успевает рисовать то, что дает ей CPU. Теперь CPU халявит…
Для того, чтобы посмотреть, как красиво в паре работает CPU и GPU — есть различные профайлеры. Мы воспользуемся GPUView, который идет в составе Windows Performance Toolkit.
Лог от GPUView может выглядеть как-то так:
Вертикальные синие линии — это VSync. Наваленные горы кубиков — это горы пакетов, которые отправятся на видеокарту, когда та освободится. Штрихованный кубик — это пакет, содержащий переключение буферов. Иными словами — конец кадра. Любой кубик можно выбрать, и видеть, как он постепенно опускается в стопке, и отправляется на видеокарту. Видите на скриншоте кубик с желтой обводкой? Он обрабатывался аж на протяжении 3-х vsync-ов. А целый кадр занимает около 4-х VSync-ов (судя по расстоянию между разными штрихованными кубиками). Между двумя горами пакетов от разных кадров есть маленький зазор. Это то время, пока GPU отдыхал. Этот зазор маленький, и оптимизация на стороне CPU не даст большого выйгрыша.
Но бывают зазоры большие:
Это пример рендера из World of Warcraft. Расстояния между пакетами в очереди просто огромные. Более мощная видеокарта не даст прироста ни одного FPS. Зато если оптимизировать рендер на стороне CPU, то можно получить более чем двукратный прирост FPS на данном GPU.
Чуть более подробно можно почитать тут, а мы пойдем дальше.
Так где же лаг?
Так уж сложилось, что разрыв в производительности между Hi-End и Low-End видеокартами поистине огромен. Поэтому у вас обязательно будут возникать обе ситуации. Но самая грустная ситуация — это когда GPU не справляется. Выглядеть это начинает вот так:
Обратите внимание, сколько времени заняла обработка одного пакета. Кадр занимает 4 VSync-а, а обработка пакета занимает в 4 раза дольше! DirectX (OpenGL ведет себя так же) накапливает данных аж на 3 кадра. Но ведь когда мы кладем в очередь свежий кадр — все предыдущие кадры для нас уже не актуальны, а видеокарта по прежнему будет тратить время на отрисовку. Поэтому наше действие появится на экране спустя аж 3 кадра. Давайте посмотрим, что мы можем сделать.
1. Честное решение. IDXGIDevice1::SetMaximumFrameLatency(1)
Я честно, не представляю зачем копить данных на 3 кадра в буфере. Но MS видимо поняла ошибку, и начиная с DX10.1 у нас появилась возможность задать это количество кадров через специальный метод IDXGIDevice1::SetMaximumFrameLatency. Давайте посмотрим, как нам это поможет:
Ну что же. Стало значительно лучше. Но по прежнему не идеально, т.к. все равно ждем 2 кадра. Еще один недостаток решения — то что оно работает только для DirectX.
2. Трюк с ID3D11Query
Идея заключается в том, что в конце кадра мы устанавливаем D3D11_QUERY_EVENT. В начале следующего кадра — ждем, постоянно проверяя событие, и если оно прошло, то только тогда начинаем отдавать команды на отрисовку, и с наисвежайшими Input данными.
Картина практически идеальная, не находите? Ожидание я реализовал вот так:
Установка эвента тривиальна:
Ну и в сам рендер добавляем вначале ожидание. Затем перед самой отрисовкой собираем свежие Input данные, а перед самым Present-ом устанавливаем евент:
Недостаток костыля метода — работает только с DirectX. Но можно дождаться синхронизации другим оригинальным способом.
3. Воркэраунд через текстуру
Вот что мы делаем. У нас есть механизмы прочитать данные из видеоресурсов. Если мы заставим видеокарту что-то нарисовать, а потом попытаемся забрать, то произойдет автоматическая синхронизация между GPU-CPU. Мы не сможем забрать данные раньше, чем они будут нарисованы. Поэтому вместо установки евента я предлагаю генерить мипы на видеокарте для текстуры 2*2, а вместо ожидания евента — забирать данные из этой текстуры в системную память. В результате подход выглядит так:
Вот так мы ожидаем евент:
а вот так его устанавливаем:
В остальном подход полностью аналогичен предыдущему. Преимущество: работает не только на DirectX но и на OpenGL. Недостаток — маааленький оверхед на генерацию текстуры и передачу данных назад + потенциально потраченное время на «пробуждение» потока шедулером операционной системы.
Про попробовать
Конечно я тут растекался по дереву… но насколько проблема серьезная? Как пощупать это? Я написал специальную демонстрационную программу (требует DirectX11).
Программа представляет собой такое окно:
Тут рисуется 40*40*40=64000 (кстати каждый кубик — отдельный дравколл). GPU workload трекбар дает нагрузку на GPU (с помощью бесполезного цикла в вершинном шейдере). Просто опускаете с помощью этого трекбара фпс до низкого уровня, скажем 10-20, а потом пробуете правой кнопкой мыши крутить кубики, и переключать методы уменьшения Input лага с помощью радиобаттонов.
Вы только оцените какая огромная разница в скорости отклика. C Query Event комфортно крутить кубик даже при 20 фпс.
Читайте также: