Добавить в корзинуПозвонить
Найти в Дзене

Влияние разрешения спрайтов на производительность

Влияние разрешения спрайтов на производительность Известно, что медиафайлы, особенно текстуры, особенно в 2D играх имеют наибольший эффект, оказывающий влияние на вес игры, а также на использование оперативной памяти. Давайте немножко ковырнем вглубь, чтобы лучше понимать, как размер и вес текстур влияет на производительность игры. И говорить мы будем не про дроуколы. Дроуколы - отдельная тема, и если интересно, поставьте 🗿 на пост, чтобы мы их тоже немножко разобрали. Представим 2D игру на мобилки, чтобы загнать нас в ограничения по памяти, т.к. на мобилках нет GPU памяти, "оперативная" используется для всего. И вот у вас там спрайтики красивые, с высоким разрешением, их много. Переживаете за дроуколы. А игра вылетает в какие-то моменты. Крашится. Копаете, оказывается у вас игра на мобилку кушает 3Гб памяти, и не каждый телефон такое вывозит. А это ведь мобилка! 3Гб даже для ПК игры не мало. Смотрите: общий вес спрайтов в игре - 300Мб. И как так выходит, спрашивается? Есть разли

Влияние разрешения спрайтов на производительность

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

И говорить мы будем не про дроуколы. Дроуколы - отдельная тема, и если интересно, поставьте 🗿 на пост, чтобы мы их тоже немножко разобрали.

Представим 2D игру на мобилки, чтобы загнать нас в ограничения по памяти, т.к. на мобилках нет GPU памяти, "оперативная" используется для всего. И вот у вас там спрайтики красивые, с высоким разрешением, их много. Переживаете за дроуколы. А игра вылетает в какие-то моменты. Крашится. Копаете, оказывается у вас игра на мобилку кушает 3Гб памяти, и не каждый телефон такое вывозит. А это ведь мобилка! 3Гб даже для ПК игры не мало.

Смотрите: общий вес спрайтов в игре - 300Мб. И как так выходит, спрашивается?

Есть различие между весом спрайта на диске и весом спрайта внутри оперативной памяти. Храня 1920х1080 спрайт на диске с хорошим сжатием, можно занимать всего десятки килобайт памяти. Но чтобы отобразить этот спрайт на экране, особенно с прозрачностью, нужно развернуть весь спрайт на полную катушку, где каждый пиксель занимает 4Кб памяти. Таким образом спрайт 1920х1080 займет 8Мб памяти. Всего лишь один спрайт!

Потом вы обнаруживаете у себя красивую покадровую полноэкранную анимацию, допустим, в 30 кадров. На разрешение вы не скупились и сделали 30 штук 1920х1080 спрайтов. Залили, красота! Крутится, вертится, оч красиво. Но дело в том, что чтобы ее проиграть, надо загрузить в память все кадры из этой анимации, таким образом 8х30 - 240Мб от одной лишь анимации.

И вот так вот, спрайт за спрайтом, можно прийти к гигабайтам используемой памяти. Конечно, есть дополнительные вопросы: как загружается все в память, когда, очищается ли, когда очищается, есть ли утечки и т.д. Но следить за разрешением - это в первую очередь, пожалуйста. Не повышайте его там, где это не требуется.

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

#полезное