Створення 2D-спрайтів для мобільної гри з оптимізацією

Спрайти з'їдають пам'ять і знижують частоту кадрів навіть на середніх пристроях — гравці йдуть, а ви втрачаєте утримання. Ми створюємо та оптимізуємо 2D спрайти для мобільних ігор під ключ: від малювання до пакування в атласи. Наші інженери скорочують обсяг графіки в рази без втрати візуальної якості.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Створення 2D-спрайтів для мобільної гри з оптимізацією
Середній
від 2 тижнів до 3 місяців
Часті запитання

Чому 2D спрайти для мобільної гри втрачають якість і кадри

2D спрайти мобільна гра провалює найчастіше не на етапі відмальовування, а на етапі підготовки ассетів.

Художник малює у високій роздільній здатності, арт іде у збірку «як є», і на пристрої починається ланцюжок: розмиття текстур при масштабуванні, зайва вага ассетів у пакеті, просідання частоти кадрів на слабких моделях.

Кожен пункт окремо виглядає терпимо, разом вони дають ривки анімації та «мило» на персонажах — те, що гравець помічає раніше, ніж геймплей.

Розмиття майже завжди є наслідком неправильного режиму фільтрації та відсутності кратних степенів двійки в розмірах листа. Спрайт, відмальований під один масштаб, при розтягуванні на екранах з іншою щільністю пікселів інтерполюється, і контур втрачає чіткість.

Лікується не перемальовуванням, а налаштуванням імпорту: режим фільтрації, вимкнення міп-рівнів там, де вони шкодять, вирівнювання розмірів атласу.

Вага ассетів зростає непомітно: дублікати кадрів, невикористані варіанти, повнорозмірні вихідники всередині збірки. Оптимізація спрайтів починається з ревізії — що реально викликається в рантаймі, а що лежить мертвим вантажем.

Атласи, упаковані без зазору під конкретні сцени, дають менше перемикань матеріалу та передбачуваний розмір пакета.

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

Розбираємо, як це закривається на рівні підготовки графіки та налаштувань збірки, а не костилями в коді.

Що дає оптимізація 2D спрайтів для мобільної гри

Атласи замість розсипу файлів

Кожен спрайт, завантажений окремим файлом, — це окремий виклик відмалювання та перемикання стану графічного конвеєра.

Збирання спрайтів в атласи скорочує кількість викликів відмалювання в рази: десятки дрібних картинок перетворюються на одну текстуру, і продуктивність рендерингу перестає впиратися в процесор на кадрі.

Стиснення текстур під мобільні GPU

Вибір формату стиснення з апаратною підтримкою знімає навантаження з пам'яті пристрою: розпакована текстура займає в рази більше місця, ніж стиснена.

Для 2D спрайтів мобільна гра отримує стабільну частоту кадрів навіть на слабких пристроях, а обсяг збірки скорочується без втрати візуальної якості.

Контроль пам'яті та усунення відмов

Пікове споживання пам'яті — головна причина вильотів на пристроях з малим обсягом. Профілювання та вивантаження невикористаних атласів при зміні сцен прибирають цілий клас відмов через переповнення пам'яті, а не просто відкладають їх.

Варіант Коли підходить Обмеження
Атласи спрайтів Багато дрібних елементів, UI, анімації Потребує перезбирання при додаванні кадрів
Стиснення текстур з апаратною підтримкою Великі фони, щільна графіка Залежить від підтримки формату на пристрої
Ручна оптимізація без атласів Прототип, поодинокі спрайти Не масштабується, зростає кількість викликів відмалювання

Наші інженери збирають атласи та налаштовують стиснення текстур у TexturePacker — це дає передбачуваний розмір збірки та стабільний кадр на всьому парку пристроїв.

Як ми створюємо та оптимізуємо 2D спрайти: етапи роботи

Робота над 2D спрайтами для мобільної гри починається не з малювання, а з аудиту того, що вже є: ми дивимося вихідники, розбираємо, як графіка упакована зараз, скільки пам'яті займає на пристрої та де просідання за відмальовуванням.

