Любой геймер хоть раз в жизни сталкивался с плохо оптимизированной игрой. Низкий FPS, артефакты графики, баги, глюки, неудобный пользовательский интерфейс — частые характеристики подобных проектов. Найти идеальную игру, у которой все эти аспекты будут отсутствовать или оказывать минимальное влияние на геймплей, сложно (но можно). Но давайте сначала определимся с самим понятием оптимизации видеоигр. Оптимизация игры — это процесс повышения производительности для улучшения игрового процесса и визуального восприятия. Если конкретнее, то хорошо оптимизированная игра работает с одинаковым FPS на большинстве игровых платформ, включая технические слабые модели. Такой подход к оптимизации, где исходная точка — FPS (частота кадров в секунду), неудивителен, т. к. большинство игроков связывают производительность игры именно с плавностью отображения картинки на экране. Ведь большую часть информации мы получаем визуально. Зачем оптимизируют игры? Создатели игр делают свои творения на топовом оборудовании, которое недоступно большинству пользователей. И задача разработчиков — сделать так, чтобы их детище запустилось и было играбельно на большинстве геймерских девайсов. А для того, чтобы получить безумно красивое изображение и высокий FPS, игре требуется очень мощное железо, часто превосходящее даже то, что есть в наличии у игроделов. Не говоря уже об обычных пользователях. Чтобы вы лучше понимали, приведем немного цифр. Производительность встроенного видеочипа в Sony Playstation 4 (базовая версия) — 1,84 Тфлопс. Одна из самых популярных, но уже относительно устаревших видеокарт Nvidia GeForce GTX 1060, выдает около 4 Тфлопс. При этом ее ресурса уже не хватает на самые требовательные ПК-игры в высоком разрешении. Так как же разработчики умудряются выпускать шедевры вроде God of War или Last of Us 2 на устаревшей «начинке» PS4? Да так, что подобные тайтлы не только не режут глаза, но и заставляют восхищаться такими пейзажами, каких не увидишь в реальной жизни. У них есть свои профессиональные секреты и хитрости, о которых сейчас и пойдет речь. Мир существует, пока я его вижу Отображение сотен объектов на экране и работа со светом и тенями — это самые ресурсоемкие процессы, требующие больших мощностей. Что придумали разработчики, дабы снизить нагрузку с видеокарты? Они заставляют ее рендерить (отрисовывать) только те объекты, которые видит игрок. Например, в GTA V за спиной игрока город, люди, автомобили просто не существуют (но вы этого не замечаете). И это логично, так как тратить ресурс видеокарты на симуляцию жизни огромного города, который вы все равно не видите, было бы преступлением. Однако здесь разработчикам нужно быть внимательным с физикой объекта, чтобы не получилось так: силы гравитации работают только тогда, когда игрок смотрит на объект. Про историю с Silent Hill не слышал, наверное, только ленивый. В 1999 году производительность Sony PlayStation была такой низкой, что отобразить относительно большой мир не было возможности. Тогда разработчики окружили игрока туманом, который ограничивает дальность видимости. Это позволило оптимизировать игру под возможности консоли. Но самое важное, что такое «случайное» решение стало визитной карточкой серии. Туман добавлял в игру элемент мистики и как нельзя лучше играл на атмосферу Silent Hill. Исчезающие объекты. Для улучшения производительности разработчики часто избавляются от дополнительных объектов путем их исчезновения. Пропадающие после выстрела гильзы или исчезающие тела поверженных противников — такое можно встретить минимум в половине шутеров. Представьте Serious Sam, Painkiller или любой другой «мясной» шутер, где тела не пропадают. Игроку пришлось бы как минимум идти «по колено в крови». Клонирование. Копирование текстур и объектов — это самый часто используемый способ оптимизации игры. Возьмите любую игру, и вы найдете кучу одинаковых предметов. Особенно это бросается в глаза в старых играх. Например, в шутере FEAR большая часть офисов, включая предметы на столах, стулья и прочее выглядят, как под копирку. Так и есть — это одни и те же модели. Такой подход плох лишь тем, что делает игру менее уникальной и разнообразной. Зато повышает FPS. В играх с открытым миром тоже много подобного копирования. Здания в Mafia или GTA часто не блещут разнообразием: одни и те же «бетонные коробки» просто разбросаны по разным частям игровых локаций, чтобы не слишком бросаться в глаза. Что уже говорить про рядовых НПС: уникальны лишь сюжетно значимые персонажи, а вот «массовка», бродящая по улицам, разнообразием не отличается. Текстуры и мегатекстуры. Еще одна «фишка» игроделов под названием «мегатекстура» была разработана отцом шутеров от первого лица Джоном Кармаком. Мегатекстура покрывает весь ландшафт игрового уровня (вместо десятков и сотен мелких текстур). Ближайшие к игроку части мегатекстуры отображаются с максимальной детализацией, но по мере удаления окружающий мир становится «менее качественным». Это напоминает реальную жизнь — ведь мы не можем видеть объекты на расстоянии также хорошо, как непосредственно вблизи. Мегатекстура размещается на жестком диске. По мере необходимости она подкачивается в оперативную память, потребляя гораздо меньше ресурсов, чем при традиционном подходе с большим количеством разных текстур. Если же в игре используется множество текстур, то разработчики поступают аналогично: текстуры на расстоянии детализированы слабо и наоборот. 3D-модели вдалеке урезают до 2D: для игрока разница не видна, а вот видеокарта скажет спасибо за уменьшение нагрузки. Уменьшение разрешения текстур на расстоянии, снижения количества полигонов у объекта, отключение шейдеров — все это тоже относится к оптимизации и применяется повсеместно. Освещение Генерация реалистичных лучей света, их отражение от поверхности и создание теней — один из самых ресурсоемких процессов. Поэтому разработчики часто просто избавляются от теней на больших расстояниях и стараются использовать как можно меньше отражающих свет текстур. Уменьшение числа объектов с динамичными тенями также положительно сказывается на повышении производительности игры. Загрузочные экраны Большинство старых игр грешат постоянными загрузочными экранами. Переходите на новый уровень? Получите долгую загрузку. В Half-Life, например, разработчики попытались решить проблему изящнее: там подзагрузка уровней происходила очень быстро, но все равно была заметна. В современных играх, таких как Last of Us, Uncharted или God of War, от многочисленных подзагрузочных экранов избавились насовсем. Новые части локации там загружаются, пока персонажи ведут диалог или решают головоломки. Хитроумное решение надо признать. Стоит упомянуть важный нюанс: оптимизация консольных игр проще, чем ПК-тайтлов. Это обусловлено тем, что разработчики консольных игр заранее знают технические возможности оборудования, под которое они создают свои творения (например, PS4). В то время как разлет аналогичных характеристик у владельцев ПК весьма велик: у кого-то компьютер «древний» с видюхой из нулевых, а у другого — суперсовременная машина. Это во многом объясняет, почему консольные игры часто превосходят ПК-конкурентов, в том числе и графически: сказывается лучшая оптимизация. Оптимизация ассетов Любой ассет в игре можно оптимизировать: снизить его разрешение, уменьшить количество полигонов. При этом он по-прежнему будет хорошо выглядеть, но станет потреблять меньше вычислительных ресурсов. Игровой ассет или игровой ресурс — цифровой объект, преимущественно состоящий из однотипных данных, неделимая сущность, которая представляет часть игрового контента и обладает некими свойствами. Понятие «игрового ассета» используется при разработке компьютерных игр по отношению к тем элементам контента, которые обрабатываются ресурсной системой как неделимые (атомарные, элементарные) сущности. А еще можно часть объектов, на которые игроки чаще обращают внимание, сделать высокодетализированными (например, лицо персонажа), а на второстепенные детали — траву, камни, одежду героя тратить как можно меньше ресурсов. Так поступили, например, создатели Fallout 4. Оптимизация кода Это относится уже к самой что ни на есть «внутренней кухне» игры. Например, FPS повышает использование всех ядер процессора при сложных внутриигровых вычислениях. Или оптимизация кода игры, когда выгоднее использовать константу (какое-то постоянное значение, часто используемое в игре), чем заставлять процессор рассчитывать эту величину каждый раз заново. Это справедливо и для графики: разумнее применять некий часто используемый спрайт, сохранив его в файл, чем каждый раз отрисовывать его с помощью кода. Настройки для пользователя Еще один инструмент (а точнее несколько) для оптимизации разработчики сделали доступным игрокам. Речь идет о настройках графики, которые в большинстве игр вы вольны изменять по своему усмотрению. Включать, отключать сглаживание, вертикальную синхронизацию и множество различных визуальных эффектов, например, Blur, отражения в воде, дальность прорисовки и другие. Если убрать все эти графические навороты, игра лишается своей красоты, но зато идет без задержек даже на слабых ПК. Такой вот компромиссный и общедоступный способ оптимизации. Заключение Нужно понимать, что оптимизация игр — это работа не только над графикой, но и над геймплейными механиками, избавление проекта от багов, корректная локализация и десятки других нюансов. И работа над улучшением производительности игры важна не менее, чем процесс создания последней. Многие современные проекты выходят настолько «сырыми», что не покидает ощущение: разработчики просто «забивают» на пользователя в погоне за скорейшим релизом и желанием «отбить бабки». Вместо того, чтобы довести игру до ума, ее выбрасывают на рынок, она получает кучу негативных отзывов и рецензий и «погибает», утягивая в пучину банкротства студию-разработчика и издателя. Например, так случилось с легендарными сериями Heroes of Might and Magic, Disciples, Gothic. https://club.dns-shop.ru/blog/t-64-videoigryi/37130-kak-rabotaet-optimizatsiya-igr/
DNS Касли
Как работает оптимизация игр?
Любой геймер хоть раз в жизни сталкивался с плохо оптимизированной игрой. Низкий FPS, артефакты графики, баги, глюки, неудобный пользовательский интерфейс — частые характеристики подобных проектов. Найти идеальную игру, у которой все эти аспекты будут отсутствовать или оказывать минимальное влияние на геймплей, сложно (но можно). Но давайте сначала определимся с самим понятием оптимизации видеоигр. Оптимизация игры — это процесс повышения производительности для улучшения игрового процесса и визуального восприятия. Если конкретнее, то хорошо оптимизированная игра работает с одинаковым FPS на большинстве игровых платформ, включая технические слабые модели. Такой подход к оптимизации, где исходная точка — FPS (частота кадров в секунду), неудивителен, т. к. большинство игроков связывают производительность игры именно с плавностью отображения картинки на экране. Ведь большую часть информации мы получаем визуально.
Зачем оптимизируют игры?
Создатели игр делают свои творения на топовом оборудовании, которое недоступно большинству пользователей. И задача разработчиков — сделать так, чтобы их детище запустилось и было играбельно на большинстве геймерских девайсов. А для того, чтобы получить безумно красивое изображение и высокий FPS, игре требуется очень мощное железо, часто превосходящее даже то, что есть в наличии у игроделов. Не говоря уже об обычных пользователях. Чтобы вы лучше понимали, приведем немного цифр. Производительность встроенного видеочипа в Sony Playstation 4 (базовая версия) — 1,84 Тфлопс. Одна из самых популярных, но уже относительно устаревших видеокарт Nvidia GeForce GTX 1060, выдает около 4 Тфлопс. При этом ее ресурса уже не хватает на самые требовательные ПК-игры в высоком разрешении. Так как же разработчики умудряются выпускать шедевры вроде God of War или Last of Us 2 на устаревшей «начинке» PS4? Да так, что подобные тайтлы не только не режут глаза, но и заставляют восхищаться такими пейзажами, каких не увидишь в реальной жизни. У них есть свои профессиональные секреты и хитрости, о которых сейчас и пойдет речь.
Мир существует, пока я его вижу
Отображение сотен объектов на экране и работа со светом и тенями — это самые ресурсоемкие процессы, требующие больших мощностей. Что придумали разработчики, дабы снизить нагрузку с видеокарты? Они заставляют ее рендерить (отрисовывать) только те объекты, которые видит игрок. Например, в GTA V за спиной игрока город, люди, автомобили просто не существуют (но вы этого не замечаете). И это логично, так как тратить ресурс видеокарты на симуляцию жизни огромного города, который вы все равно не видите, было бы преступлением. Однако здесь разработчикам нужно быть внимательным с физикой объекта, чтобы не получилось так: силы гравитации работают только тогда, когда игрок смотрит на объект. Про историю с Silent Hill не слышал, наверное, только ленивый. В 1999 году производительность Sony PlayStation была такой низкой, что отобразить относительно большой мир не было возможности. Тогда разработчики окружили игрока туманом, который ограничивает дальность видимости. Это позволило оптимизировать игру под возможности консоли. Но самое важное, что такое «случайное» решение стало визитной карточкой серии. Туман добавлял в игру элемент мистики и как нельзя лучше играл на атмосферу Silent Hill. Исчезающие объекты. Для улучшения производительности разработчики часто избавляются от дополнительных объектов путем их исчезновения. Пропадающие после выстрела гильзы или исчезающие тела поверженных противников — такое можно встретить минимум в половине шутеров. Представьте Serious Sam, Painkiller или любой другой «мясной» шутер, где тела не пропадают. Игроку пришлось бы как минимум идти «по колено в крови».
Клонирование.
Копирование текстур и объектов — это самый часто используемый способ оптимизации игры. Возьмите любую игру, и вы найдете кучу одинаковых предметов. Особенно это бросается в глаза в старых играх. Например, в шутере FEAR большая часть офисов, включая предметы на столах, стулья и прочее выглядят, как под копирку. Так и есть — это одни и те же модели. Такой подход плох лишь тем, что делает игру менее уникальной и разнообразной. Зато повышает FPS. В играх с открытым миром тоже много подобного копирования. Здания в Mafia или GTA часто не блещут разнообразием: одни и те же «бетонные коробки» просто разбросаны по разным частям игровых локаций, чтобы не слишком бросаться в глаза. Что уже говорить про рядовых НПС: уникальны лишь сюжетно значимые персонажи, а вот «массовка», бродящая по улицам, разнообразием не отличается.
Текстуры и мегатекстуры.
Еще одна «фишка» игроделов под названием «мегатекстура» была разработана отцом шутеров от первого лица Джоном Кармаком. Мегатекстура покрывает весь ландшафт игрового уровня (вместо десятков и сотен мелких текстур). Ближайшие к игроку части мегатекстуры отображаются с максимальной детализацией, но по мере удаления окружающий мир становится «менее качественным». Это напоминает реальную жизнь — ведь мы не можем видеть объекты на расстоянии также хорошо, как непосредственно вблизи. Мегатекстура размещается на жестком диске. По мере необходимости она подкачивается в оперативную память, потребляя гораздо меньше ресурсов, чем при традиционном подходе с большим количеством разных текстур. Если же в игре используется множество текстур, то разработчики поступают аналогично: текстуры на расстоянии детализированы слабо и наоборот. 3D-модели вдалеке урезают до 2D: для игрока разница не видна, а вот видеокарта скажет спасибо за уменьшение нагрузки. Уменьшение разрешения текстур на расстоянии, снижения количества полигонов у объекта, отключение шейдеров — все это тоже относится к оптимизации и применяется повсеместно. Освещение Генерация реалистичных лучей света, их отражение от поверхности и создание теней — один из самых ресурсоемких процессов. Поэтому разработчики часто просто избавляются от теней на больших расстояниях и стараются использовать как можно меньше отражающих свет текстур. Уменьшение числа объектов с динамичными тенями также положительно сказывается на повышении производительности игры.
Загрузочные экраны
Большинство старых игр грешат постоянными загрузочными экранами. Переходите на новый уровень? Получите долгую загрузку. В Half-Life, например, разработчики попытались решить проблему изящнее: там подзагрузка уровней происходила очень быстро, но все равно была заметна. В современных играх, таких как Last of Us, Uncharted или God of War, от многочисленных подзагрузочных экранов избавились насовсем. Новые части локации там загружаются, пока персонажи ведут диалог или решают головоломки. Хитроумное решение надо признать. Стоит упомянуть важный нюанс: оптимизация консольных игр проще, чем ПК-тайтлов. Это обусловлено тем, что разработчики консольных игр заранее знают технические возможности оборудования, под которое они создают свои творения (например, PS4). В то время как разлет аналогичных характеристик у владельцев ПК весьма велик: у кого-то компьютер «древний» с видюхой из нулевых, а у другого — суперсовременная машина. Это во многом объясняет, почему консольные игры часто превосходят ПК-конкурентов, в том числе и графически: сказывается лучшая оптимизация.
Оптимизация ассетов
Любой ассет в игре можно оптимизировать: снизить его разрешение, уменьшить количество полигонов. При этом он по-прежнему будет хорошо выглядеть, но станет потреблять меньше вычислительных ресурсов. Игровой ассет или игровой ресурс — цифровой объект, преимущественно состоящий из однотипных данных, неделимая сущность, которая представляет часть игрового контента и обладает некими свойствами. Понятие «игрового ассета» используется при разработке компьютерных игр по отношению к тем элементам контента, которые обрабатываются ресурсной системой как неделимые (атомарные, элементарные) сущности. А еще можно часть объектов, на которые игроки чаще обращают внимание, сделать высокодетализированными (например, лицо персонажа), а на второстепенные детали — траву, камни, одежду героя тратить как можно меньше ресурсов. Так поступили, например, создатели Fallout 4. Оптимизация кода Это относится уже к самой что ни на есть «внутренней кухне» игры. Например, FPS повышает использование всех ядер процессора при сложных внутриигровых вычислениях. Или оптимизация кода игры, когда выгоднее использовать константу (какое-то постоянное значение, часто используемое в игре), чем заставлять процессор рассчитывать эту величину каждый раз заново. Это справедливо и для графики: разумнее применять некий часто используемый спрайт, сохранив его в файл, чем каждый раз отрисовывать его с помощью кода.
Настройки для пользователя
Еще один инструмент (а точнее несколько) для оптимизации разработчики сделали доступным игрокам. Речь идет о настройках графики, которые в большинстве игр вы вольны изменять по своему усмотрению. Включать, отключать сглаживание, вертикальную синхронизацию и множество различных визуальных эффектов, например, Blur, отражения в воде, дальность прорисовки и другие. Если убрать все эти графические навороты, игра лишается своей красоты, но зато идет без задержек даже на слабых ПК. Такой вот компромиссный и общедоступный способ оптимизации.
Заключение
Нужно понимать, что оптимизация игр — это работа не только над графикой, но и над геймплейными механиками, избавление проекта от багов, корректная локализация и десятки других нюансов. И работа над улучшением производительности игры важна не менее, чем процесс создания последней.
Многие современные проекты выходят настолько «сырыми», что не покидает ощущение: разработчики просто «забивают» на пользователя в погоне за скорейшим релизом и желанием «отбить бабки». Вместо того, чтобы довести игру до ума, ее выбрасывают на рынок, она получает кучу негативных отзывов и рецензий и «погибает», утягивая в пучину банкротства студию-разработчика и издателя. Например, так случилось с легендарными сериями Heroes of Might and Magic, Disciples, Gothic. https://club.dns-shop.ru/blog/t-64-videoigryi/37130-kak-rabotaet-optimizatsiya-igr/