Как компьютер собирает каждый кадр игры

Любая игра работает как бесконечный цикл. Сначала программа опрашивает клавиатуру и мышь, чтобы узнать действия игрока. Затем центральный процессор рассчитывает изменения в игровом мире. Он определяет координаты каждого персонажа, проверяет столкновения пуль со стенами, вычисляет искусственный интеллект врагов и запускает звуки. Вся математика и логика событий ложатся именно на центральный процессор.

Когда расчёты завершены, процессор передаёт указания видеокарте. Этот этап называют командами отрисовки. Видеокарта забирает трёхмерные модели или двухмерные спрайты, накладывает текстуры, рассчитывает освещение, тени и красит миллионы пикселей на экране. Готовое изображение отправляется на монитор. Чтобы картинка двигалась плавно, весь этот цикл должен повторяться от 30 до 60 раз за одну секунду, а в идеале — 120 раз и чаще.

Задержка возникает в момент, когда один из участников цепочки опаздывает. Если процессор потратил на просчёт логики слишком много времени, видеокарта простаивает без работы. Если видеочип перегружен эффектами дыма и сложным разрешением экрана, он задерживает вывод кадра, и мы видим рывки картинки.

Что такое FPS и время кадра

Частоту кадров в секунду обозначают аббревиатурой FPS. Чем выше это число, тем плавнее и естественнее воспринимается движение на экране. При 60 FPS каждый кадр готовится ровно за 16,6 миллисекунды. Если этот интервал выдерживается стабильно, анимация выглядит плавной.

Однако средний FPS часто скрывает реальные проблемы. Игра способна показывать значение 60, но при этом дергаться. Такое происходит из-за нестабильного времени кадра, которое специалисты называют фреймтаймом. Допустим, пятьдесят девять кадров игра вывела очень быстро, а на шестидесятом споткнулась на целую треть секунды из-за подгрузки локации. Глаз моментально заметит такой микрофриз, хотя счётчик кадров покажет приемлемый результат.

Эксперимент с простой двухмерной игрой

Разницу в производительности хорошо видно на практическом опыте. Для проверки берут простую 2D-игру, где на экран постепенно добавляются тысячи движущихся объектов, например летающих мячей или бегающих монстров. Тест запускают на двух разных машинах: слабом офисном ноутбуке с простым двухъядерным чипом и производительном настольном компьютере.

В начале теста при пятидесяти объектах на экране оба компьютера удерживают 60 кадров в секунду. Нагрузка на процессоры держится на минимальных значениях около десяти процентов. Но при росте числа объектов до десяти тысяч картина резко меняется.

  • На офисном ноутбуке счётчик кадров падает до 12-15 FPS, а загрузка процессора подскакивает до предельных ста процентов. Встроенное графическое ядро при этом простаивает, потому что задержку вызывают именно геометрические проверки столкновения тысяч шариков друг с другом.
  • На настольном компьютере частота кадров снижается лишь до 52 FPS. Мощный процессор с высокой тактовой частотой и быстрой кэш-памятью легко справляется с массивом координат.
  • При включении сложного полноэкранного сглаживания и пост-эффектов на слабом компьютере игра замедляется ещё сильнее, но тут уже загружается графический модуль.

Этот эксперимент доказывает простое правило. Даже для простейшей графики в двухмерных проектах слабый процессор становится преградой, если игра заставляет его каждую миллисекунду обсчитывать взаимодействие сотен активных сущностей.

Главные причины падения производительности

Задержки в играх делятся на аппаратные и программные. Аппаратные связаны с характеристиками компонентов системного блока, а программные — с качеством написания самой игры или фоновыми процессами операционной системы.

Аппаратные ограничения

  • Слабый графический процессор не справляется с высоким разрешением экрана, тенями высокого качества и тяжелыми эффектами освещения.
  • Нехватка видеопамяти заставляет видеокарту запрашивать текстуры из обычной оперативной памяти, которая работает значительно медленнее.
  • Малый объём оперативной памяти вынуждает Windows использовать файл подкачки на медленном накопителе, что порождает длинные секундные зависания.
  • Медленный жёсткий диск не успевает отдавать ресурсы мира при быстром перемещении персонажа по карте.
  • Перегрев компонентов заставляет систему снижать тактовые частоты ради защиты кремния от выгорания, вызывая резкие просадки скорости.

Программные проблемы

  • Неоптимизированный игровой код заставляет процессор совершать миллионы лишних циклов расчёта для объектов, которых игрок даже не видит.
  • Слишком большое количество команд отрисовки перегружает драйвер видеокарты, вынуждая процессор застревать в очереди вызовов.
  • Фоновые программы, запущенные браузеры с десятками вкладок или антивирусные проверки отбирают процессорное время прямо во время матча.

Как найти узкое место в своём компьютере

Чтобы выяснить истинную виновницу просадок, используют программы мониторинга, такие как MSI Afterburner или встроенный диспетчер задач Windows. Во время игры смотрят на графики загрузки компонентов в процентах.

Если видеокарта загружена на 98-100 процентов, а процессор загружен лишь на треть, система упёрлась в графический адаптер. В таком случае помогают снижение разрешения экрана, уменьшение качества теней и отключение сглаживания. Если же видеокарта отдыхает на отметке 40 процентов, а одно или несколько ядер процессора загружены под сотку, узким местом выступает центральный процессор. Снижение графических настроек тут обычно мало помогает, эффективнее уменьшить дальность прорисовки и плотность толпы.

Частые вопросы

Почему простая 2D-игра может тормозить сильнее тяжелой 3D-игры?

В двухмерной игре может быть заложено огромное количество математических расчётов физики или плохо оптимизированный код. Если проект написан неаккуратно, процессор тратит массу сил на обработку невидимых элементов за границами экрана.

Поможет ли разгон процессора избавиться от лагов?

Разгон даёт прирост скорости лишь тогда, когда именно процессор был ограничителем системы. Если игра упиралась в нехватку видеопамяти или слабый видеочип, повышение частоты процессора не изменит показатели кадров.

Почему игра сначала работает быстро, а через полчаса начинает тормозить?

Чаще всего виноват троттлинг. Системы охлаждения процессора или видеокарты забиваются пылью, детали нагреваются до предельных температур, и автоматика принудительно снижает тактовые частоты ради охлаждения.

Влияет ли SSD-накопитель на частоту кадров в игре?

Сам по себе твердотельный накопитель не увеличивает средний показатель FPS. Однако быстрый SSD полностью устраняет заикания и подергивания картинки, которые возникают при чтении новых текстур и звуков с медленного жесткого диска.