Часто з'ясовується, що половину кадрів можна об'єднати, а частина шарів взагалі не потрібна — це знімає навантаження без втрати картинки. Далі вибудовуємо процес так, щоб кожен етап давав вимірюваний результат, а не «стало красивіше».

  1. Аудит графіки. Збираємо інвентар асетів, відзначаємо дублі, биті кадри та зайві шари. На виході — карта ресурсів з оцінкою, що перевикористовується, а що перемальовується.
  2. Підготовка вихідників. Приводимо кадри до єдиної сітки та палітри, чистимо прозорі поля та артефакти стиснення. Це прибирає зайві пікселі, які потім тягнуться в пам'ять пристрою.
  3. Складання атласу. Розкладаємо спрайти по спільному аркушу з урахуванням порядку відмальовування та частоти використання. Один атлас замість десятків окремих файлів скорочує кількість перемикань при відмальовуванні.
  4. Оптимізація під мобільні. Підбираємо формат стиснення та глибину кольору під кожен тип графіки — фон, персонажі, інтерфейс. Статичні елементи упаковуються щільніше, анімація — із запасом за якістю.
  5. Тестування на пристроях. Прогоняємо збірку на реальних апаратах різного класу, заміряємо час завантаження сцени та споживання пам'яті. Дивимося не лише флагмани, а й слабкі моделі, де просідання найпомітніші.
  6. Передача асетів. Віддаємо готові атласи, вихідники по шарах та опис структури: де який спрайт, як він збирається і що змінювати при додаванні нового контенту.

Такий порядок важливий тому, що оптимізація в кінці шляху завжди дорожча, ніж на вході. Якщо спочатку намалювати все підряд, а потім стискати, частина роботи йде намарно — доводиться перемальовувати кадри під нові вимоги.

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

На виході замовник отримує не просто картинки, а керований набір ресурсів: зрозумілу структуру, запас за пам'яттю на майбутні оновлення та документацію, за якою команда зможе додавати новий контент без нас. Опишіть вашу гру та поточний стан графіки — повернемося з оцінкою та планом робіт.

Чим відрізняється спрайтовий атлас від окремих зображень?

Спрайтовий атлас — це одне зображення, на якому щільно упаковані всі кадри та елементи графіки, а координати кожного кадру описані в окремому файлі-описі. Окремі зображення — це коли кожен кадр лежить своїм файлом.

Різниця проявляється не в картинці на екрані, а в тому, як рушій працює з пам'яттю та графічним конвеєром.

Ключовий параметр — виклики відмалювання. Кожне окреме зображення під час виведення на екран вимагає перемикання стану графічного конвеєра: рушію потрібно заново прив'язати текстуру, перш ніж малювати наступний кадр.

Спрайтовий атлас знімає цю проблему — всі кадри живуть в одній текстурі, і рушій малює їх пакетно, без переприв'язки.

На сцені зі сотнею одночасно видимих об'єктів це різниця між сотнею викликів відмалювання та одиницями, а саме виклики відмалювання впираються в межу продуктивності на слабких мобільних пристроях.

Другий параметр — завантаження пам'яті. Окремі зображення вимагають окремого заголовка та вирівнювання буфера під кожну текстуру; на десятках дрібних файлів накладні витрати помітні.

Атлас тримає одну текстуру, але платить за це площею: якщо кадри не упаковані щільно, частина пікселів іде марно. Тому упакування ведеться алгоритмом із контролем заповнення, а не «на око».

Є й зворотний бік. Атлас завантажує в пам'ять усі кадри одразу, навіть ті, що потрібні рідко, — для великих наборів анімацій це зайва вага. Окремі зображення вантажаться на вимогу й дозволяють віддавати пам'ять під інші задачі.

На практиці обирають гібрид: часто використовувані кадри — в атлас, рідкісні та великі — окремими файлами.

Підсумок: окремі зображення простіші в підготовці та точковому завантаженні, атлас виграє за викликами відмалювання та стабільністю частоти кадрів. Рішення ухвалюють за кількістю об'єктів на сцені та профілем пристрою, а не за зручністю художника.

Кейс: як оптимізація спрайтів прискорила мобільну гру

Проєкт — казуальна головоломка з процедурно зібраними рівнями: сотні об'єктів на сцені, кожен зі своєю анімацією. На старті художники віддавали спрайти «як зручно в редакторі»: великі аркуші, зайві прозорі поля, різні палітри в сусідніх об'єктів.

Гра працювала, але на пристроях середнього класу рівень відкривався помітно довше за комфортний, а на довгих сесіях пам'ять зростала сходинками — збирач не встигав звільняти розпаковані текстури.

Що показали заміри

Ми почали не з перемальовування, а з профілювання: зняли час завантаження рівня, пікове споживання пам'яті та розподіл тривалості кадру на трьох класах пристроїв.

Виявилося, що вузьке місце — не кількість об'єктів, а те, як вони упаковані: атласи не збиралися в спільний аркуш, частина спрайтів завантажувалася в початковій роздільній здатності, а прозорі краї з'їдали площу текстури марно. Це дало конкретний план робіт замість «давайте все перемалюємо».

Що змінили

Розбили графику на атласи за частотою використання: об'єкти, які з'являються на екрані разом, потрапили в один аркуш — кількість перемикань матеріалу на кадр упала.

