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