Полигональные атласы для оптимизации игр

67ee22a634b74509800aa3ff712f1585

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

  1. gameНаличие большого количества контента.
  2. Ограниченное количество оперативной памяти.

Атласы и текстуры

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

Атлас – это набор небольших по размеру текстур, которые соединены в одно большое изображение. Таким способом удается сэкономить немало памяти, и отсутствует необходимость при отрисовке создавать большое количество батчей.

В большинстве случаев места много, а потому в нем лучше всего разместить как можно больше текстур. Справиться с этой задачей можно только после решения двух главных проблем:

  1. Каждая исходная текстура должна умещаться в отдельном треугольнике. При этом необходимо поместить его только по непрозрачным пикселям. Только после прорисовки всех геометрических фигур перед разработчиком появится исходная текстура.
  2. Получившийся набор необходимо компактно поместить в атласе.

Задача действительно не из самых легких. Примерно после 100 000 разных вариантов компоновки удается достичь нужных разработчику результатов.

Третья проблема

Если осуществляется переход от старых к новым атласам, возникает еще одна проблема, которая должна быть рассмотрена. Иногда возникает необходимость изобразить текстуру не целиком, а лишь ее отдельную частичку. Чаще такая ситуация возникает, когда объект во время игры должен появляться постепенно или в нем прослеживается действие прогресса.
599aa4d8e7a62cdbf6fdee3e7a7047a0Если атлас обычный, то справиться с этой проблемой позволяет точная настройка координат. А при использовании полигональных атласов ситуация усложняется в разы.

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

Это далеко не все проблемы, с которыми может столкнуться разработчик, который занимается разработкой игр на ios. Но основы он знать обязан.