Обрізали прозорі поля за фактичними межами спрайта, привели палітри до спільного набору й перезібрали анімації в спільний формат з покадровими зміщеннями. Великі фони винесли в окремі аркуші зі зниженою роздільною здатністю — вони й не потребували початкової деталізації.

Метрика До Після
Завантаження рівня базова у 2,4 раза швидше
Пікова пам'ять на сцену базова на 38% нижче
Стабільна частота кадрів просідання на піках рівний графік без ривків
Розмір графічного пакета базовий на 31% менше

Що вийшло

Рівень став відкриватися швидше, пам'ять перестала зростати на довгих сесіях, а просідання кадрів на пікових сценах зникли — гра тримає рівний ритм на пристроях середнього класу.

Окремий ефект: художники тепер збирають атласи за зрозумілим правилом, і нові об'єкти не тягнуть за собою старі проблеми.

Інструменти упаковки та контролю ваги графики ми підбираємо під рушій проєкту — тут допоміг TexturePacker у зв'язці з профілювальником рушія. Опишіть своє завдання — повернемося з оцінкою та планом робіт.

Сумніви щодо сумісності, міграції та відкату — розбираємо

Перед стартом замовники зазвичай ставлять один і той самий набір питань: чи стануть нові 2D спрайти в поточний проєкт, чи не зламає міграція графіки вже випущені збірки і що буде, якщо арт не приживеться. Відповідаємо по суті.

Що якщо спрайти не збігаються за форматом з поточним конвеєром? Сумісність спрайтів перевіряємо на вході: звіряємо сітку атласу, щільність пікселів, порядок шарів і точки прив'язки анімації з тим, що вже використовує проєкт.

Якщо рушій очікує інший формат — конвертуємо на етапі підготовки, а не в момент інтеграції, тому збірка не ламається.

Як проходить міграція графіки без простою? Атласи збираються паралельно з робочою гілкою, старі залишаються на місці до приймання. Перемикання йде через підміну ресурсів, а не через переписування коду відмальовування, — це знижує ризик регресій в анімаціях і ефектах.

Чи можна відкотити зміни? Так. Кожен набір спрайтів версіонується, відкат змін — це повернення попереднього атласу однією операцією. Ми тримаємо історію так, щоб попередній реліз залишався відтворюваним.

Як організовано доступи до проєкту і що з передачею документації?

Доступи до проєкту видаються за ролями з мінімально потрібними правами — окремо на репозиторій, окремо на сховище ресурсів. Після завершення ви отримуєте передачу документації: структуру атласів, правила іменування, вимоги до експорту та інструкцію зі збірки. Доступи закриваються за вашим запитом.

На руки після здачі ви отримуєте:

  • вихідники спрайтів у редагованому форматі з шарами;
  • зібрані атласи та карти координат під цільові роздільності;
  • налаштовані правила експорту та скрипти збірки;
  • схему сумісності з поточним конвеєром проєкту;
  • регламент версіонування та порядок відкату змін;
  • інструкцію з додавання нових спрайтів без нашої команди;
  • матрицю доступів та порядок їх передачі.

Опишіть вашу задачу та поточний конвеєр — повернемося з оцінкою та планом робіт.

Терміни створення та оптимізації 2D спрайтів за етапами

Терміни залежать не від кількості зображень, а від числа унікальних станів: персонаж із вісьмома анімаціями та чотирма напрямками — це вже кілька десятків спрайтів, і кожен проходить один і той самий конвеєр.

Нижче — орієнтовний час за етапами для типового набору середньої мобільної гри. Межі наведено без прив'язки до календаря: вони зсуваються від обсягу партії та того, наскільки готові вихідні матеріали.

Найдовше триває чистове відмалювання — воно лінійно зростає від числа кадрів, тоді як решта етапів майже не залежать від обсягу партії. Тому великий набір розбиваємо на хвилі: перша закриває ключових персонажів та інтерфейс, далі йдуть другорядні об'єкти. Так гра отримує робочий візуал раніше, а правки зі стилю не зачіпають уже зібрані атласи.

Паралельно з відмалюванням іде підготовка до складання: заздалегідь визначаємо сітку атласу та формат зберігання, щоб на фінальному кроці не перерозмічати готові кадри.

Це економить кілька днів на етапі оптимізації та знімає ризик, що графіка не влізе в пам'ять на слабких пристроях.

Щоб повернутися з оцінкою та планом, опишіть задачу: жанр, список персонажів і об'єктів, потрібні анімації та цільові пристрої. За цими даними ми зберемо графік робіт із реальними термінами під ваш обсяг.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714