Способы повысить производительность игры ТОП-8
В эпоху чрезвычайно мощных компьютеров, когда «под капотом» обычного домашнего ПК десятки ядер и видеокарта, способная трассировать лучи в реальном времени, многие разработчики забывают про оптимизацию. Зачем тратить время, ведь у геймера наверняка продвинутое устройство, и разницы, скорее всего, он даже не заметит?
Однако на практике такой подход может стать причиной того, что на слабых, а иногда даже на мощных компьютерах игры начинают тормозить и вылетать. Чтобы этого не допустить рассмотрим 8 основных способов повышения производительности.
Способ 1. Удаление лишних объектов
Проблема большого количества объектов в играх будет существовать до тех пор, пока у нас не появится оперативная память с бесконечным объемом. То есть еще очень долго. Поэтому с этой точки зрения оптимизация просто обязательна.
На практике в игровом процессе всегда можно найти, что удалить. Например, это могут быть:
Если оставить все как есть, то спустя несколько минут геймплея, по мере заполнения оперативной памяти, игра начнет заметно зависать и в итоге просто вылетит с уведомлением «Close programs to prevent information loss».
Что именно удалять — зависит от особенностей каждого отдельного проекта. Например, в шутере Half-Life от гильз можно смело избавляться — там они играют только декоративную роль, а вот в детективных играх, связанных с расследованиями они могут играть ключевую роль.
Однако бывают случаи, когда решить эту проблему «легальными» способами практически невозможно, например в играх с возможностью перемотки времени, где память должна хранить всю информацию за период, куда персонаж может переместиться в прошлое. Здесь есть несколько решений: сократить доступный период перемещения во времени, минимизировать количество объектов, ну или пойти на «грязные» приемы, как поступили создатели игры Super Time Force.
Способ 2. Отключение отображения объектов
Этот способ чаще всего используется в играх с открытым миром. Он предполагает отключение отображения статичных объектов игровой вселенной, которые не могут быть удалены.
Здесь у разработчиков есть два пути: отключить только рендеринг или объект полностью. Во втором случае будет снижена нагрузка не только на видеокарту, но и на процессор, поскольку ему не потребуется тратить ресурсы на проверку коллизии и физики. К слову про физику, при отключении объектов с ней нужно быть крайне аккуратным, чтобы избежать непредвиденных эффектов.
Например, если выключить отображение объекта в момент его падения, когда игрок отворачивается — он никогда не упадет, пока персонаж на него снова не посмотрит.
Однако, этот же эффект можно использовать и в своих целях. Хороший практический пример в этом случае реализован в игре The Witcher 3: в одной из локаций есть статуи, которые перемещаются в пространстве пока на них никто не смотрит.
Даже в реальной жизни человеку сложно рассмотреть что-либо на отдаленном объекте, например царапину на доме, стоящем за горизонтом. Поэтому тратить драгоценные ресурсы видеокарты и процессора на такую высокую детализацию тоже не имеет смысла.
С технической точки зрения здесь есть несколько подходов:
Если посмотреть на более старые игры, то можно заметить, что расположенные далеко объекты в них вообще исчезают, а на их месте появляются только текстуры.
Продолжая тему декораций можно добавить, что не все объекты на экране геймера должны быть одинаково высокого качества. К примеру, главный герой может быть проработан максимально, а вот второстепенные вещи, такие как трава, ограждения и прочее — можно сделать более низкого расширения.
В играх всегда стоит отдавать приоритет использованию ассетов, которые занимают меньше всего места: сжатые текстуры, low-poly объекты и так далее.
Зачастую, каждый ассет можно дополнительно оптимизировать, чтобы он привлекательно смотрелся в игровом пространстве, однако для этого может потребоваться помощь опытного 3D-художника.
Свет и отражения делают игру визуально приятнее и выразительнее, однако их отрисовка потребляет достаточно много ресурсов. Здесь мы можем порекомендовать создавать минимальное количество источников света и отдавать предпочтение отражающим поверхностям.
Если говорить про тени, то лучше постараться сократить количество объектов с динамичными тенями.
При многократном использовании в игре одних и тех же значений, лучше их сохранить в кэш, чтобы скриптам не приходилось тратить ресурсы устройства на одинаковые расчеты. То же самое касается и графической составляющей: если ваш спрайт отрисовывается с помощью кода — сохраните его в файл или память, а затем просто извлекайте в случае необходимости.
Современные процессоры могут быть оснащены множеством ядер, но будут ли они задействованы в процессе игры — зависит только от разработчика. Это означает, что если в вашем проекте есть вычисления, которые осуществляются вне зависимости от движка, то они должны выполняться параллельно. Как это реализовать с технической точки зрения — зависит от технологии, которую вы используете.
Что еще нужно знать при оптимизации игры
Оптимизация игры возможна только до каких-то разумных пределов. То есть, портировать Elden Ring в компьютер с оперативной памятью 2 Гб — у вас просто физически не получится.
Поэтому еще до начала продакшена нужно определиться, для каких устройств и какой аудитории создается проект, и сосредоточиться именно на них. Так вы сможете достичь оптимальной производительности без ущерба качеству.
Свежие работы
Лучшим подтверждением нашей квалификации и профессионализма являются истории успеха наших клиентов и различия в их бизнесе до и после сотрудничества с нами.
Наши клиенты Что о нас говорят
Успешные проекты
создаются только командой Наша команда
Свяжитесь с экспертами Появились вопросы?
Пользователь, оформляя заявку на сайте https://avada-media.ua/ (далее – Сайт), соглашается с условиями настоящего Согласия на обработку персональных данных (далее — Согласие) в соответствии с Законом Украины «Про захист персональних даних». Принятием (акцептом) оферты Согласия является отправка заявки с Сайта или заказ у Оператора по телефонам Сайта.
Пользователь дает свое согласие на обработку своих персональных данных со следующими условиями:
Отправить резюме
Свяжитесь с нами любым удобным для Вас способом:
+ 38 (097) 036 29 32