Найти тему
GabeStore

Что такое "оптимизация" в игровой разработке?

Оглавление

После выхода новой игры среди геймеров частенько поднимается буча о том, что она плохо оптимизирована. Тормозит, вылетает и вообще подбешивает. Всё плохо, разработчикам плевать на коммьюнити, Гейб, верни мои деньги обратно.

Но знаете ли вы в действительности — а что значит термин «оптимизация»? К каким хитростям прибегают разработчики, чтобы игра шла гладко и быстро? Читайте текст и учитесь жаловаться на оптимизацию профессионально.

Что такое оптимизация?

-2

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

Игра — это программа, код, написанный символами. Заковыристыми алгоритмами предусмотрено всё: то, что вы упадёте со скалы, попытаетесь выстрелить в союзника, трижды прыгнете на том камне или решите снять броню и прогуляться по карте в исподнем. Код — бог в мире игры, он создаёт и поддерживает её, следит даже за пламенем свечи в отдалённой избе, пока вы скачете по виноградникам Туссента. Неизмеримо огромное количество функций, скриптов, триггеров, условий прорисовки окружения раздувает этого бога до космических размеров.

Замечали, что все деревья - одинаковые?
Замечали, что все деревья - одинаковые?

А вот ваш ПК не всегда готов к божественному размаху, и порой не успевает вытаскивать из файлов игры нужные текстуры, отследить, куда вы направились, проследовать там где надо по true или false, читая весь код в реальном времени. Пусть, мощность домашних компьютеров заметно подросла за последнее десятилетие, они все ещё не всесильны.

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

Хитрости разработчиков

И здесь к деревьям присмотритесь!
И здесь к деревьям присмотритесь!

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

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

Например, в Fallout 4 крупные объекты: монументы, машины — часто дублируются в уменьшенной форме как игрушки или товары в магазине. Коллекция фигурок коммандера Шепард — тоже уменьшенные версии космических кораблей, которые мы видим во время сражений со Жнецами, а Call of Duty использует чуть ли не два вида домов, но располагает их так удачно, что это не бросается в глаза.

Рендеринг видимого в Horizon: Zero Dawn
Рендеринг видимого в Horizon: Zero Dawn

Путём несложных манипуляций с кодом, разработчики минимализируют влияние объектов, которые находятся вне зоны видимости игрока. Если вы не видите какой-то объект, зачем тратить ресурсы на его рендеринг? Помимо этого пишется отдельный процесс, который решает, нужно ли изменять внешний вид объекта в зависимости от того, видит ли его игрок. Вы стукнули мечом по груде бочек, и они все должны были бы разрушиться, но, поскольку вы сразу же побежали вперёд, эти бочки так и останутся невредимыми. Пока вы не обернётесь. Магия кодинга.

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

Не всем текстурам дано прогрузиться...
Не всем текстурам дано прогрузиться...

Некоторые процессы, например, «прогнозируемая» погода, случайные встречи и просчёт тех процессов, которые не нужны прямо сейчас и не требуют сиюсекундного отклика, могу просчитываться во время простоя процессора. В этом случае система не грузится в тот момент, когда они срочно понадобились, она просто достаёт уже готовое — а мы тут вам грозу сделали, начнётся где-то в полночь. Мы, кстати, уже всё посчитали, так что не напрягайтесь.

Для того, чтобы облегчить прогрузку структур, их делят на первостепенные и второстепенные. Первостепенные — ваш персонаж, и все персонажи, с которыми он взаимодействует, предметы, которые берёт в руки и которые попадают на экран в крупном размере. К второстепенным как правило относится окружение — стены, трава, деревья, камни, и всё, что не сильно пострадает от уменьшения количества полигонов, но значительно увеличит быстроту вычислений.

Что в итоге?

Множество роликов на Youtube предлагают вам оптимизировать свой компьютер под ту или иную игру. Однако это — увеличение быстродействия и очистка ОЗУ, которая имеет мало общего с настоящим процессом оптимизации игр.

А способы, перечисленные выше — далеко не все, а напротив, самые простые и очевидные. Оптимизицию игр не принято игнорировать, и разработчики знают, что это очень важная вещь. Но всё же иногда что-то идёт не так, даже после всех сокращений кода игра жутко фризит и багует. Почему же так получается? Ну, с тем — что такое оптимизация мы разобрались сейчас, а почему с ней случаются проблемы — узнаете в следующем тексте.

А до тех пор играйте, подмечайте косяки оптимизации или, наоборот, удачные задумки. Внимательно следите за окружающим миром и пытайтесь догадаться — как именно здесь схитрили разработчики, чтобы всё шло гладко и без фризов? А закупайтесь материалами для таких экспериментов в нашем магазине GabeStore.Ru, где даже новые игры, вроде Resident Evil 2, продаются со скидками, которые никогда не заканчиваются.

Автор: Solongoy